Go-Live Clearance

Indexability · noindex

Noindex Checker

The single most common launch accident: <meta name="robots" content="noindex"> left over from staging. Your site is live, but Google never indexes it. Paste the production URL — we detect meta noindex and X-Robots-Tag headers, then stamp CLEARED / HOLD / DENIED.

How to find noindex tags and fix unexpected exclusions

These hide your site from search engines — and the damage accumulates silently until someone checks.

  • meta robots noindex on homepage

    Staging templates often inject noindex. It gets committed, deployed, and your production homepage is invisible to Google.

  • X-Robots-Tag: noindex in response headers

    Server middleware or CDN rules add noindex at the edge. It is invisible in HTML but equally effective at blocking indexing.

  • noindex on subpages only

    Landing pages or blog posts built from a staging template may carry noindex while the homepage is clean.

  • Conditional noindex (env-based) leaking to production

    A NODE_ENV check that flips noindex sometimes fails when the build and runtime environments differ.

Remove noindex — Next.js fixes

The most common Next.js pattern that leaks noindex to production.

app/layout.tsx — remove staging noindex

// ❌ Common staging pattern that ships to production
export const metadata = {
  robots: { index: false, follow: false },
}

// ✅ Remove the property entirely (default is indexable)
export const metadata = {
  // robots is omitted — Next.js defaults to index, follow
}

Conditional noindex via environment (safer)

// app/layout.tsx
export const metadata: Metadata = {
  ...(process.env.NODE_ENV === 'production'
    ? {} // no robots directive = indexable
    : { robots: { index: false, follow: true } }),
}

Remove X-Robots-Tag from middleware

// middleware.ts
// ❌ Don't do this
export function middleware(req: NextRequest) {
  const res = NextResponse.next()
  res.headers.set('X-Robots-Tag', 'noindex')
  return res
}

// ✅ Remove the header entirely for production

Still check by hand

  • Search site:yourdomain.com in Google after launch to confirm indexing
  • Use Search Console URL Inspection to confirm indexing is allowed
  • Check robots.txt separately: robots blocking and noindex are different directives
  • Re-scan after removing noindex — it can take days for Google to re-crawl
  • Keep noindex on private, duplicate, shared-result, and staging URLs when exclusion is intentional

Related