A sitemap.xml is the standard XML file that search engines read to discover the pages you want indexed, and you can get one by pasting a reviewed list of absolute page URLs into the XML Sitemap Generator, choosing any shared optional metadata, and downloading the resulting UTF-8 file. The file is a plain <urlset> document that uses the official http://www.sitemaps.org/schemas/sitemap/0.9 namespace and contains a <url> entry for every distinct page. Each <url> entry holds a <loc> with the absolute address of one page, and may include <lastmod>, <changefreq>, and <priority> tags. The Sitemap protocol requires that the document itself be UTF-8 encoded and that every location be an absolute URL with fewer than 2,048 characters, and the generator enforces both rules on your behalf.
The generator does not crawl your site. It is a list-to-XML utility: you supply a list of URLs and it returns a finished sitemap.xml. Every step, from line splitting and URL normalization to deduplication, XML escaping, byte measurement, and the final download, runs in the current browser tab. Nothing is uploaded, so the URL list and the generated XML never leave your machine. That design fits the case where you already know which pages belong in the sitemap, because the file is only as accurate as the URLs you hand it.

What the generator produces — and what it deliberately leaves out
The tool accepts one URL per line, validates each line, normalizes accepted URLs through the browser's WHATWG URL parser, removes duplicates while preserving first-seen order, escapes the five XML entities that matter for sitemap locations, and emits a UTF-8 sitemap.xml with a single download link. Editing the URL list or any option immediately revokes the previous download and clears the existing XML, so stale output never leaks into a saved file.
What the tool does not do is just as important. It does not visit pages, follow links, inspect canonical tags, read modification dates, discover redirects, verify HTTP status codes, or determine indexability. It does not submit the result to a search engine, and it does not create sitemap indexes, image, video, or news extensions, hreflang markup, gzip files, or robots.txt rules. If you need any of those, you are looking at a different tool or a different workflow.
URL list rules the generator enforces
Every nonblank line in the editor must be an absolute HTTP or HTTPS URL that points at the host the resulting file will represent. Bare domains such as example.com, relative paths like /about, FTP addresses, raw whitespace, control characters, malformed percent escapes, embedded credentials, and fragments are all rejected on the failing line rather than being silently trimmed or skipped. A whitespace-only line is ignored so you can visually group URLs with blank separators. Leading or trailing whitespace on a nonblank line is treated as an error, so a stray space at the end of a pasted line will fail the whole generation.
One generated file is restricted to a single serialized host, including any non-default port. That follows the Sitemap protocol's single-host rule, and it is what makes HTTP and HTTPS URLs for the same host legal in one file while a mix of example.com and example.com:8443 is not. Credentials are rejected because a username or password should not be published in a public sitemap, and fragments are rejected because the HTTP request that fetches a page does not carry the fragment, so two #section variants would still be the same fetched resource.
Optional metadata you can apply
The generator treats lastmod, changefreq, and priority as optional. If you leave them blank, the corresponding tag is omitted from every entry and the output is a loc-only XML file. If you fill one in, the same value is applied to every URL in the file, so these fields only make sense when a single shared value is truthful for the whole list.
| Field | Accepted format | Notes |
|---|---|---|
| lastmod | YYYY-MM-DD or full date-time with seconds and Z or a UTC offset | Real Gregorian date; calendar, leap year, and timezone limits are checked. Leading or trailing whitespace is rejected. |
| changefreq | One of: always, hourly, daily, weekly, monthly, yearly, never | Protocol hint, not a crawl command. |
| priority | Decimal from 0.0 to 1.0 | Protocol hint, not a ranking guarantee. |
Use lastmod only when a single date is the truthful significant modification time for every page in the file. Per-URL dates are not supported, so the right move when dates differ is to split the list into several smaller files or to add the metadata after generation. Invalid optional metadata fails the whole generation; it is not silently dropped, and a malformed value never produces a partially correct file.
How to get a sitemap.xml from a reviewed URL list
- Curate the URL list. Pull the page addresses you actually want indexed from your CMS export, an analytics report, an existing sitemap, or a manual review, and resolve relative paths, redirects, and duplicates before you paste.
- Paste one absolute URL per line into the editor. Use a single host, including any non-default port, for the file. Add blank lines for visual grouping; whitespace-only lines are ignored.
- Decide whether to add optional metadata. Leave the optional fields blank for a loc-only file, or fill in one truthful shared lastmod, changefreq, or priority that applies to every entry.
- Generate the XML. The tool splits LF, CRLF, or CR line endings, validates each line, normalizes accepted URLs, deduplicates them in first-seen order, escapes XML entities, and measures the final UTF-8 byte count.
- Review the finished XML and the count summary. Confirm the line count, the duplicate count, and the byte size, and read through the <loc> values to confirm they are the URLs you intended.
- Download sitemap.xml from the temporary download link. The link is owned by the current result; editing any field revokes it, and generating again revokes the previous link before the new one is created.
Tool limits versus protocol maxima
The Sitemap protocol permits up to 50,000 URLs and up to 52,428,800 uncompressed bytes per file, and the generator is intentionally lower because the entire pipeline runs in a single browser tab. Every limit is all-or-nothing: the 10,000th unique URL is accepted and the next one fails, the exact 10,485,760-byte boundary is accepted and one additional byte is rejected, and duplicate lines do not consume output slots.
| Bound | Protocol maximum | Generator limit | Behavior at the boundary |
|---|---|---|---|
| Unique URLs per file | 50,000 | 10,000 | 10,000th accepted, next unique URL fails. |
| File size (uncompressed) | 52,428,800 bytes | 10,485,760 bytes (10 MiB) | Exact boundary accepted, one byte more rejected. |
| Length of one serialized location | Fewer than 2,048 characters | At most 2,047 characters | Over-length URLs fail before XML is built. |
| Input text size | Not specified | 5,000,000 UTF-16 code units | Bounds parsing and preview memory. |
These lower caps bound parsing, preview, Blob, and browser memory without pretending to be protocol maxima. There is no silent truncation, no shortened XML, no ellipsis, and no partial download. A file that hits a limit simply fails to generate, and you respond by splitting the list or removing entries.
What to verify before you publish
The XML the generator returns is only as accurate as the URLs and metadata you supplied, so the review step is yours. Walk the final list for redirects you forgot to canonicalize, near-duplicate pages that should consolidate, blocked pages that should not be indexed, private pages such as staging or internal search results, and any important page that is missing because you trimmed the source list too aggressively. If you added a shared lastmod, confirm the date really is the most recent significant modification for every page in the file, because search engines treat an inflated lastmod as a signal of stale advice.
Decide where the file will live before you publish. The Sitemap protocol requires the sitemap to be hosted on the host it represents, so the sitemap.xml you generate for example.com must be served from example.com. The generator cannot verify that, and it cannot verify cross-site submission permissions, so a file that represents one host cannot be hosted on a different host without breaking the protocol. After publication, submit the URL of the file in the search engine's preferred channel rather than expecting the generator to do that for you.
How the file is assembled under the hood
The implementation is deliberately narrow. Input is split on LF, CRLF, or CR, and only whitespace-only lines are ignored. Every nonblank line is checked for absolute form, allowed scheme, embedded credentials, fragments, raw control characters, malformed percent escapes, and stray leading or trailing whitespace. Accepted lines are passed through the browser's URL parser, which lowercases the host, removes default ports, adds the root slash when required, and percent-encodes non-ASCII components while preserving existing valid percent escapes. The serialized href is deduplicated in first-seen order, and the count of duplicates is surfaced in the result summary.
XML output begins with a UTF-8 declaration followed by a <urlset> element using the official sitemaps.org namespace. Each entry contains a <url> and a <loc> whose text is XML-escaped after URL normalization. Ampersand, apostrophe, quotation mark, greater-than, and less-than characters are converted to XML entities, with ampersand replaced first so the generated entities are not escaped twice. The final file is measured with a UTF-8 TextEncoder, the exact 10,485,760-byte boundary is accepted, one additional byte is rejected, and the resulting Blob is exposed through a temporary Object URL that is revoked the moment you edit any input or generate again.
For a deeper walkthrough of finding URLs to put in the list, the sitemap URL discovery guide covers where to look in your own browser before you paste. Google's sitemap build and submit guide is the authoritative reference for what search engines expect from the file once it is live.