Google indexing diagnosis
Astro.js · Google Search Console · URL Inspection API

Why Astro.js Pages Stay Unindexed in Google — and How to Diagnose the Cause

Diagnose Astro.js pages that remain Crawled or Discovered – currently not indexed even when robots, canonicals, schema and HTTP status are already correct.

This guide is based on an observed paid-demand pattern. It is not presented as a YEEDOOR client case study or performance claim.

By SEO Strategist & Organic Growth AdvisorReviewed by YEEDOOR Technical OperationsUpdated 2026-10-07Author profile
Short answer

If Astro.js pages return HTTP 200, are crawlable, use valid canonicals, and still remain unindexed, the next step is to compare indexed and unindexed URLs at the rendering, internal-linking, sitemap, template and Google inspection-data levels rather than repeating a generic SEO checklist.

Why technically valid Astro.js pages can still remain unindexed

An Astro.js site can be technically crawlable and still have a meaningful share of URLs outside Google's index. The first job is to separate discovery, crawl and indexing states instead of treating every unindexed URL as the same failure.

Start with a URL inventory that joins the site route, sitemap presence, internal-link evidence and Search Console state. This creates a comparable dataset before any code or content changes are made.

  • Group affected URLs by Search Console indexing state.
  • Keep indexed URLs as the control group.
  • Record route template, sitemap presence, internal-link depth and rendered-content characteristics.

Understand the Search Console states before changing anything

These states describe different points in the discovery-to-indexing path. A URL that is discovered but not crawled needs a different investigation from a URL Google has already crawled and chosen not to index.

  • Discovered – currently not indexed: focus on discovery, crawl prioritization and how strongly the site signals page importance.
  • Crawled – currently not indexed: compare content, rendering, duplication, canonical interpretation and page-level value against indexed peers.
  • URL unknown to Google: verify that the URL is actually discoverable through the sitemap or internal links before looking for deeper indexing causes.

What to investigate after robots, canonicals and schema are already correct

If robots directives, canonical tags, schema, HTTP 200 responses and basic indexability have already been verified, repeating that checklist is unlikely to explain the difference between indexed and unindexed groups.

The higher-value next step is differential diagnosis: identify what is systematically different about the pages Google indexes versus the pages it does not.

  • Compare route templates and rendered main content.
  • Compare internal-link count, link context and click depth.
  • Compare sitemap inclusion and last-modified patterns.
  • Compare content uniqueness and overlap across parameterized or templated pages.

Indexing diagnosis flow

Follow the failing layer in order. Do not change multiple layers at once and then guess which change mattered.

01Discovery

Does Google know the URL?

If no, fix sitemap/internal discovery.
02Crawl

Has Google fetched the URL?

If no, investigate crawl prioritization.
03Canonical

Did Google select the expected canonical?

If no, investigate duplication/canonicalization.
04Render

Is the rendered main content meaningfully distinct?

If no, investigate template/content output.
05Internal support

Is the URL linked and treated as important?

If no, improve architecture and contextual links.
06Verify

Did the same cohort change state after the fix?

Re-inspect the same URLs and record the result.

Compare indexed and unindexed Astro.js routes

For Astro.js, route generation can make many pages look structurally valid while still producing weak or repetitive page-level signals. Build two cohorts—indexed and unindexed—and compare them by route family instead of inspecting URLs one by one.

  • Route or content collection
  • Template/layout
  • Rendered title and primary heading
  • Main-content length and uniqueness
  • Internal links pointing to the URL
  • Canonical target
  • Sitemap membership

Rendered HTML and page-template differences

Static generation does not guarantee that every route carries the same quality of indexable signals. Inspect the final rendered HTML, not only the source component logic.

Look for page groups where the main content, headings, metadata or internal links collapse into near-identical output even though each URL returns 200.

  • Compare server-rendered HTML between indexed and unindexed examples.
  • Check whether templated pages expose meaningful unique text above shared components.
  • Confirm that navigation and contextual links point to important routes using stable hrefs.

Internal linking, sitemap discovery and page importance

A sitemap can expose a URL, but internal links still help communicate how the page fits into the site. The useful question is whether important pages are consistently discoverable from relevant indexed pages and whether the site architecture treats them as important.

  • Measure internal-link depth from strong indexed pages.
  • Identify orphaned or weakly linked route groups.
  • Check whether sitemap membership matches the URLs the site actually wants indexed.

Use Search Console inspection data to build a diagnosis

Once the affected URL cohorts are defined, combine Search Console inspection data with the same route-level evidence instead of treating the API as a separate reporting exercise.

Use the URL Inspection API at scale

