Sitemap generator
Most sitemap generators want to crawl your site, which means waiting, a row limit, and a paywall at 500 pages. If you already have the URL list — from a CMS export, a database query, or a crawl you ran yourself — this turns it into a valid sitemap.xml immediately, with no limit and no upload.
How to use
- Paste your URLs, one per line. Anything that is not an absolute
httporhttpsURL is skipped and counted in the status line. - Pick a lastmod strategy. If your export has real modification dates, put them after a tab on each line and choose From the second column — real dates are worth far more than a blanket one.
- Leave changefreq omitted unless you have a reason. Google has said publicly it ignores it.
- Choose priority: omit it (fine), fixed, or automatic by depth, which gives the home page 1.0 and drops 0.2 per path segment.
- Download sitemap.xml, upload it to your web root, and reference it from
robots.txtwithSitemap: https://example.com/sitemap.xml.
What actually affects crawling
lastmod is the one field that matters. Google uses it to decide whether re-crawling a URL is worthwhile — but only if it is consistently accurate. If it reflects your build date rather than the content's change date, every page looks freshly modified on every deploy, the signal is discarded, and you have lost the one lever the sitemap gave you. Either supply true per-page dates or omit the field.
priority and changefreq are close to inert. Google has confirmed it ignores both. They are still valid XML and some other crawlers read them, so setting them costs nothing — just do not expect a ranking effect. The automatic-by-depth option is there because it produces a plausible gradient if a validator or a client insists on the field.
What belongs in a sitemap: canonical, indexable, 200-status URLs. Not redirects, not noindex pages, not URLs blocked in robots.txt, and not parameter variants of pages already listed — those all waste crawl budget and can trigger "sitemap contains URLs which are blocked" warnings. Strip query strings if your list came from analytics; use the canonical grouper first if you suspect duplicates.
Over 50 000 URLs
Limits: 50 000 URLs and 50 MB uncompressed per file. Both are hard, and both are handled here rather than reported at you.
Paste more than fits and the list is split into as many files as it needs — cut between whole <url> entries, at whichever limit is reached first — and a <sitemapindex> is written listing every part with today's date. Fill in Base URL for the index with the directory the files will live in, so the <loc> in the index is the absolute URL each part will actually be served from; the status line says when that is still missing. Showing switches the output pane between the index and any individual part, and Download gives you all of them, index included, as a single ZIP.
Split at is also useful below the limit: set it to 10 000 and a large site becomes a set of files you can resubmit one at a time, which makes it obvious in Search Console which section has a coverage problem.
FAQ
Can it crawl my site to find the URLs?
No — a browser tab cannot crawl a site it does not have CORS access to. That is the honest limit of a client-side tool. Get the list from your CMS, your framework's route list, a find over your build output, or a desktop crawler, then bring it here.
Do I need a sitemap index?
Only above 50 000 URLs, or when you want separate sitemaps per section or content type. Both cases are handled here: the index is written for you as soon as the list needs more than one file, or as soon as you lower Split at below the row count. Submit the index to Search Console rather than the parts.
Should I gzip it?
You can — sitemap.xml.gz is valid and saves bandwidth on large files. Serving the plain file with gzip transfer encoding gets you the same saving with less to manage.
How do I check an existing sitemap?
Paste it into the sitemap URL lister, which reads it back into a table with stats and flags the common problems.