Indexing / Indexing decision tree
Google is not indexing your site: a troubleshooting decision tree
Diagnose discovered, crawled, canonicalized, blocked, and soft-404 URLs in the right order.
Check indexability signalsDo not start by rewriting titles or repeatedly requesting indexing. First identify which stage failed: discovery, crawling, eligibility, canonical selection, or quality selection.
Branch 1: can Google discover the URL?
If Search Console says the URL is unknown or discovered but not indexed, check that it appears in a submitted sitemap and is linked from at least one crawlable, relevant page.
A sitemap is a discovery hint, not an indexing command. Fix orphaned navigation and ensure the sitemap contains only canonical 200-status URLs before submitting it again.
Branch 2: can Google fetch the page?
Test the live URL and inspect its status code. Authentication, 403 responses, unstable 5xx errors, redirect loops, and robots.txt blocks prevent or waste crawling.
Resolve availability first. Content edits cannot compensate for a URL that Googlebot cannot reliably fetch, and repeated inspection requests do not repair server behavior.
Branch 3: is the page eligible for indexing?
Compare meta robots, X-Robots-Tag, robots.txt, canonical, and sitemap inclusion side by side. A page in the sitemap with noindex or a canonical to another URL sends conflicting instructions.
Choose one intended outcome. Indexable pages should be crawlable, return 200, use the intended canonical, and appear in internal links and the sitemap. Utility or duplicate pages can remain available with noindex.
Branch 4: did Google choose another canonical?
When Google selects a different canonical, compare page content, internal links, redirects, hreflang, sitemap URLs, and canonical tags. The strongest signals may point away from your preferred page.
Do not force every variant into the index. Consolidate duplicates, link consistently to the preferred URL, and make localized or purpose-specific pages genuinely distinct where they must stand alone.
Branch 5: crawled but currently not indexed
This status often means Google fetched the page but did not find enough reason to retain it. Check whether the page solves an independent intent, contains original evidence or workflow, and is meaningfully different from nearby pages.
Merge overlapping pages, remove thin programmatic variants from the sitemap, and strengthen the few pages that represent the product. Measure the bucket weekly rather than changing URLs daily.
Branch 6: verify one change at a time
After fixing the relevant branch, test the live page, update internal links and sitemap if needed, and request indexing for a small representative sample. Keep a dated record of what changed.
Review impressions, indexed counts, crawl errors, and canonical selection after Google recrawls. If the technical signals are clean but the page remains excluded, improve its usefulness or consolidate it instead of submitting it repeatedly.