XML Sitemap Generator
Build XML sitemaps from URL lists or CSV, with validated metadata, size-based splitting and a sitemap index.
Start with the URLs you want indexed
Paste one absolute URL per line, or import UTF-8 CSV. A CSV header must include loc or url; optional columns are lastmod, changefreq and priority, in any order. Quote a URL containing a comma. Blank optional cells inherit the defaults shown above. Unknown columns, inconsistent widths and conflicting metadata for a duplicate URL are errors. Identical normalized URLs with identical metadata collapse to one entry.
loc,lastmod,changefreq,priority https://example.com/guide/,2026-10-25,weekly,0.7
Choose where the files will live
Enter the actual publication URL, such as https://example.com/sitemap.xml. URLs must share that origin, including protocol and port, and be within the publication directory. A sitemap at /docs/sitemap.xml cannot describe a page outside /docs/. Use a simple ASCII .xml filename. URL fragments, credentials and malformed percent escapes are rejected.
With one part, download that XML file. With multiple parts, the first output is the sitemap index; the selector also provides every numbered part. Download and host all files at the listed location. No upload, crawl or search-engine submission happens here.
Metadata should describe real changes
A lastmod value is optional. Use an actual Gregorian date or a timestamp with seconds and an explicit timezone, such as 2026-10-25T12:30:00+08:00. The generator never substitutes the current time. Supported timestamps use hours 00–23, seconds 00–59 and offsets through ±14:00.
Priority is between 0 and 1; changefreq uses the protocol’s named values. These optional values are not ranking scores or guaranteed crawl schedules. Leave them blank when you do not maintain reliable values.
Count and byte limits
A part contains at most 50,000 URLs and 50 MiB of uncompressed UTF-8 XML. Splitting uses the actual escaped XML byte count, so many ampersands can trigger a split before the count limit. The URL-count setting can request smaller parts.
Tool limits: 100,000 input URL records, 200 part files, 64 MiB total output, 20 MiB per uploaded UTF-8 file and 20,971,520 UTF-16 input units. Serialized URLs must be shorter than 2,048 characters. Large previews stop at 200,000 characters; copy and downloads keep the complete selected file. This is a generator, not a live indexability audit.
Questions & answers
Does the generator crawl my website?
No. It only processes the supplied list or CSV on this device. You remain responsible for choosing canonical, published, indexable URLs.
Why are duplicate URLs rejected sometimes?
Identical entries are deduplicated. If the same normalized URL has different metadata, resolve the conflict rather than silently discarding one value.
Do I need to download the numbered files too?
Yes. The index lists those files; it does not contain their page entries. Host the index and every referenced part at the publication location.
Other Languages
References
How we make sure
We check this tool with the automated test suites linked below. Example checks are shown in their original language.
- Verification method
- Inspect generated HTML/headers/XML and check canonical/alternate/sitemap fields, reciprocal links, escaping and duplicates.
- Comparison reference
- Explicit metadata expectations, XML namespaces and fixed language/region registry data.
- Verification scope
- Correct formatting does not guarantee search-engine indexing or ranking.
Test source and cases (select a file to read it)
-
sitemap-tools.test.js
- Sitemap outputs namespaced XML and entity-escapes query strings exactly once
- Sitemap CSV supports quoted commas, BOM, column ordering and per-row metadata with defaults
These checks cover the listed examples and boundaries, not every possible input. Round trips and checks using the same library are not independent verification.