Why does Google say "Discovered - currently not indexed"?
Google found the URL and decided not to spend a crawl on it. Almost always because nothing on your site links to it - a sitemap is a hint, and an internal link is the vote.
By Sapun Lamichhane · Arcetis
It means Google found the URL, put it in a queue, and has so far decided that fetching it is worth less than fetching something else. Nothing is broken. No penalty has been applied. Google is rationing.
The confusion comes from the word "discovered", which sounds like progress. It is the weakest state a URL can be in while still being known. Google has an address and no reason to visit it.
Why does Google ration crawling at all?
Every site gets an effective crawl allowance, set by how much Google wants your content and how much load your server can take. New domains and low-authority domains get very little. When your sitemap declares 900 URLs and your allowance covers a few dozen fetches a day, Google has to choose - and the thing it chooses on is internal links.
This is the part most people get backwards. A sitemap is a hint: it says these URLs exist. An internal link is a vote: it says this URL matters enough that another page on my own site points at it. Google weights the vote far more heavily than the hint, because the hint costs you nothing to fabricate.
The usual cause: orphan pages
An orphan page is one that appears in your sitemap and is linked from nowhere on the site. Programmatically generated sets produce them by the hundred - one page per product, per location, per rule, per tag - because the generator writes the pages and the sitemap in the same loop and nobody writes the index that links them.
The symptom is unmistakable once you know it: the number of URLs stuck in "Discovered" closely tracks the number of URLs in your sitemap that have no internal links.
Two checks will confirm it in about a minute:
- 1Fetch one of the affected URLs' would-be parent pages with `curl` rather than a browser, and search the raw HTML for the link. If the link is built by JavaScript, it is not in the HTML, and for crawl-scheduling purposes it does not exist.
- 2Pick five stuck URLs and try to reach each one by clicking from your homepage. If you cannot, neither can a crawler.
Why client-side links do not count
Google renders JavaScript, so links built in the browser are eventually seen. But rendering happens in a second pass, after the fetch, and crawl scheduling happens before it. A link that only exists after hydration cannot influence the decision to crawl, because the decision is made from the HTML.
For an index or hub page - the page whose entire job is to distribute crawl attention - server-rendered anchors are not a preference. They are the requirement.
What actually fixes it
- Build a real index page that links every affected URL, server-rendered, and link that index from your main navigation. One page can rescue hundreds.
- Link related pages to each other. A rule page linking its siblings, a product linking its category, a post linking the tool it describes.
- Cut what you cannot support. 900 thin URLs on a domain with no authority is a worse position than 200 substantial ones. Pages you would not link to are pages you should not publish.
- Fix soft 404s. Every URL that returns 200 with a not-found body is a fake page competing for the same allowance.
- Check your server response time. Google throttles crawling on slow origins, and a p75 above roughly a second measurably reduces how much it takes.
What does not fix it
- Resubmitting the sitemap. Google is in this state because it already read it.
- Raising `<priority>`. Google has said for years that it ignores the field.
- Requesting indexing for individual URLs. It works, one URL at a time, and does nothing for the other 800.
- Waiting. A URL with no internal links can sit in this state indefinitely, because nothing about it changes.
How long before it clears?
Once the links exist, Google has to recrawl the linking pages, follow the new links, then index what it finds. Two to six weeks is normal, and the count in Search Console drops gradually rather than all at once. If nothing has moved after a month, the links are probably not in the server-rendered HTML - check with `curl`, not with your browser's inspector, which shows you the page after JavaScript has run.
Our SEO checker crawls your rendered and raw HTML separately and reports which internal links exist in each, so orphaned URLs and JavaScript-only links show up as findings rather than as a mystery in Search Console three months later.