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 productionStill 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
- robots.txt checker — Disallow:/ is the other index killer
- Forgot noindex in production — full troubleshooting guide
- Sitemap checker
- Website launch checklist
- Methodology
- Go-Live Clearance home