Sitemap Validator (sitemaps.org rules + optional URL status)
Pricing
from $0.20 / 1,000 url entry validateds
Sitemap Validator (sitemaps.org rules + optional URL status)
Validates XML sitemaps and sitemap indexes against the sitemaps.org protocol: namespace, 50,000-URL and 50 MB limits, absolute same-host locs, lastmod dates, changefreq and priority. Optionally checks each URL's HTTP status and redirects. Obeys robots.txt.
Pricing
from $0.20 / 1,000 url entry validateds
Rating
0.0
(0)
Developer
WrenTools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
36 minutes ago
Last modified
Categories
Share
Find out whether your XML sitemaps are actually valid before a search engine tells you they are not. Give it a
sitemap, a sitemap index, or just your site (it reads the Sitemap: lines in robots.txt), and it checks every file
and every <url> entry against the sitemaps.org protocol. Optionally it requests each listed URL once and reports
the ones that are broken or redirect.
Broken links in a scheduled job: our Python and Node example checks every page your sitemap lists, writes the problems to a CSV, and exits with 1 when there is any.
For the pages themselves (titles, meta descriptions, headings, image alt text), run Own-Site SEO Audit.
What it checks
Each sitemap file
- Well-formed XML with a
urlsetorsitemapindexroot in thehttp://www.sitemaps.org/schemas/sitemap/0.9namespace - At most 50,000 entries and 50 MB uncompressed;
.gzsitemaps are decompressed with a size guard - An index that lists another index (not allowed by the protocol)
- Fetch failures, and files that robots.txt blocks
Each <url> entry
<loc>present, absolute http(s), at most 2,048 characters, properly escaped, not duplicated<loc>on the same host as the sitemap (cross-host entries are ignored by search engines)<lastmod>in W3C datetime format, and not in the future<changefreq>one of the seven allowed values;<priority>between 0.0 and 1.0- With status checking on: 4xx/5xx answers, network errors and redirects (a sitemap should list final URLs)
Robots.txt is obeyed for every request, and requests are spaced (500 ms by default). Only public internet addresses are fetched: a URL or redirect into a private, loopback or link-local network is refused.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
sitemapUrls | array | - | Sitemap or index URLs. |
siteUrl | string | - | Used when sitemapUrls is empty: robots.txt Sitemap: lines, else /sitemap.xml. |
checkUrlStatus | boolean | false | Request each listed URL once. |
maxUrls | integer | 5000 | Across all files. |
maxSitemapFiles | integer | 50 | Including children of an index. |
requestDelayMs | integer | 500 | Pause between requests. |
Output
Dataset items of two types.
{"type": "sitemap-file", "url": "https://www.example.com/sitemap-pages.xml", "kind": "urlset","httpStatus": 200, "gzipped": false, "sizeBytes": 18234, "entryCount": 120, "entriesWithIssues": 3,"errors": [], "warnings": [], "valid": false}
{"type": "url-entry", "sitemap": "https://www.example.com/sitemap-pages.xml","loc": "https://www.example.com/old", "lastmod": "2026-13-01", "changefreq": null, "priority": null,"httpStatus": 301, "redirectedTo": "https://www.example.com/new", "statusChecked": true,"issues": ["invalid-lastmod", "url-redirects"]}
A file's valid and entriesWithIssues count the sitemaps.org rules only: they are decided when the file is read,
before any page is requested. A broken or redirecting page is reported in its own url-entry item and counted in
SUMMARY.urlEntriesWithIssues.
Key-value store record SUMMARY: sitemaps checked, how many are valid, URL entries and how many have issues.
Pricing
Pay per event, no start fee:
| Event | Price | Per 1,000 |
|---|---|---|
sitemap-file-validated | $0.002 | $2.00 |
url-validated (rules only) | $0.0002 | $0.20 |
url-validated-with-status (rules + one HTTP request) | $0.0006 | $0.60 |
Limits
- Image, video and news sitemap extensions are read as ordinary entries; their extra tags are not validated yet.
- Sitemaps with a DOCTYPE or XML entities are rejected (sitemaps never need them, and they are a parser risk).
- Memory: 1,024 MB by default (enough for 200,000 entries), 2,048 MB at most. Status checks wait on your server, so for a status-check run of a small sitemap 256 MB is enough.
- A run stops early, with the entries checked so far saved and the reason in
SUMMARY.stoppedReason, when its timeout is near or when status checks answer very slowly (on average over about 4 s per URL at 1,024 MB, 17 s at 256 MB). Every entry it returns from a status-check run was checked.
Support
Report problems in the Issues tab. We aim to respond within a few days.