Skip to main content
CalcChef

Sitemap Generator

Paste one URL per line to get a sitemap.xml: addresses percent-encoded and XML-escaped, duplicates removed, and a lastmod date where you add one after a |. How it works

Use the Sitemap Generator

Add a last-modified date after a | only where you know it, for example https://example.com/about | 2026-05-01. Lines without a date get no lastmod tag.

Google ignores changefreq and priority, so they are left out unless you tick them.

Generated XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
  </url>
  <url>
    <loc>https://example.com/about</loc>
  </url>
  <url>
    <loc>https://example.com/contact</loc>
  </url>
</urlset>

3 URLs (limit 50,000 per sitemap).

Spaces and non-ASCII characters in a URL are percent-encoded, and & < > " ' are escaped for XML. A sitemap is a hint for crawlers: it does not guarantee that a page is crawled or indexed.

About the Sitemap Generator

Paste one URL per line and the sitemap generator writes a sitemap.xml with a <url><loc> block for each address, so the three example lines give 3 URLs. Spaces and accented letters are percent-encoded, & becomes &amp;, duplicates and #fragments are removed, and a date after " | " becomes <lastmod>. sitemaps.org allows 50,000 URLs and 50 MB per sitemap.

What a line becomes

Line<loc><lastmod>
https://example.com/about | 2026-05-01https://example.com/about2026-05-01
https://example.com/about | 2026-05-01T09:30:00+01:00https://example.com/about2026-05-01T09:30:00+01:00
https://example.com/a bhttps://example.com/a%20b(none)
https://example.com/café?q=a&b=1https://example.com/caf%C3%A9?q=a&amp;b=1(none)
https://example.com/a#tophttps://example.com/a(none)
https://example.com/?a=1|2https://example.com/?a=1%7C2(none)

A removed #fragment gets a note. A | inside an address is part of it; only a | with a space on each side starts the date.

Lines the generator refuses

LineMessage
example.com/a"example.com/a" is not an absolute http or https address.
https://example.com/about | 2026-05"2026-05" after the | is not a valid date.
https://example.com/about | 2026-05-01T09:30+01:00"2026-05-01T09:30+01:00" after the | is not a valid date.
https://example.com/about | 2026-02-30"2026-02-30" after the | is not a valid date.
https://user:[email protected]/aThe address contains a user name or password ("user:password@").

The start of each message. The date messages go on to list the formats that are accepted.

Frequently asked questions

How many URLs can one sitemap hold?
50,000 URLs and 50 MB uncompressed, per the sitemaps.org protocol, with each URL shorter than 2,048 characters. Over either limit the generator stops and asks you to split the list into several sitemaps listed in a sitemap index; it does not write the index.
What date format does lastmod need?
YYYY-MM-DD, such as 2026-05-01, or a date and time with seconds and a zone, such as 2026-05-01T09:30:00Z or 2026-05-01T09:30:00+01:00. A year alone, a year and month, a time without seconds and a date that does not exist, such as 2026-02-30, are refused.
Should I add changefreq and priority?
Google says it ignores both, so they are off. Tick them and every URL gets the same value, by default <changefreq>weekly</changefreq> and <priority>0.5</priority>.
Does Google use lastmod?
Only when it is consistently and verifiably accurate, Google says, and sitemaps.org says it should give the date the page last changed, not the date the sitemap was made. Add a date only on lines where you know it; lines without one get no lastmod tag.
Can one sitemap list both www and non-www addresses?
sitemaps.org says all URLs in a sitemap share one host and protocol. The generator still writes them, with the warning "The URLs use more than one host or protocol."

Related Tools

View all tools