All rules
optional
Rule: robots-not-blockingWeight: 5/100

Rule: robots-not-blocking

A noindex meta robots directive tells Google to never show this page in search results. If it's intentional (thank-you pages, admin panels), that's fine. If it's accidental — left over from staging, or a misconfigured layout — your page silently vanishes from Google. This rule catches pages that are blocking indexation so you can verify the intent.

Run the check
$ npx indxel check
Look for robots-not-blocking in the output

What it checks

Indxel reads the <meta name="robots" content="..."> tag and checks for the values 'noindex' or 'none'. If either value is present, the rule flags it. This doesn't mean it's wrong — some pages should be noindex. The warning is a prompt to verify intent, not an automatic failure. The rule also checks for <meta name="googlebot" content="noindex">.

Thresholds

PASS

No noindex or none directive found in robots meta tag

WARN

noindex or none found — verify this is intentional

Edge cases

1

X-Robots-Tag HTTP header: Indxel checks the meta tag only, not HTTP headers. A server-level X-Robots-Tag: noindex is not detected by the static scanner. Crawl mode may detect it if the header is present in the response.

2

robots.txt disallow: this is separate from meta robots. A page can be allowed in robots.txt but blocked by meta noindex (or vice versa). This rule only checks meta robots.

3

Environment-specific robots: a common pattern is to set noindex in staging via an environment variable. If your build process doesn't correctly strip it for production, pages ship with noindex. This rule catches that.

4

The 'nofollow' directive (without 'noindex') does not trigger this rule. nofollow prevents link equity from flowing but doesn't block indexation.

Configuration

indxel.config.ts
// indxel.config.ts
import { defineSEO } from "indxel";

export default defineSEO({
  rules: {
    "robots-not-blocking": true, // enabled by default
  },
});

// In Next.js, robots is set in metadata:
export const metadata = {
  robots: {
    index: true,   // allow indexing
    follow: true,  // allow following links
  },
};

// Intentional noindex for non-public pages:
export const metadata = {
  robots: {
    index: false,  // intentional — thank-you page
    follow: false,
  },
};

Frequently asked questions

Is robots-not-blocking an error or a warning?

Always a warning. Some pages legitimately need noindex (admin pages, thank-you pages, duplicates). The warning is a prompt to verify intent, not a demand to remove it. If the noindex is intentional, you can suppress the warning by disabling the rule for that page.

How do I find accidental noindex in production?

Run npx indxel check on your live site (crawl mode). The robots-not-blocking rule flags every page with noindex. Review each one to determine if it's intentional. Common culprits: staging configs leaked to production, layout-level robots overrides.

Related rules

canonical-url

critical — 10/100

title-present

critical — 5/100

description-present

critical — 5/100

Validate your SEO now

$npx indxel check
Get startedBrowse all rules
Indxel

SEO validation that runs in your terminal and blocks bad deploys.

GitHubnpm

Product

  • Documentation
  • Pricing
  • Plus Plan
  • CI/CD Guard
  • Indexation
  • Free Tools
  • Blog

Comparisons

  • vs Semrush
  • vs Ahrefs
  • vs Moz
  • vs Screaming Frog
  • All comparisons

Integrations

  • Vercel
  • GitHub Actions
  • Netlify
  • Docker
  • All integrations

Resources

  • Frameworks & use cases
  • Next.js
  • For freelancers
  • For agencies
  • SEO Glossary

Built with care. MIT Licensed.

PrivacyTermsLegalContact