XML Sitemap Generator: Build a Clean Sitemap
Build a valid XML sitemap from your URLs with protocol checks, duplicate cleanup, lastmod dates and optional changefreq. Nothing is crawled or uploaded.
An XML sitemap generator turns a list of URLs into a valid sitemap.xml file. Paste one full URL per line, choose how protocol and dates should be handled, and copy the generated XML. The tool cleans up duplicates and tracking parameters, reports invalid lines, and tells you how many URLs made it into the file.
A sitemap is a hint, not a ranking factor. Its job is to help crawlers discover URLs and understand when they last changed. That makes accuracy more important than size: a sitemap full of redirects, 404s and noindex pages wastes crawl attention and erodes trust in the file.
What the generator does
- Reads one URL per line. Blank lines and lines starting with
#are ignored, so you can comment a list. - Adds a scheme when the input looks like a host.
example.com/pagebecomeshttps://example.com/page. A line that does not look like a host is reported instead of guessed. - Normalises the protocol. Force https, force http, or leave each line exactly as typed.
- Strips tracking parameters.
utm_*,fbclid,gclid,mc_cid,ref,_gaand similar parameters are removed, because they identify a click rather than a page. - Removes a trailing slash on non-root paths.
/page/and/pagebecome one entry instead of two. - De-duplicates. Lines that resolve to the same URL after normalisation are merged, and the duplicate is reported with its line number.
- Adds
lastmod. A per-line?lastmod=YYYY-MM-DDvalue is used when present; otherwise the fallback date applies. - Optionally adds
changefreqandpriority. Both are accepted by the protocol and ignored by Google.
The output is a UTF-8 XML document with the standard urlset namespace. It is not uploaded or written anywhere; you copy it into a file.
How to generate a sitemap
- Open the XML sitemap generator.
- Paste your URLs, one per line. Full URLs are safest.
- Choose the protocol policy. Force https is the right choice for almost every site.
- Decide whether to include
lastmod. Keep it on if you have honest dates. - Leave
changefreqandpriorityoff unless a tool in your stack requires them. - Set the fallback last-updated date if you are not supplying per-URL dates.
- Press Run and copy the XML into
public/sitemap.xml, or the equivalent path on your host. - Submit the sitemap URL in Google Search Console and Bing Webmaster Tools.
If you need to give one page a specific date, append ?lastmod=2026-10-23 to its line. The parameter is consumed by the generator and does not appear in the output URL.
Protocol, lastmod and the optional fields
| Setting | What it changes | Recommendation |
|---|---|---|
| Force https | Rewrites every http:// URL to https:// |
Use this when the site redirects to https |
| Force http | Rewrites every https:// URL to http:// |
Only for a site that genuinely runs on http |
| Leave as typed | Keeps each line's scheme | Use when the list deliberately mixes hosts |
| Include lastmod | Adds <lastmod> to each URL |
Keep, with real dates |
| Add changefreq and priority | Adds both tags to each URL | Usually unnecessary; Google ignores them |
| Fallback date | Used when a line has no ?lastmod= |
Set a date you can defend |
lastmod is the only optional field with a practical effect, and even that is only a hint. Google says it ignores dates it cannot verify, so a file that claims every page changed today is less useful than one with a few honest dates.
Common problems and fixes
"None of those lines is a valid absolute http(s) URL." Every line failed the URL check. Look for missing dots in hostnames, spaces inside the URL, or a scheme such as ftp://. A URL with a space must encode it as %20.
Some URLs were skipped. The result lists the line numbers. Usually the line is a bare word (about) rather than a host, or it contains a character the parser cannot accept. Fix those lines and run again.
The sitemap contains a wildcard pattern. A sitemap lists exact URLs, not URL patterns. https://example.com/blog/* is not expanded by this tool and should not be in a sitemap. List the actual pages, or generate the file from your CMS.
Two URLs became one. Tracking parameters were stripped and duplicates merged. That is usually correct: ?utm_source=newsletter is the same page. If the parameter genuinely changes the content, remove it from the tracking list only by editing the URL, because the tool treats those names as tracking by design.
lastmod is the same for every URL. You left the fallback date in place. Add per-line ?lastmod= values if the dates differ, or accept a single date for a bulk update.
A URL in the sitemap returns a 404. The tool does not crawl your site, so it cannot know. Check the list in Search Console, or use a crawler, before submitting. Only list pages that return 200.
A noindex page is in the sitemap. That is a contradiction. Remove the page from the sitemap or remove the noindex directive. Check the page's tags with the meta tag analyzer.
The file is too large. A sitemap may hold at most 50,000 URLs and must stay under 50 MB uncompressed. This tool accepts up to 5,000 pasted lines, which is comfortably below the protocol limit. For larger sites, generate a sitemap index and split the URLs.
Tips for a sitemap that stays useful
- List only canonical URLs. If a page is reachable in several forms, choose one with the canonical tag builder and list only that form.
- Exclude redirects, 404s and private pages. A sitemap is a list of destinations, not a wish list.
- Keep the file current. Add new URLs when you publish, and remove deleted ones. An automated generator from your CMS is better than a hand-maintained list at scale.
- Do not rely on
priority. Google explicitly ignores it. If you want a page to rank, improve the page. - Submit once, then let the sitemap do its job. Resubmitting the same file repeatedly does not speed up indexing.
- Reference the sitemap in robots.txt. The robots.txt generator adds the
Sitemap:line for you.
How the sitemap fits with robots.txt and canonicals
These files answer different questions:
- robots.txt says what crawlers may fetch.
- A sitemap says which URLs you want discovered.
- A canonical tag says which URL is the preferred version when duplicates exist.
A common mistake is blocking a section in robots.txt and then listing those same URLs in the sitemap. Pick one intention: either the pages should be crawled and indexed, or they should not. If they should not be indexed, a noindex tag is usually the right tool, and the page must remain crawlable for the crawler to see it.
Frequently asked questions
Is the XML sitemap generator free?
Yes. There is no account and no charge.
Does it crawl my site?
No. It builds XML from the URLs you paste. It does not fetch pages, check status codes or discover links. You are responsible for listing live, canonical URLs.
What is the maximum number of URLs?
The protocol allows 50,000 URLs and 50 MB uncompressed per sitemap file. This tool accepts up to 5,000 pasted lines to keep the page responsive.
Does Google use changefreq and priority?
No. Google ignores both. They are valid in the sitemap protocol and other tools may read them, but they do not affect Google ranking or crawl scheduling.
Should the sitemap include every page?
No. Include canonical, indexable pages that return 200. Leave out redirects, errors, noindex pages, and URLs you do not want discovered.
Where do I put the sitemap file?
At the site root, normally public/sitemap.xml in a Laravel project, so it is reachable at https://yourdomain.com/sitemap.xml. Then add the full URL to robots.txt and submit it in Search Console.
Bottom line
A sitemap is only as good as the list behind it. Generate the XML from a clean list of canonical, indexable URLs, keep the dates honest, and skip the fields search engines ignore. Start with the XML sitemap generator, settle duplicate URLs with the canonical tag builder, and point to the file from the robots.txt generator.
Related posts
View allCanonical Tag Builder: Fix Duplicate URLs
Build a rel=canonical tag, see every URL variant that reaches the same page, and catch http, www, trailing-slash and tracking-parameter conflicts.
Keyword Density Checker: What the Numbers Mean
Check keyword and phrase density in any text, see over-use warnings, and tune stop words and phrase length. Runs in your browser, nothing uploaded.
Turn Pasted Text into Markdown Tables and FAQ Schema
Paste tab-separated rows or Q:/A: pairs and get a clean Markdown table plus valid FAQPage JSON-LD. Escapes pipes, pads cells and explains limits.
Comments (0)
Be the first to share feedback on this post.