XML Sitemap Generator

Create a valid XML sitemap from a list of URLs in seconds. Free online tool with lastmod, priority, and changefreq. No signup.

Preparing private browser tool…

Your file will stay on this device.

What an XML sitemap does for a site

An XML sitemap is a file listing the URLs you want search engines to know about. Crawlers find most pages by following links, so a sitemap does not replace internal linking; what it does is cover the cases where linking falls short. Pages reachable only through a search form, sections buried several clicks deep, a new site with no inbound links, and large archives where crawl budget runs out before the tail is reached all benefit from being listed explicitly.

A sitemap is a set of hints, not instructions. Listing a URL does not guarantee it is crawled, and it certainly does not guarantee it is indexed. What it reliably gives you is a report: once submitted in Google Search Console, the Sitemaps view shows how many of the submitted URLs are known, and the Pages report lets you compare submitted against indexed, which is usually the fastest way to spot that a whole section is being skipped.

The format itself is small. A urlset element wraps one url element per page, each containing a loc with the full address and, optionally, lastmod, changefreq and priority. This generator writes exactly that structure against the sitemaps.org 0.9 schema, which is the namespace Google, Bing and the other major crawlers read.

How to generate your sitemap.xml

Paste your URLs into the textarea, one per line. Leading and trailing whitespace is stripped from each line and blank lines are ignored, so a list copied out of a spreadsheet or a crawler export can go straight in. The counter under the box shows how many URLs were recognised, which is worth glancing at, since a mismatch against what you pasted usually means stray lines or an accidental wrapped column.

Three fields apply to the whole list. Last modified defaults to today's date and writes a lastmod element in YYYY-MM-DD form. Change frequency is a dropdown with the seven values the specification allows: always, hourly, daily, weekly, monthly, yearly and never, with weekly as the default. Priority is a number between 0 and 1 in steps of 0.1, defaulting to 0.8. The XML on the right rebuilds on every keystroke.

When the output looks right, use Copy to put the XML on your clipboard or Download .xml to save it as sitemap.xml. Ampersands, angle brackets, quotes and apostrophes in your URLs are escaped as they are written, so a URL containing a query string with & does not break the file. Generation happens entirely in the browser, so the URL list of an unreleased site or a staging environment never leaves your machine.

A worked example of the generated XML

With three URLs, a last modified date of 2026-09-16, a change frequency of weekly and a priority of 0.8, the generator produces this file. The opening declaration and namespace are fixed; the url blocks repeat once per line you entered.

Line one is <?xml version="1.0" encoding="UTF-8"?> and line two is <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">. Then comes one block per URL: <url> on its own line, followed by <loc>https://example.com/</loc>, <lastmod>2026-09-16</lastmod>, <changefreq>weekly</changefreq> and <priority>0.8</priority> each on a line of their own, then </url>. The same four elements repeat for https://example.com/about and for https://example.com/contact, and the file closes with </urlset>. In the output panel the url elements are indented two spaces and their children four.

A URL with a query string shows the escaping at work: https://example.com/search?q=shoes&sort=price is written into the loc element as https://example.com/search?q=shoes&amp;sort=price. That is required by XML, and a file with a bare ampersand is rejected as malformed rather than merely ignored, so it is the single most common reason a hand written sitemap fails validation.

Where to put the file and how to submit it

Upload sitemap.xml to the root of your domain so it resolves at https://yourdomain.com/sitemap.xml. The location is not arbitrary: a sitemap can only list URLs at or below its own directory, so a file at the root can cover the whole site while one at /files/sitemap.xml can only legitimately cover /files/. Serve it over the same protocol and hostname your pages use, and make sure it returns a 200 status rather than a redirect.

Add a line to robots.txt reading Sitemap: https://yourdomain.com/sitemap.xml. Every major crawler reads that line, including ones you never sign up with, and it is the only submission step that is not per search engine. Then add the file in Google Search Console under Sitemaps and in Bing Webmaster Tools under Sitemaps, which is what gives you the per sitemap coverage reporting.

List canonical URLs only, and keep them consistent with the canonical tags on the pages themselves. A sitemap listing both the www and non www form, or both http and https, sends a mixed signal about which version you want indexed. Leave out pages that are blocked by robots.txt, marked noindex, redirected, or returning errors. A sitemap full of URLs a crawler is told elsewhere to ignore wastes the crawl it prompts and clutters the coverage report you are trying to read.

Limits of this generator

The three settings apply to every URL in the list. There is no per URL lastmod, changefreq or priority, so if your homepage genuinely changes daily and your archive pages change yearly, generate them as two batches and combine the url blocks by hand, or edit the downloaded file. Priority in particular is worth little effort: Google has said publicly that it ignores the value, so leaving it at the default is a reasonable choice.

URLs are copied through as typed with no validation beyond XML escaping. A relative path, a typo in the hostname or a trailing space inside the line will be written into the file unchanged, and a relative path is invalid in a sitemap because loc must be a full absolute URL. Check the first few entries in the output panel before you download.

The generator writes a plain urlset with no extensions. There is no support for image, video or news sitemaps, no hreflang alternate links for multilingual sites, and no sitemap index file for stitching several sitemaps together. Output is uncompressed XML rather than gzip. For a very large site, or one that needs those extensions, a sitemap generated by your CMS or build process will serve better; this tool is aimed at lists you assemble by hand.

Frequently asked questions

Does the tool check that my URLs are valid?
No. Lines are trimmed and blank ones dropped, but whatever remains is written into the loc element as typed, with only XML escaping applied. A relative path or a mistyped hostname passes through unchanged, and a relative path makes the sitemap invalid because loc has to be an absolute URL.
How are query strings and ampersands handled?
They are escaped automatically. An ampersand becomes &amp;, angle brackets become &lt; and &gt;, and quotes and apostrophes are escaped too. A raw ampersand would make the XML malformed, so this is applied to every URL as the file is written.
Should I add the sitemap to robots.txt as well as Search Console?
Yes, and the robots.txt line is the more general of the two. A line reading Sitemap: https://yourdomain.com/sitemap.xml is read by every major crawler, while Search Console and Bing Webmaster Tools submission adds per sitemap coverage reporting for those two engines.
Which URLs should I leave out?
Anything blocked by robots.txt, marked noindex, redirecting, returning an error, or duplicating a canonical version you already list. Listing both the www and non www form of a page, or both http and https, sends a mixed signal about which one you want indexed.
Can I generate an image, video or multilingual sitemap?
No. The output is a plain urlset against the sitemaps.org 0.9 schema with loc, lastmod, changefreq and priority only. Image, video and news extensions and hreflang alternate links are not written, and there is no sitemap index output.
Does priority actually affect rankings?
No. It is a hint about relative importance within your own site and has no bearing on ranking against other sites. Google has stated that it ignores the value, so the default of 0.8 across the list is fine to leave alone.