URL Inspection is the single most useful screen in Search Console — and the most misread. The “Page is not indexed” banner is not always bad, and the green check is not always good. Below is what each field actually means, plus the API call you can script for bulk inspections.
Background
URL Inspection runs two reports for any URL on your verified property: the indexed version (what Google has stored from its last crawl) and the live test (what Google sees if it crawls right now). They can disagree, and the disagreement is usually the answer to your question.
How to tell
- You want to know if a specific page is indexed without doing a
site:search. - A page disappeared from search results and you do not know why.
- You changed canonical / robots / noindex and want to confirm Google saw the change.
- You want to manually request indexing for a freshly published article.
Quick verdict
Paste a single URL → read Coverage → run live test → compare indexed vs live → request indexing only if both look right.
Before you start
- Property verified in Search Console (Domain or URL-prefix).
- Full URL ready (with
https://and trailing slash matching your site’s convention). - For bulk: an OAuth token for the URL Inspection API.
Step by step
-
Paste the full URL into the search bar at the top of Search Console. Use the exact form your site serves — trailing slash matters.
-
Read the Coverage section first. Plain-English outcomes:
"URL is on Google" → indexed ✓
"URL is on Google, but has issues" → indexed with warnings (still showable)
"URL is not on Google" → not indexed; reason on next line
├─ "Discovered – currently not indexed" → queued; sometimes "thin/duplicate" reality
├─ "Crawled – currently not indexed" → fetched but rejected; usually quality
├─ "Page with redirect" → 301/302 in place; index lives elsewhere
├─ "Duplicate without user-selected canonical" → fix canonical
└─ "Excluded by 'noindex' tag" → meta robots is blocking
-
Click View crawled page to see Google’s stored HTML. Check the canonical, the rendered HTML, and More info → console errors.
-
Click Test live URL (top right). This fetches now. The rows you scan first:
Crawl allowed? Yes / No ← robots.txt
Page fetch Successful ← 200 from your origin
Indexing allowed? Yes / No ← meta robots / X-Robots-Tag
User-declared canonical <your URL>
Google-selected canonical <your URL or different> ← if different, the bug is canonical
- For bulk inspection use the API. Authenticated curl:
curl -X POST "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
--data '{
"inspectionUrl": "https://yourdomain.com/articles/foo/",
"siteUrl": "sc-domain:yourdomain.com",
"languageCode": "en-US"
}' \
| jq '.inspectionResult | {
verdict: .indexStatusResult.verdict,
coverageState: .indexStatusResult.coverageState,
userCanonical: .indexStatusResult.userCanonical,
googleCanonical: .indexStatusResult.googleCanonical,
lastCrawl: .indexStatusResult.lastCrawlTime
}'
Sample response:
{
"verdict": "PASS",
"coverageState": "Indexed, not submitted in sitemap",
"userCanonical": "https://yourdomain.com/articles/foo/",
"googleCanonical": "https://yourdomain.com/articles/foo/",
"lastCrawl": "2026-05-20T14:02:00Z"
}
- Loop over a list of URLs to triage at scale:
while read url; do
curl -sX POST "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
--data "$(jq -nc --arg u "$url" --arg s "sc-domain:yourdomain.com" \
'{inspectionUrl:$u, siteUrl:$s, languageCode:"en-US"}')" \
| jq -r --arg u "$url" '[$u, .inspectionResult.indexStatusResult.verdict, .inspectionResult.indexStatusResult.coverageState] | @csv'
sleep 1 # respect rate limits
done < urls.txt > inspection-report.csv
-
Request indexing when both indexed and live look correct. Use sparingly — once per important URL.
-
For pages you just edited, run live test first to confirm Google sees your change, then request indexing.
Implementation checklist
- The URL you inspected matches the canonical form (trailing slash, language prefix).
- Coverage state and Google-selected canonical match expectations.
- Live test passes Crawl allowed + Indexing allowed.
- API is used for any inspection over 20 URLs.
- Request-indexing usage is documented per URL (date + reason).
After-launch verification
- For new URLs: 1-3 days after Request indexing, re-run inspection — should flip from “not indexed” to “on Google” unless quality issues remain.
- For canonical fixes: Google-selected canonical now matches User-declared canonical.
- For unblock fixes (robots, noindex): live test Indexing allowed = Yes.
Common pitfalls
- Trusting “URL is on Google” without reading the next line. A page can be indexed under a different canonical than yours.
- Confusing the indexed version with the live test. The indexed version is a snapshot, sometimes weeks old.
- Requesting indexing for the same URL multiple times in a day. Google ignores duplicates and may temporarily rate-limit you.
- Inspecting URLs with tracking parameters. Strip
?utm_*before pasting; the parameter version is a different URL to Google. - Ignoring the “Crawl allowed?” / “Indexing allowed?” rows in the live test — those tell you instantly if
robots.txtor anoindextag is blocking you. - Using the API without rate limiting — 600 requests/minute is the soft cap; aim for under 60 to be safe.
FAQ
- Why does “URL is not on Google” sometimes have no reason listed?: It usually means Google has never crawled the URL at all. Check that the URL is in your sitemap and is linked from somewhere on your site, then request indexing.
- How often can I use “Request indexing”?: Search Console allows roughly 10-20 requests per day per property in the UI. The API has its own quotas — check the response headers.
- Does requesting indexing guarantee my page will be indexed?: No. It moves the URL into Google’s queue for re-evaluation. If the page is thin, duplicate, or blocked, it will still not be indexed.
- Why does the live test show a different canonical than the indexed version?: Because Google’s last crawl was before you changed it. After you confirm the live test is correct, request indexing — the indexed version will catch up within days.
- Can the API request indexing?: No, the URL Inspection API is read-only. Use the separate Indexing API (limited use cases, mainly job posts and broadcast events).
Related
- Submit a new site to Google in 2026
- Reading the Pages report
- Crawled — currently not indexed — how to fix
- Canonical in Search Console explained
- Submit sitemap Search Console
Tags: #Indie dev #SEO #Google #Search Console #Indexing #Troubleshooting