Skip to main content

Command Palette

Search for a command to run...

How to Fix “Sitemap Could Not Be Read” for Hashnode in Google Search Console

Hashnode serves the correct sitemap when you add one small query parameter.

Updated
4 min read
How to Fix “Sitemap Could Not Be Read” for Hashnode in Google Search Console
O
I build systems that work — technically sound, security-first, and actually useful to the people who depend on them. Creator of the UNICORN Binance Suite — 6 open source Python libraries with 3.3M+ downloads and 390+ dependent public projects. Currently pioneering AI-driven open source maintenance: running a controlled AI agent that maintains production code and documenting what it means for engineering teams. Vienna, Austria 🇦🇹

My Hashnode sitemap opened perfectly in the browser:

https://blog.technopathy.club/sitemap.xml

The XML looked valid, all URLs were present, and there was no obvious problem.

Google Search Console still refused to process it.

The error was:

Sitemap could not be read

In the submitted sitemap overview, Google showed:

Couldn't fetch

The solution turned out to be a single query parameter:

/sitemap.xml?sitemap=1

For my publication, the working URL is:

https://blog.technopathy.club/sitemap.xml?sitemap=1

The Google Search Console Error

I first submitted the standard Hashnode sitemap:

https://blog.technopathy.club/sitemap.xml

Google Search Console detected no pages and displayed:

Sitemap could not be read

The sitemap overview showed:

  • Type: Unknown

  • Status: Couldn't fetch

  • Discovered pages: 0

  • Discovered videos: 0

This was confusing because the same sitemap URL worked without any visible issue in a normal browser.

The Sitemap Looked Fine in the Browser

Opening this URL directly displayed a normal XML sitemap:

https://blog.technopathy.club/sitemap.xml

That made the failure look like a Google Search Console issue at first.

But a browser successfully displaying XML does not prove that the server is returning the correct HTTP headers.

Browsers are often tolerant and render the response based on its contents. Search engines and validators may be stricter.

The Actual Problem: The Wrong Content-Type Header

My troubleshooting path eventually led to the sitemap validator at:

XML Sitemap Validator

The validator reported the exact error:

Incorrect http header content-type: "text/html; charset=utf-8" (expected: "application/xml")

It also marked the sitemap as invalid:

Sitemap is valid: No

That explained the contradiction:

  • the sitemap content looked correct in the browser,

  • but the server returned it as text/html,

  • while the validator expected application/xml,

  • and Google Search Console therefore refused to process it.

The One-Line Fix

Instead of submitting:

/sitemap.xml

submit:

/sitemap.xml?sitemap=1

For my Hashnode publication, that means:

https://blog.technopathy.club/sitemap.xml?sitemap=1

For another Hashnode publication, use:

https://your-domain.example/sitemap.xml?sitemap=1

That small query parameter makes Hashnode return the working sitemap response.

The Successful Result

After submitting the parameterized URL, Google Search Console accepted it.

The overview showed:

  • Type: Sitemap

  • Status: Success

  • Discovered pages: 39

  • Discovered videos: 0

The detail page confirmed:

Sitemap processed successfully

The difference was only this:

/sitemap.xml

became:

/sitemap.xml?sitemap=1

How to Submit the Correct Hashnode Sitemap

Open Google Search Console and go to:

Indexing → Sitemaps

Submit:

sitemap.xml?sitemap=1

Or use the full URL:

https://your-domain.example/sitemap.xml?sitemap=1

Google should then recognize the type as Sitemap, fetch the file, and discover the contained pages.

Verify the Headers Yourself

You can inspect the response headers with curl.

Check the standard URL:

curl -I "https://your-domain.example/sitemap.xml"

Then compare it with:

curl -I "https://your-domain.example/sitemap.xml?sitemap=1"

The broken response may contain:

Content-Type: text/html; charset=utf-8

For a proper XML sitemap response, you would expect an XML content type such as:

Content-Type: application/xml

You can also inspect the response body:

curl -L "https://your-domain.example/sitemap.xml?sitemap=1"

The sitemap should contain valid XML and normally begin with something similar to:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

No Proxy or Custom Wrapper Required

Before finding this solution, I considered creating a wrapper on a separate subdomain that would:

  • fetch the Hashnode sitemap,

  • replace the incorrect HTTP header,

  • return it as application/xml,

  • and expose the corrected response to Google.

That would have worked, but it would also have added unnecessary infrastructure and another possible point of failure.

The query parameter solves the problem without:

  • PHP,

  • a reverse proxy,

  • a redirect,

  • a custom sitemap generator,

  • or additional hosting.

Final Fix

The standard Hashnode sitemap may look correct in a browser but still fail in Google Search Console because of the HTTP Content-Type header.

Do not submit:

https://your-domain.example/sitemap.xml

Submit:

https://your-domain.example/sitemap.xml?sitemap=1

This fixes the Google Search Console errors:

Sitemap could not be read

and:

Couldn't fetch

In my case, Google then processed the sitemap successfully and discovered all 39 pages.


I hope this quick fix saves you some time if Google Search Console refuses to process your Hashnode sitemap even though it looks perfectly valid in the browser.

Follow me on GitHub, Mastodon, X, and LinkedIn, or join Telegram for updates on my latest publications. Constructive feedback is always appreciated.

Thank you for reading, and happy indexing! ¯_(ツ)_/¯