Start and end values are included in Bulk URL Generator whenever the step lands exactly on them, and the generator stops safely before passing the end when the range does not divide evenly. The tool treats start and end as inclusive bounds for any arithmetic sequence built from a numeric placeholder. A simple range such as start 1, end 5 and step 1 produces 1, 2, 3, 4 and 5 because every value is reachable in one step. When the range cannot be evenly divided, the last value is the one just before the sequence would cross the end. This predictable behaviour makes pattern lists reproducible, which matters for paginated paths, numbered assets and any other place where an off-by-one URL silently breaks a sitemap, a redirect or a test fixture. The sequence is calculated locally in the browser and validated as an absolute HTTP or HTTPS URL before being added to the list, so each generated line is a syntactically valid web address ready to copy or download.

are the start and end values included when using bulk url generator
Are Start and End Values Included in Bulk URL Generator?

How Inclusive Bounds Work in a Numbered URL Template

A numeric URL template uses the literal token {n} as a placeholder. The generator replaces {n} with each value in an arithmetic sequence computed from your start, end and step. Both start and end behave as inclusive bounds in the mathematical sense: every value the step visits between them is emitted, including the boundary values themselves, provided the step actually reaches them.

Inclusive bounds mean that start 1, end 3 and step 1 produces three URLs ending in 1, 2 and 3. There is no off-by-one trimming or hidden skip. When the range is evenly divisible by the step, the end value appears exactly once. When the range is not evenly divisible, the generator deliberately stops before it would cross the end, so the final value is always the last reachable integer that still satisfies the sequence rule.

This single rule governs every output, ascending or descending. It removes ambiguity in downstream tooling because there is no need to wonder whether the list contains a stray value just past your stated end. The list always terminates exactly where the arithmetic says it should, and re-running the same template and settings always reproduces the same final URL.

Generate URLs With Correct Start and End Values

Follow this sequence to make sure both your first and last values land in the output the way you expect.

  1. Open the Bulk URL Generator in your browser.
  2. Enter an absolute HTTP or HTTPS template containing the literal {n} token, for example https://example.com/page-{n}.
  3. Set the inclusive start and end values to match the exact first and last numbers you want in the list.
  4. Choose a step that moves toward the end. Use a positive step for ascending ranges and a negative step for descending ranges.
  5. If your identifiers need a fixed width, set the optional zero padding between 0 and 12 digits.
  6. Generate a short sample, then check that the first and last URLs match the expected first and last values.
  7. Copy or download the validated list once the sample confirms the bounds, direction and padding.

Non-Divisible Ranges and the Last Value Before the End

Non-divisible ranges are where inclusive bounds can feel surprising. A range from 1 to 6 with step 2 yields 1, 3 and 5. The end value 6 is not included because adding 2 to 5 gives 7, which would pass the end. The generator stops at 5 rather than inventing 6 or duplicating an off-pattern value.

This behaviour makes the list predictable and reproducible. Anyone re-running the same template, start, end, step and padding settings will receive the exact same output, down to the final URL. For SEO work that matters: a sitemap entry, a redirect rule or a test fixture built from a known list will not silently include an unexpected number just because the original author miscounted.

The same rule protects descending sequences. A range from 10 to 4 with step -2 produces 10, 8, 6 and 4. The end value 4 is reached because the step lands on it. If the range were 10 to 3 with step -2, the result would be 10, 8, 6 and 4, with 3 excluded for the same reason 6 was excluded in the ascending example.

Scenario Start End Step Output Is end included?
Ascending, end reached 1 5 1 1, 2, 3, 4, 5 Yes
Ascending, non-divisible 1 6 2 1, 3, 5 No (would pass)
Descending, end reached 10 4 -2 10, 8, 6, 4 Yes
Descending, non-divisible 10 3 -2 10, 8, 6, 4 No (would pass)
Wrong direction 1 10 -1 Operation fails visibly N/A

Read this table as the official behaviour for inclusive bounds. The "Is end included" column reflects whether the step lands exactly on the end value; the generator never rounds up or down to force the end to appear.

Descending Sequences and Direction Control

Descending sequences rely on a negative step. Start 10, end 4 and step -2 yields 10, 8, 6 and 4 because each subtraction lands on the next value and the final step arrives exactly at the end. The minus sign is preserved in the output and appears before any zero padding, so negative sequence values keep their sign throughout.

A positive step cannot move toward a lower end, and a negative step cannot move toward a higher end. Direction mistakes fail visibly rather than returning an empty list or, worse, a list that contains nonsense values. The validation runs against the WHATWG URL Standard so every substituted value is parsed as an absolute web address with only HTTP and HTTPS schemes accepted.

Inspecting the First and Last URL Before Export

Generating a short sample is the cheapest way to confirm inclusive bounds, direction and padding before you commit to a large list. The first URL tells you the template is correct, the placeholder is in the right place and the start value is what you typed. The last URL tells you whether the sequence actually reached the end or stopped just before it, which is the only place the inclusive bound surprises new users. For broader pattern coverage and the pitfalls that tend to surface when ranges do not behave as expected, the tips and common mistakes walkthrough lays out the same checks in checklist form.

Padded values are easy to verify visually. A padding of 3 turns 5 into 005 and -5 into -005, while leaving larger values such as 12345 untouched. If your output shows page-5 instead of page-005, you forgot to enable padding. Either way, the visual inspection takes seconds and prevents a flawed list from reaching a sitemap or test script.

Practical Use Cases for Inclusive URL Ranges

Numbered URL templates are common enough that inclusive bounds deserve a deliberate check. Paginated routes such as /blog/page-{n} benefit from a sequence where page-1 and the final page both appear; the generator includes both as long as the step reaches them. Numbered assets, year-based archive pages and ID ranges for import lists all share the same arithmetic and the same expectation that the first and last identifiers appear in the output.

Test fixtures rely on inclusive bounds because a missing endpoint shifts every assertion downstream. If your fixture set is supposed to contain values 1 through 10 and the generator silently trims the last value, your test no longer covers the full range. Confirming the first and last URL after a sample run is the simplest defence against that kind of silent truncation.

For SEO work specifically, the generator creates plain URL lines. It does not produce XML, lastmod values or multiple sitemap indexes, so the output is suitable as a building block for a discovery file or a redirect map once you have reviewed the list. Remember also that a syntactically valid URL may still return 404, redirect or require authentication, so use a controlled checker when live status matters rather than assuming the existence of every generated address.

Limits Worth Knowing Before You Export

Output is capped at 10,000 URLs and the template at 4,000 characters. These limits keep the page responsive and prevent a reversed or extreme range from allocating an unexpectedly large list. If your project needs more than 10,000 URLs, split the template into overlapping or sequential batches and merge the validated outputs after generation. Also note that the tool does not request, crawl, open or test any generated URL; generation proves the pattern calculation and URL grammar only, not the live status of each address.

If you're weighing options, Extract URLs From a Sitemap: The Parsing Step Explained covers this in detail.