For a multi-URL diagnosis, the URL Inspection API is most useful when its output is joined back to your route inventory. The goal is not to request indexing blindly; it is to create a repeatable readback layer for inspection state, canonical interpretation and crawl/index information.

  • Sample representative URLs from each route group.
  • Store inspection results with the route inventory.
  • Compare Google-selected signals across indexed and unindexed cohorts.
  • Re-run the same inspection set after targeted fixes.

Build an indexing diagnosis matrix

A diagnosis matrix turns a vague indexing complaint into a set of comparable evidence. It also prevents the team from changing multiple layers at once and losing the ability to tell which change mattered.

Illustrative cohort comparison — not a YEEDOOR client result.
URLSearch Console stateRoute/templateSitemapInternal linksRendered uniquenessGoogle canonicalAction
URL AIndexedTemplate AYesStrongHighSelfControl
URL BCrawled – not indexedTemplate AYesWeakLowSelfImprove differentiation and linking
URL CDiscovered – not indexedTemplate BYesVery weakUnknownUnknownImprove discovery/priority signals
URLURL A
Search Console stateIndexed
Route/templateTemplate A
SitemapYes
Internal linksStrong
Rendered uniquenessHigh
Google canonicalSelf
ActionControl
URLURL B
Search Console stateCrawled – not indexed
Route/templateTemplate A
SitemapYes
Internal linksWeak
Rendered uniquenessLow
Google canonicalSelf
ActionImprove differentiation and linking
URLURL C
Search Console stateDiscovered – not indexed
Route/templateTemplate B
SitemapYes
Internal linksVery weak
Rendered uniquenessUnknown
Google canonicalUnknown
ActionImprove discovery/priority signals
YEEDOOR FRAMEWORK

YEEDOOR Indexing Diagnosis Matrix

Compare indexed and unindexed URL cohorts using the same observable dimensions before changing the site.

  1. Google knows the URL? If no → discovery problem.
  2. Google crawled the URL? If no → crawl prioritization/discovery problem.
  3. Google selected the expected canonical? If no → canonicalization/duplication investigation.
  4. Rendered content is meaningfully distinct and internally supported? If no → template/content/internal-link investigation.
  5. After a targeted fix → re-inspect the same cohort and verify index-state change.

Fix, re-index and verify the same URL cohort

Requesting re-indexing should come after a specific cause has been addressed. Keep the same URL cohort, record the change date, and compare inspection state plus Search Console coverage over time.

The success condition is not that a request was submitted. It is that the important URLs move into a stable indexed state and remain discoverable through the site architecture.

  • Change one diagnosable layer at a time where practical.
  • Record affected URL cohorts and implementation dates.
  • Re-read the same URLs after the change instead of relying only on aggregate coverage counts.
Practical tool

YEEDOOR Indexing Diagnosis Worksheet

Use the same evidence columns for indexed and unindexed URL cohorts so changes can be compared before and after a targeted fix.

URLSearch Console stateRoute/templateSitemapInternal linksRendered uniquenessGoogle canonicalLast crawlChange dateActionVerification result
Download CSV worksheet →

Sources & validation

Primary technical references used to validate the diagnostic guidance on this page.

  1. Google Search Console URL Inspection APIOfficial API reference for reading indexed URL inspection status.
  2. Google Search: Make your links crawlableOfficial guidance on crawlable links and descriptive linking.
  3. Google Search: Sitemaps overviewOfficial guidance on sitemap discovery and submission.
  4. Google Search: Ask Google to recrawl your URLsOfficial guidance on recrawling and the limits of indexing requests.

Frequently asked questions

Why can Astro.js pages be crawled but still not indexed?

A crawl confirms that Google fetched the URL; it does not guarantee indexing. Compare the unindexed page against indexed peers for rendered uniqueness, internal-link strength, route/template patterns and Google's canonical interpretation.

What is the difference between Crawled – currently not indexed and Discovered – currently not indexed?

Discovered means Google knows about the URL but has not necessarily crawled it yet; Crawled means Google fetched the URL but did not add it to the index at that time. They should be investigated as different stages of the pipeline.

Can Astro.js pages return HTTP 200 and still remain outside Google's index?

Yes. HTTP 200 is necessary for a normal indexable page, but indexing also depends on how Google interprets the page, its canonical signals, content, duplication and its place in the site architecture.

How can the Search Console URL Inspection API help diagnose indexing issues at scale?

Use it as a readback layer for representative URLs, then join the inspection results to your route inventory so indexed and unindexed cohorts can be compared systematically before and after fixes.

Get a free first-pass diagnosis before you change the site.

Send us the URL and the Search Console state you're seeing. We'll help narrow the problem to discovery, crawl, canonicalization, rendering, internal support or verification.

Get a Free Diagnosis →