Sitemap.xml Generator

Paste a list of URLs — one per line — and get a valid sitemap.xml back. Add per-row lastmod, changefreq, and priority as columns after the URL (separated by TAB, two or more spaces, or |). Lints bad URLs, unknown changefreq values, out-of-range priorities, and duplicate <loc>s. Everything stays in your browser.

Columns separator: TAB, two-or-more spaces, or |. Columns may be left empty. Lines starting with # are treated as comments.

Lint

How the columns work & sitemap limits
  • URL — the only required column. Must be a fully-qualified http or https URL. Relative paths are rejected.
  • lastmod — ISO 8601 date (2026-06-23) or date-time (2026-06-23T10:30:00Z). Anything else is dropped with a warning.
  • changefreq — one of always, hourly, daily, weekly, monthly, yearly, never. Unknown values are dropped with a warning.
  • priority — a number in [0.0, 1.0]. Out-of-range values are clamped; non-numeric values are dropped.
  • Each <loc> is checked for duplicates (case-insensitive on the host); both rows still appear in the output, but a warning flags the duplicate.
  • The sitemap protocol limits one file to 50,000 URLs and 50 MiB. If your list exceeds either, split it into multiple sitemaps and reference them from a sitemap index.
  • XML special characters in URLs (&, <, >, ", ') are escaped. The XML declaration and the xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" namespace are always emitted.
  • Nothing leaves the browser. The list you paste never gets uploaded.