Sitemap could not be read or couldn’t fetch: check what the URL returns
In Search Console's Sitemaps report, “Couldn't fetch” means Google couldn't download the sitemap URL, and “Sitemap could not be read” means it downloaded something it couldn't use as a sitemap. Either way, start by checking what the URL actually returns: a 200 status, an XML file rather than an HTML page, valid XML, and no robots.txt rule blocking it. Resubmitting without changing anything rarely helps.
One caveat: Search Console is often reported to show “Couldn't fetch” for a sitemap that was only just submitted. If every check below passes, give it a few days before changing anything.
Check these in order
- Is it the right URL? The sitemap must be on the same host as the Search Console property: https or http,
wwwor not. A sitemap submitted forhttp://example.comwhen the site lives athttps://www.example.comcan fail even though the file exists. - Does it return 200? Not a 404, not a redirect loop, and not a 403 from bot protection that turns crawlers away.
- Is it XML, or an HTML page? This is the most common cause. Many sites answer any unknown address with their home page or a “not found” page and a 200 status. Google then receives an HTML page where it expected XML. Open the URL and View Source: it should start with
<?xmland a<urlset>or<sitemapindex>element. - Is the XML valid? A single unescaped
&in a URL is enough to break the file; it must be written as&. The root element must beurlsetorsitemapindex. - Is it within the limits? A sitemap may list up to 50,000 URLs and be up to 50 MB uncompressed; larger sites need a sitemap index that points to several files. An empty sitemap isn't an error, but it isn't useful either.
- Does robots.txt block it? A
Disallowrule that matches the sitemap's path stops Google fetching it.
Check it in one go
Paste your site or sitemap address. The checker finds the sitemap (from the Sitemap: lines in robots.txt, then /sitemap.xml and /sitemap_index.xml), checks the status, whether it is XML or an HTML page, whether the XML is valid, the size and URL limits, and then samples the URLs it lists for 404s, redirects, noindex and robots.txt blocks.
How to fix it
- HTML instead of XML, or a 404: the sitemap doesn't exist at that address. Generate it (most CMSs and SEO plugins can) or submit the address where it really lives. On a static or JavaScript-framework site, make sure the build actually writes the file.
- Invalid XML: fix the generator, or escape the characters that break it.
- Wrong host: submit the sitemap in the property that matches the live address.
- Blocked: remove or narrow the robots.txt rule (see Blocked by robots.txt), and adding a
Sitemap:line to robots.txt helps other search engines find it too.
How to confirm the fix
Run the check again until the sitemap loads as valid XML, then resubmit it in Search Console. The status updates when Google next fetches it, which you can't schedule. The listed URLs matter as much as the file: a sitemap full of redirects or noindex pages sends mixed signals, which is why the checker samples them.
What this check can't tell you
We fetch from our own server, not from Google's. A firewall that treats Google's crawler differently from ours can give different results. For large sitemaps we sample the listed URLs rather than reading every one.
Fixed this one? Before you send people to the page, run the full pre-publish check for everything else: indexing signals, link preview, broken links, alt text, structured data and HTTPS in one pass.