# Search Console on a JavaScript Site: Inspect the HTML Before You Trust the Graphs

- Source: https://simeoncreatives.com/blog/search-console-url-inspection-javascript-site
- Hub: SEO, GEO & Digital Marketing
- Author: Simeon Matheka, Founder & Creative Director
- Published: 2026-09-01
- Updated: 2026-09-01
- Reading time: 15 min

Coverage and performance graphs will lie if the first HTML is empty. How we inspect simeoncreatives.com in Google Search Console: raw HTML, rendered HTML, canonicals, sitemap, and noindex Markdown twins.

Google Search Console (GSC) graphs look authoritative. They are only as honest as the HTML Google stored. On this site the articles were long. The first HTML was not. Inspection had to come before any argument about impressions.

This is the tools spoke that pairs with the engineering write-up: [why crawlers saw an empty React site](https://simeoncreatives.com/blog/why-crawlers-saw-an-empty-react-site). That article is the build. This one is the Search Console checklist we run on simeoncreatives.com after every deploy that touches routes or prerender.

## Start at URL Inspection, not Performance

Performance is a lagging report. URL Inspection is the live question: what did Google get for this URL, today, if you ask it to look?

1. **Pick a long article: **not the homepage. A 2,000-word post is the honest test.
2. **Inspect the slashless URL: **the one in the sitemap and the canonical tag. Example: https://simeoncreatives.com/blog/what-is-seo-a-beginners-guide
3. **Read coverage: **indexed, crawled not indexed, or excluded. “Crawled, currently not indexed” plus empty raw HTML is a content-quality signal, not a mystery.
4. **Open both HTML views: **raw and rendered. Search for a sentence that only exists in paragraph 12 of the article. If raw misses it, the first HTML is still a stub.

> If raw HTML is a title and a lede, stop reading Performance. You are optimizing a screenshot of an app, not a document.

## Canonical and slash: one URL, one 200

This property lists slashless paths in sitemap.xml. The React app also strips trailing slashes. The host must serve that slashless URL as 200, not bounce it to a twin.

| Check | Pass | Fail we had |
| --- | --- | --- |
| Sitemap loc | https://simeoncreatives.com/blog/{slug} | Matched the canonical on paper |
| Request without slash | 200 and the article | 307 to /blog/{slug}/ |
| Canonical on the document | Slashless, same as sitemap | Canonical pointed at the URL that 307s |
| Request a junk path | 404 with a not-found document | 200 SPA shell (soft 404) |

Technical background lives in the [technical SEO beginner’s guide](https://simeoncreatives.com/blog/technical-seo-beginners-guide). The Cloudflare knobs (404-page, drop-trailing-slash) are in the empty-React article. Do not “fix” this in Search Console. Fix the host.

## Sitemap: HTML only

The sitemap is generated at build from posts, hubs, work, and resources. It must not list .md files, preview URLs, or /contact (noindex). After publish, in GSC: Sitemaps, confirm the file is fetched, then spot-check three new locs with Inspection.

- **Submit the sitemap once: **https://simeoncreatives.com/sitemap.xml
- **Do not add a second sitemap for Markdown: **those URLs are noindex on purpose.
- **Lastmod: **update when the page’s content changes, not because you redeployed CSS.

## Markdown twins, robots.txt, and AI crawlers

Each article and hub has a **{path}.md** export for copy-paste into models. HTML stays the indexed original. The Markdown response sends X-Robots-Tag: noindex, follow. robots.txt allows the crawl. That is how a Generative Engine Optimization (GEO) twin can be read without competing as a duplicate page. Architecture for AI retrieval is also in [technical site architecture for RAG crawlers](https://simeoncreatives.com/blog/technical-site-architecture-rag-ai-engines).

In Inspection, a .md URL should show noindex. The HTML URL should not. If both index, you duplicated the cluster.

## What we will not fake in this article

This site’s public blog dates from July 2026. After the empty-HTML bug, Performance in GSC is not a fair scoreboard of the writing. Inventing top queries would be the opposite of information gain.

The honest 90-day job, from here:

1. **Week 0: **Inspection on three articles, one hub, one case study, and one junk URL. Raw HTML has the body. Junk URL is 404.
2. **Week 1: **Request indexing on those URLs after a clean deploy. Do not spray the whole sitemap on day one.
3. **Weeks 2 to 12: **Watch Coverage for soft 404s and “crawled not indexed.” Fix templates, not one URL at a time, if a class of pages fails.
4. **After that: **export queries and write the follow-up with real screenshots. That post does not exist until the export does.

## A repeatable inspection script

| URL class | Must see in raw HTML | Must see in GSC |
| --- | --- | --- |
| Article | H1, several H2s, body paragraphs | Canonical = sitemap loc, indexable |
| Hub | Hub H1 plus links to spokes | Collection URL, not a thin filter page |
| Case study | Client name, scope, body copy | Unique title, not homepage tags |
| Article .md | Markdown (fine) | noindex. Not in sitemap |
| /not-a-real-page | Not found copy | 404, not “duplicate of home” |

Information gain still decides whether a URL deserves to rank once it is crawlable. That framework is [how Google rewards originality](https://simeoncreatives.com/blog/information-gain-framework-google-seo). Empty HTML is not a content strategy. It is a broken document.

Need this inspection done on a site we did not build? Start at [/contact](https://simeoncreatives.com/contact). Bring Search Console access and three URLs you care about.

## FAQs

### What is Google Search Console (GSC)?

Google Search Console (GSC) is Google’s property dashboard for sitemap submission, coverage, queries, and URL Inspection. It is not Analytics. It tells you how Google sees URLs, not how humans click around the app.

### What is the difference between raw HTML and rendered HTML in URL Inspection?

Raw HTML is the first bytes. Rendered HTML is after Google runs JavaScript. If raw is a stub and rendered is the article, Googlebot may still get there. AdSense review and many other crawlers will not. Both should contain the article.

### Should Markdown article URLs be in the sitemap?

No. HTML is canonical. /blog/{slug}.md is an export with X-Robots-Tag: noindex, follow. Listing it in the sitemap asks Google to crawl a URL you told it not to index.

### Why not Disallow .md in robots.txt?

Disallow hides the file from crawlers that obey robots.txt, including some AI fetchers, and can keep Google from seeing the noindex header. Allow the crawl. Send noindex. Point canonical at the HTML.

### Can I publish ranking screenshots from the first 90 days?

Only if they are real. This article does not invent query volumes. After the empty-HTML fix, the honest next proof is a later Search Console export, not a fake table.
