Sitemap.xml Validator & Inspector
Validates a `<urlset>` sitemap or a `<sitemapindex>` against the Sitemaps 0.9 protocol used by Google, Bing and every other major search engine. Detects the root element automatically, then checks: URL or sitemap count vs the 50 000 per-file limit; uncompressed size vs the 50 MB limit; absolute http/https URLs only; `<loc>` length ≤ 2048 chars; `changefreq` is one of always / hourly / daily / weekly / monthly / yearly / never; `priority` is in [0.0, 1.0]; `lastmod` is a valid W3C / ISO 8601 datetime and not in the future; and warns about duplicate `<loc>` values. For `<urlset>` files it also breaks down the distribution of changefreq, priority buckets and hostname so you can spot mistakes (e.g. every URL set to priority 1.0, which Google explicitly tells you not to do, or a sitemap accidentally mixing two different hostnames).
Nothing yet — paste, drop or load a sitemap.xml to start.
Validates against Sitemaps 0.9 (sitemaps.org). Limits: 50 000 URLs per sitemap, 50 MB uncompressed, 2048 chars per <loc>. Index files may contain up to 50 000 child sitemaps. All checks run locally — no URLs are fetched.
How to use
- Paste the contents of your sitemap.xml into the box, or load it from disk via the Load file button.
- If you don't have one to hand, click Paste sample to load a tiny example.
- Read the status badge: errors block search engines from parsing the sitemap; warnings are valid-but-suspicious cases.
- Look at the changefreq / priority / host histograms below to spot patterns (e.g. all priorities at 1.0 — meaningless; a mixed host — usually a mistake).
Frequently asked questions
- Does this actually fetch URLs in my sitemap?
- No — everything happens in your browser, no network calls. The validator only parses the XML you provide and checks it against the Sitemaps 0.9 spec. To verify that the URLs themselves are reachable, use a separate crawler or `curl -I`.
- Why does Google say not to set every priority to 1.0?
- Because `priority` is relative within your own sitemap, not absolute. If every URL is 1.0, it's the same as if none had priority at all — the field carries zero information. Google's documentation explicitly says it ignores sitemaps where every priority is the same. Use a meaningful range (homepage 1.0, categories 0.8, articles 0.6, archive 0.3 — or just leave priority out).
- What's a sitemap index, and when do I need one?
- A `<sitemapindex>` is a sitemap-of-sitemaps. You need it when a single sitemap would exceed 50 000 URLs or 50 MB uncompressed. The index lists child sitemaps by URL; each child is a regular `<urlset>`. Google supports up to 50 000 child sitemaps per index, and indexes can be nested.
- What lastmod formats are accepted?
- Per the spec, W3C Datetime — either a date (`2026-06-04`) or a full ISO 8601 timestamp with offset (`2026-06-04T12:00:00+00:00`). Anything else is flagged as a warning. `Date.parse` is permissive enough that most common formats validate, but stick to the spec to be safe across all search engines.
Related tools
RSS & Atom Feed Viewer
Paste a feed and read it: entries, dates normalised, podcast enclosures, and the problems that make readers drop or duplicate posts.
robots.txt Tester
Paste a robots.txt and a list of (user-agent, path) pairs to see exactly which line allows or blocks each — with longest-match precedence, wildcards, and the * group fallback.
SSL Certificate Decoder (X.509 / PEM)
Paste a PEM certificate and read it: subject, issuer, expiry, SANs, key, fingerprints and extensions — decoded in your browser.
IP Address Inspector
Type an IPv4 or IPv6 address and see its class, scope (private / public / loopback / link-local), decimal value, binary, reverse-DNS notation, and /32 CIDR.
User Agent Parser
Parse a User-Agent string into browser, engine, OS, device, and CPU. Detects 20+ bots including GPTBot, ClaudeBot, PerplexityBot.
Email Header Analyzer
Paste a raw email header to walk the Received hops in order, see the per-hop delay, and read off the SPF/DKIM/DMARC verdicts.