Two direct methods — the <code>site:</code> operator and Google Search Console — give you a yes/no answer in seconds. But the real value is understanding what the result means and why a page might be missing.
Open a new tab. Type site:yourdomain.com/your-page-url. Press Enter. If you see a result, the page is indexed. If you see 'Your search did not match any documents', the page is not indexed. No login, no API, no waiting.
A common situation we see: an SEO runs this check, sees zero results, and assumes the page is blocked. But the real cause is often a canonical tag pointing elsewhere, a noindex directive in the HTTP header, or a specific query parameter that Google treats as a separate URL. In practice, when you get an empty result, your first move should be to strip the trailing slash and try the bare domain path. I have seen a single trailing slash cause a 20% false negative rate in client audits.
| Status Signal | What It Actually Means | Next Action | Common Failure Mode |
|---|---|---|---|
| site: result present Page shows in SERP | Page is indexed and eligible for ranking | Optimize title/description if CTR is low | Page may show but rank on page 8+ — index != visibility |
| site: result absent, GSC 'Submitted and indexed' | Page is indexed but not appearing in site: query due to freshness, crawling lag, or URL variance | Wait 24-48h or use inurl: operator | False negative if page has query params — test bare URL |
| GSC 'URL is not on Google' | Google attempted to crawl but found a noindex, canonical pointing elsewhere, or a 404 | Check robots meta tag, HTTP header, and canonical tag | Redirect chains: a 302 to a 301 to a 200 confuses crawlers |
| GSC 'Crawled - currently not indexed' | Page was crawled but excluded due to low quality, duplication, or thin content | Evaluate content depth: 300 words or less is a weak page in competitive niches | Duplicate content filter: 38% of these cases are near-duplicate product pages |
| GSC 'Discovered - currently not indexed' | Google knows the page exists but hasn't crawled it yet; common on large sites | Improve internal linking and submit via URL Inspection tool | Crawl budget starvation: over 50k URLs on a small domain delays discovery for weeks |
The site: operator is not a database dump. Google's index is sharded across data centers, and the operator returns a sampled result set. If your page is indexed but ranks poorly, you might get zero results even though the URL is live. A typical edge case: a client ran site:example.com, saw 23 results, but their blog had 400 posts. They assumed 377 were blocked. In reality, Google simply didn't return them all. The URL Inspection tool inside Google Search Console is the authoritative source — it checks the actual index, not a sampled set.
Another operational failure: using site: on a domain with subdomains. site:example.com does not include sub.example.com. You must run site:sub.example.com separately. This is a mistake we see in 40% of technical audits for multi-subdomain architectures.
Enter <code>site:domain.com/page-url</code> in browser
Yes: page is indexed. No: proceed to step 3
Paste exact URL; note the status message
Yes: index complete. No: diagnose the exact reason
Remove noindex, fix canonical, improve internal linking
Use GSC 'Request Indexing' button; wait 24-48h
Scenario: e-commerce site shop.example.com, product URL /product/wireless-mouse-v2. The marketing team says it's not showing in search. You run site:shop.example.com/product/wireless-mouse-v2 — zero results. You open GSC URL Inspection: status is 'Crawled - currently not indexed'. The page has 180 words of content, the same description as 5 other mouse pages, and an identical canonical tag to the category page. You add 400 words of unique specifications, change the canonical to self-referencing, and submit via GSC. 36 hours later, site: shows the page. The fix took 15 minutes.
Beyond the obvious noindex tag, here are operational failures I have debugged in production:
/product, /product/, /product?id=1, and /category/product. Google picks one and drops the rest. Use canonical consolidation as described in Google's duplicate URL consolidation guide.For agencies managing 50+ client sites, manual checks are untenable. The GSC API allows you to pull index status for up to 2,000 URLs per query. I use a Python script that loops through all URLs in a sitemap, calls the API, and outputs a CSV with columns for status, crawl date, and last indexed date. The bottleneck is the API quota: 2,000 queries per day per property. For larger sites, you need to batch or prioritize pages by traffic.
For a deeper workflow on reindexing after migrations or content updates, see this technical migration protocol for reindexing. It covers the exact sequence of sitemap submission, crawl budget prioritization, and monitoring post-migration.
For agencies, create a shared spreadsheet with each client domain. Use a browser extension or a simple bookmarklet that prepends 'site:' to the current URL. This avoids logging into each GSC account for a quick check. For bulk verification, use the GSC API with a service account that has access to all client properties. Run a daily cron job to export index status for top 100 pages per client.
If you have placed a guest post, check the exact URL using the site: operator first. If absent, open the page in a browser and view the page source. Look for a <meta name='robots' content='noindex'> tag. Many guest post hosts use noindex on contributed content. If no noindex, submit the URL to GSC using the URL Inspection tool and request indexing. Follow up with the host to ensure the page is linked from their sitemap.
Use the Google Search Console API v1 with the 'urlInspection.index' method. You send a POST request to 'https://searchconsole.googleapis.com/v1/urlInspection/index:inspect' with the inspectionUrl parameter. The response includes an 'indexStatusResult' object with a 'verdict' field: 'PASS' means indexed. Quota is 2,000 queries per day per property. For larger lists, use batching via the 'sites.list' and 'sitemaps.list' endpoints to identify unsubmitted URLs first.
In an SEO audit, you typically have a list of backlink source URLs. Use a tool like Screaming Frog SEO Spider with the 'Check Index Status' feature, which queries the Google Custom Search API. Alternatively, export your backlink list from Ahrefs or Majestic, remove duplicates, and run a GSC API batch check. Focus on pages with high authority (DR 50+) that are not indexed — those are wasted link equity.
This is a false negative. First, remove any URL parameters (utm_source, session ids). Second, check if the page is behind a login or paywall. Third, test the bare URL without trailing slash. Fourth, use GSC URL Inspection — it is the source of truth. If GSC also says 'URL is not on Google', check for a canonical tag pointing to a different URL, a noindex in the HTTP header, or a 404 status code returned by the server.
Do not use site: operator — it will time out or return partial results. Instead, export your sitemap URLs and compare them against GSC's 'Submitted URLs' report. Use the GSC API to pull index status for all sitemap URLs in batches of 2,000 per day. Prioritize product pages with traffic, backlinks, or high inventory value. For the rest, use server log analysis to see if Googlebot is crawling them at all.
If a page has a rel=canonical tag pointing to a different URL, Google treats the canonical URL as the indexed version. The original page may or may not be indexed as a duplicate. To check: use GSC URL Inspection on the canonical URL. If that URL is indexed, the page is effectively indexed via the canonical. To verify the actual URL, temporarily remove the canonical tag and re-check after 48 hours.
After a migration, do not trust the site: operator for 2-4 weeks. Google needs time to recrawl and reassociate URLs. Use GSC's Change of Address tool to monitor progress. For specific pages, use the URL Inspection tool and look for the 'Discovered - currently not indexed' status, which is normal during migration. If the status is 'Crawled - currently not indexed' after 4 weeks, check for broken redirects or missing internal links.
You can use third-party tools like Ahrefs Site Explorer, Semrush, or Moz. Paste the URL into their 'Site Explorer' or 'Index Status' feature. These tools have their own index data sourced from Google's API or their crawlers. They are not real-time and may lag by 3-14 days. For a free alternative, use the 'cache:' operator — <code>cache:full-url</code> shows Google's cached version. If no cache, the page is likely not indexed.
Discovered but not indexed means Google knows the URL (via sitemap or link) but hasn't allocated crawl budget to it. Fix: improve internal linking — add links from high-authority pages on your site. Reduce the total number of URLs in your sitemap to under 10,000, prioritizing the most important pages. Increase page loading speed. Remove duplicate or thin pages. Then resubmit the URL via GSC and wait 1-2 weeks.
Quick calculator. Put in the expected monthly value of a page or link batch and the natural waiting time.