Hreflang XML sitemap generator
Build a sitemap with xhtml:link hreflang annotations for localized pages, with every alternate listed on every URL as Google's documentation requires.
Paste raw sitemap XML for real parse errors, a namespace and structure check, and the 50,000 URL and 50MB limits from the sitemaps.org protocol.
Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.
The validator runs two passes. The first parses the pasted text with the browser’s native
DOMParser, using the text/xml MIME type; if the markup is malformed, DOMParser inserts a
parsererror node into the result instead of throwing, so the tool detects that node and shows the
message it contains. The second pass only runs on well-formed XML: it confirms the root element is
urlset declared in the sitemap 0.9 namespace, then walks every url entry checking for an
absolute loc, a valid W3C Datetime lastmod if present, a changefreq value from the seven the
protocol defines (always, hourly, daily, weekly, monthly, yearly, never), and a priority between
0.0 and 1.0 if present.
A single sitemap file may list no more than 50,000 URLs and must be no larger than 50MB
(52,428,800 bytes) uncompressed; both figures come directly from the sitemaps.org protocol page and
are repeated in Google’s own sitemap documentation. A site with more URLs than that needs multiple
sitemap files listed in a sitemap index instead of one oversized file. lastmod, changefreq, and
priority are all optional per the protocol, and Google states plainly that it ignores
changefreq and priority entirely when crawling, using lastmod only when it can verify the date
is accurate.
Structural validity is not the same as crawlability. This tool never fetches the URLs it finds, so
it cannot confirm any loc actually resolves, returns a successful status, or points at a page that
is eligible for indexing. It also cannot tell you whether a page on the live site is missing from
the sitemap altogether, since it only ever sees what was pasted in.
Fix a parse error before reading anything else; a broken document means the structural checks never
run. Once the XML is well formed, treat a missing loc as something to fix immediately, since a
url entry without one is not a URL at all, and treat a bad lastmod, changefreq, or priority
as a smaller cleanup rather than a blocker, since none of the three is required by the protocol.
Confirm the sitemap is actually being read by submitting it through your search engine’s own
webmaster tools, which check reachability and indexing eligibility this tool does not attempt to
replicate.
No. It only parses XML you paste into the textarea, entirely in your browser. This avoids a CORS-dependent network fetch and means nothing you paste is sent anywhere, but it also means you have to copy the file's contents yourself.
The sitemap 0.9 namespace is a fixed identifier string defined by the protocol, not a link the browser visits. Sitemaps.org has never revised it, so a sitemap using any other string for that value is not a valid sitemap regardless of how the rest of the file looks.
It means the file is well formed and structurally correct. It does not confirm that the listed URLs exist, return a 200 status, or are eligible for indexing, and it cannot check pages missing from the file entirely.
Build a sitemap with xhtml:link hreflang annotations for localized pages, with every alternate listed on every URL as Google's documentation requires.
Paste status codes and see how Google's crawlers document handling each one, plus a redirect hop count against Google's 10-hop default.
Audit the links in pasted HTML against Google's rel qualifiers: sponsored for paid links, ugc for user content and nofollow when neither applies.
Validate robots meta tags and X-Robots-Tag headers against the rules Google documents, and see the combined result for Googlebot.