Check line
Fix “Sitemap could not be read” and “Couldn’t fetch”
Enter the sitemap URL from Search Console. We check what a crawler gets back (robots.txt, redirects, status, content type and the XML itself), then explain the likely cause in plain English.
The checklist fills in here. If something fails, ask the Sitemap doctor to explain it.
Cause by cause
| Symptom | Likely cause | Fix |
|---|---|---|
| Couldn't fetch, new sitemap | Not fetched yet | Wait 1–2 days, then resubmit |
| Couldn't fetch, persists | Firewall / bot protection blocks Googlebot | Allow verified Googlebot in the CDN/WAF rules |
| Couldn't fetch | 404 / 403 / 5xx on the URL | Correct the path; check that the sitemap is generated in production |
| Couldn't fetch | Disallowed in robots.txt | Remove the Disallow rule for the sitemap path |
| Could not be read | HTML served (login, 404 template, home page) | Serve the real file; exclude it from redirects and caching rules |
| Could not be read | Unescaped & or bad characters | Entity-escape; regenerate with a proper XML writer |
| Could not be read | Whitespace/BOM before <?xml | Remove stray output (often a PHP file with a trailing newline) |
| Has errors | Relative URLs, bad dates, wrong namespace | Run the validator and fix per line |
Questions people ask
What does “Sitemap could not be read” mean?
Google fetched the file but could not parse it as a sitemap. The usual causes are malformed XML (often an unescaped &), an HTML page served in place of XML, whitespace before the XML declaration, a wrong namespace, or an unsupported format.
What does “Couldn’t fetch” mean?
Google did not get the file. For a brand-new submission this often shows while the fetch is still pending, so wait a day or two. If it persists: the URL returns a non-200 status, redirects, is blocked by robots.txt, or a firewall/CDN bot protection is blocking Googlebot.
My sitemap opens fine in my browser. Why can’t Google fetch it?
Your browser has cookies, a real user agent and passes bot checks. Googlebot may be challenged by Cloudflare or a WAF, geo-blocked, or served a different response by a caching plugin. Check server and CDN logs for Googlebot requests to the sitemap URL, and use URL Inspection → Test live URL on the sitemap URL.
Does this tool see what Googlebot sees?
Not exactly. It fetches from our server with its own user agent, so a firewall may treat it differently from Googlebot. If it works here but Search Console still fails, suspect bot protection or rules keyed on the user agent.
I fixed it. How do I make Google retry?
Open Search Console → Sitemaps, click the sitemap and resubmit it (or remove and re-add it). Status can take hours to days to update.