Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.
SEOMedium

Make important pages indexable

Identifies important pages blocked from search engine indexing by noindex, robots.txt, or other directives

Utilities
Quick take
Typical fix time 10 min
  • Verify that pages you want ranked are not blocked by `noindex`, robots.txt, or `X-Robots-Tag` headers
  • Test indexability with Google Search Console's URL Inspection tool — 'URL is on Google' confirms indexing
  • Common accidental blocks: staging environments promoted to production, CMS default noindex settings, and overly broad robots.txt Disallow rules
Why it matters: A page blocked from indexing cannot appear in search results, regardless of its content quality or backlinks. Accidentally blocking key landing pages, product pages, or blog posts is one of the most impactful technical SEO errors — often silently losing significant organic traffic.

Rule Details

For a page to appear in Google Search, it must be crawlable and indexable. Google's indexing controls guide (opens in new tab) and your broader robots meta strategy both matter here, because three separate mechanisms can block indexing: noindex meta tags, X-Robots-Tag HTTP headers, and robots.txt rules.

Code Examples

❌ Avoid — important page accidentally noindexed

<!-- Product page that should rank in search -->
<meta name="robots" content="noindex, nofollow">
<!-- This page will never appear in Google Search -->

❌ Avoid — Next.js metadata with indexing disabled

// app/products/[slug]/page.tsx — accidental noindex
export const metadata = {
  robots: {
    index: false,   // This blocks indexing for ALL product pages!
    follow: false,
  },
}

✅ Correct — indexable page (no noindex)

<!-- Default: no meta robots tag = index, follow -->
<!-- Or be explicit: -->
<meta name="robots" content="index, follow">

✅ Correct — Next.js metadata enabling indexing

export const metadata = {
  // For pages you want indexed, either omit 'robots' or set explicitly:
  robots: {
    index: true,
    follow: true,
  },
}

✅ Limiting noindex to genuinely private content

// pages/api/preview-post.ts — only noindex preview/draft pages
export async function generateMetadata({ params }) {
  const post = await getPost(params.slug)
 
  return {
    robots: post.published
      ? { index: true, follow: true }
      : { index: false, follow: false },  // Draft only
  }
}

✅ Testing indexability

# Check X-Robots-Tag header
curl -I https://yoursite.com/important-page | grep -i 'x-robots'
 
# Check meta robots in HTML
curl -s https://yoursite.com/important-page | grep -i 'robots'

Why It Matters

  • No index = no ranking: A page with noindex cannot appear in search results under any circumstances.
  • Common accidents: CMS platforms often default new pages to noindex (e.g., draft mode, staging environments accidentally promoted, category pages in WordPress).
  • Silent failure: Indexing blocks cause no visible errors on the frontend. Only Google Search Console (opens in new tab) or log analysis reliably surfaces the problem, and those same checks help uncover indexability conflicts.

The Three Indexing Mechanisms

MechanismScopeWho reads it
<meta name="robots" content="noindex">Single pageCrawlers that fetched the page
X-Robots-Tag: noindex HTTP headerSingle resourceCrawlers that fetched the resource
robots.txt DisallowURL patternCrawlers before fetching

Exceptions

  • Staging, utility, login, account, or internal search pages may intentionally use different crawl or index signals if they are not meant to rank.
  • Temporary migration states can produce noisy intermediate signals; flag the live production URL pattern, not one-off transition artifacts.
  • When redirects, canonicals, robots directives, or indexability signals conflict, fix the strongest final signal first instead of reporting every downstream symptom as a separate blocker.

Standards

  • Use these references as the standard for the final search-facing HTML, metadata, and crawl behavior.
  • Check the implementation against Google Search Central: Prevent Google from indexing pages before treating the rule as satisfied.
  • Check the implementation against Google Search Central: Robots meta tag before treating the rule as satisfied.

Verification

Automated Checks

  • Use Google Search Console Coverage report → "Excluded" tab to find pages marked "Indexed, though blocked by robots.txt" or "Noindex page".
  • Use URL Inspection in Search Console for specific URLs.

Manual Checks

  • Export your top 50–100 pages by importance (traffic, revenue, links).
  • For each, check: meta robots, X-Robots-Tag header, robots.txt.
  • Fix blocks and request re-indexing.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

For each important page (homepage, key landing pages, product pages, top blog posts): (1) Check `<meta name='robots' content='...'>` — does it contain `noindex`? (2) Check `X-Robots-Tag` HTTP response header — does it contain `noindex`? (3) Check robots.txt — is the URL's path blocked by a Disallow rule? (4) In Google Search Console, use URL Inspection to confirm the page is indexed. Flag any important page with any form of noindex or robots.txt block.

Fix

Auto-fix issues

1. For pages with `<meta name='robots' content='noindex'>`: - Remove the noindex tag entirely, or change to `content='index, follow'`. - In Next.js: remove the `robots: { index: false }` from the page's metadata. 2. For pages with `X-Robots-Tag: noindex` HTTP header: - Remove the header in your server config (Nginx, Apache, CDN rules). - In Vercel: check `vercel.json` headers configuration. 3. For pages blocked by robots.txt: - Remove or narrow the Disallow rule. - Test with Google's robots.txt tester in Search Console. 4. After removing blocks, request indexing in Google Search Console (URL Inspection → Request Indexing). 5. Monitor the Coverage report over the following weeks to confirm the page moves to "Indexed".

Explain

Learn more

A page that cannot be crawled or indexed cannot rank, no matter how good its content or how many links point to it. Google explicitly states that `noindex` and robots.txt blocks prevent pages from appearing in search results. Accidental indexing blocks are among the most common causes of sudden, unexplained drops in organic search traffic.

Review

Code review

Parse every page's HTML for `<meta name='robots'>` or `<meta name='googlebot'>` tags containing `noindex`. Check HTTP response headers for `X-Robots-Tag` with `noindex`. Cross-reference with robots.txt Disallow patterns. Flag any route in the application where `noindex` is set unconditionally (rather than conditionally for draft/private content).

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

建立及提交 robots.txt 檔案 | Google 檢索基礎架構  |  Crawling infrastructure  |  Google for Developers

robots.txt 檔案位於網站的根目錄。歡迎參閱本文,瞭解如何建立 robots.txt 檔案、查看範例,並瀏覽 robots.txt 規則。

Google for DevelopersGuide
Блокировка индексирования при помощи директивы noindex | Центр Google Поиска  |  Documentation  |  Google for Developers

Тег noindex запрещает Google индексировать страницу и показывать ее в результатах поиска. Здесь рассказывается, как использовать этот инструмент.

Google for DevelopersGuide

Rules that often go hand-in-hand with this one.

Avoid conflicting indexability signals

Detects conflicting signals between robots.txt, meta robots, X-Robots-Tag headers, and canonical tags

SEO
Set robots meta directives correctly

Checks robots meta tag for valid indexing directives in the page head.

SEO
Robots Meta Conflict

Detects pages blocked by robots.txt that also carry noindex meta tags, creating a paradox where the directive is never read.

SEO
Schema + Noindex Conflict

Detects pages that carry rich result schema markup but are blocked from indexing via noindex or robots.txt.

SEO

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385