In short
Search Console showed 'Couldn't fetch' and then 'Sitemap could not be read' with 0 discovered pages for a sitemap that returned HTTP 200 and valid XML.
I proved the file was fine with curl, confirmed it with URL Inspection's live test, then submitted the same sitemap under sitemap.xml?v=2. Search Console treated it as a new sitemap and read all 70 URLs.
My sitemap was fine, and Search Console said it wasn't. This is what I checked, what moved it, and what I still can't claim to know.
I had just submitted sitemap.xml for kartik.contentcalendar.in. The Sitemaps report showed this:
Sitemap Type Submitted Last read Status Discovered pages
/sitemap.xml Unknown 25 Oct 2026 (blank) Couldn't fetch 0Opening the entry made it sound worse:
Last read: 25/10/2026
Discovered pages: 0
Sitemap could not be readThat message reads like a broken file, so I assumed I might have a bug.
First: prove the file is fine#
I did not touch any code. I fetched the sitemap the way a crawler would:
curl -s -D - -A "Googlebot" https://kartik.contentcalendar.in/sitemap.xml
# HTTP/1.1 200 OK
# Content-Type: application/xml
# Content-Length: 11927Then I checked the things that most often make Google reject a sitemap:
| Check | Result |
|---|---|
| HTTP status | 200 |
| Content-Type | application/xml |
| Well-formed XML | yes, parsed with a real XML parser, 70 <url> entries |
| Hidden BOM at the start of the file | none, it begins with <?xml |
<lastmod> format | valid ISO dates |
| URLs | all on https://kartik.contentcalendar.in, no spaces or raw & |
http:// version | redirects to https:// |
| robots.txt | Allow: /, sitemap listed, only /admin and /jobpilot blocked |
| Gzip and cache revalidation | 200 with gzip, 304 on a matching If-None-Match |
Everything passed. In a Next.js project the sitemap comes from one sitemap.js route, so there was also nothing in the code that could differ between a browser and Googlebot.
Second: ask Google, not curl#
The most useful step was the URL Inspection tool. I pasted the sitemap URL into it. The stored result, from a crawl on 15 October, said:
Page indexing: Page is not indexed: Crawled - currently not indexed
Sitemaps: Temporary processing error
Crawl allowed? Yes
Page fetch: SuccessfulTwo things in there are easy to misread:
- "Crawled - currently not indexed" on a sitemap is normal. A sitemap is not a page that should appear in search results, so there is nothing to fix. I ignored that line.
- "Temporary processing error" is the real clue.
Page fetch: SuccessfulandCrawl allowed: Yesmean Googlebot downloaded the file. The failure was in Google's processing of it, not on my server.
Then I clicked Test live URL:
URL is available to Google
Page can be indexedThat settled it. Google could fetch the file right now, so the stored failure was out of date.
The fix: submit it under a new URL#
Search Console identifies a submitted sitemap by its full URL, so I submitted the same file with a query string. In Sitemaps, I typed this into "Add a new sitemap":
sitemap.xml?v=2My server returns the same sitemap for that URL, so the content is identical. The report then looked like this:
/sitemap.xml?v=2 Sitemap 25 Oct 2026 25 Oct 2026 Success 70
/sitemap.xml Unknown 25 Oct 2026 (blank) Couldn't fetch 0All 70 URLs were discovered under ?v=2. The old /sitemap.xml entry kept its stale "Couldn't fetch" status, so I removed it from its three-dot menu.
What I can and can't claim#
The facts: the file was valid before and after, I changed nothing in the code, and a fresh submission under a new URL showed Success while the old entry stayed stuck.
My explanation is an inference. Search Console seems to keep the result of its first attempt against the submitted URL, and a new URL gets a new attempt. Google does not document this, so treat it as what worked for me, not a guarantee. I also can't tell you why the first attempt failed. "Temporary processing error" is the only reason I was given.
What I'd do again#
- Don't change code first. Run
curland a real XML parser before you edit a working sitemap. A fix to something that wasn't broken just adds new bugs. - Use URL Inspection's live test. It answers "can Google reach this right now?", which the Sitemaps report doesn't.
- Ignore "Crawled - currently not indexed" on the sitemap URL. It is not a problem.
- Resubmit with
?v=2before you wait days. Remove the old entry once the new one shows Success. - Don't resubmit the same URL repeatedly. It gave me nothing; the new URL did.
If you hit the same status and your own curl checks pass, this is worth trying first. For the other Search Console problem I hit on this site, see Crawled - currently not indexed: the cause was 173 words.
- seo
- nextjs
- search-console
Common questions
Why does Search Console say 'Couldn't fetch' for a sitemap that loads in my browser?
The status is Google's record of its last attempt, not a live check. If an attempt failed for a temporary reason, the sitemap can stay marked 'Couldn't fetch' even after the file is reachable. Test the URL with URL Inspection's live test to see whether Google can reach it right now.
What does adding ?v=2 to a sitemap URL do?
Search Console identifies a submitted sitemap by its full URL, so a different query string is a new submission and Google fetches it fresh. Your server returns the same file either way. Google does not document this behaviour, so treat it as something that worked, not a guarantee.
Is it safe to submit the same sitemap under two URLs?
Yes, for a short time. The URLs inside are identical, so nothing is duplicated in the index. Once the new entry shows Success, remove the old one from its three-dot menu.
Why does URL Inspection say my sitemap is 'Crawled - currently not indexed'?
A sitemap is not a page meant to appear in search results, so Google does not index it. That verdict on a sitemap URL is normal and can be ignored. The useful fields are page fetch and crawl allowed.
Share this
One click opens LinkedIn with a ready-written post: a hook, the short version of this guide and the link. The caption is also copied, so you can paste it if it does not appear.
Instagram has no web share link, so this gives you both pieces: copy the caption, save the card, then post it.
Keep reading
10 Next.js SEO Tips for Developers
Ten Next.js SEO tips: metadata, sitemaps, canonical URLs, structured data, image optimisation and avoiding the 'crawled, currently not indexed' trap.
Crawled - currently not indexed: the cause was 173 words
Search Console said crawled and refused. The cause was not robots.txt or canonicals - the project grid rendered client-side, so Googlebot got 173 words.
Adding an MDX blog to Next.js 16 on Turbopack
Turbopack rejects remark and rehype plugins passed as functions, and a root-level mdx-components.js gets its Tailwind purged in production. Both fixes.
Got this problem too?
Websites, web apps and SaaS products in React and Next.js, with the backend, payments and integrations they need to actually run a business.