---
title: "Free noindex checker for meta tags and headers | SEO Skill"
description: "Check any URL for noindex in meta tags, the X-Robots-Tag header and robots.txt. See which rule Google follows and how to fix it."
canonical: "https://seoskill.dev/tools/noindex-checker"
language: "en"
---

# Noindex checker

Enter a URL to see whether Google is allowed to index it, which rule says so and how to change it. It checks the robots meta tag, googlebot tags, the X-Robots-Tag header, robots.txt, redirects, the status code and the canonical.

### What each signal says

### Checks and fixes

### Every response on the way

## Five places a noindex can hide

Most noindex checkers read one meta tag. Google reads five things before it decides, and a page is out of the index if any one of them says so. The most restrictive rule wins.

| Where | What it looks like | Who sets it |
| --- | --- | --- |
| Robots meta tag | `<meta name="robots" content="noindex">` | The template, CMS or SEO plugin |
| Googlebot meta tag | `<meta name="googlebot" content="noindex">` | The same, aimed at Google only |
| X-Robots-Tag header | `X-Robots-Tag: noindex` | The server, CDN or hosting platform |
| unavailable\_after | `unavailable_after: 2026-12-31` | Anyone who set an expiry and forgot it |
| robots.txt | `Disallow: /blog/` | Not a noindex, but it hides one from Google |

The header is the one people miss. It never shows in view source, so a page can look clean and still be out of Google. Vercel, for example, adds `X-Robots-Tag: noindex` to every preview deployment.

## robots.txt hides the noindex from Google

This is the mistake that keeps pages in Google after someone tries to remove them. Google's [noindex documentation](https://developers.google.com/search/docs/crawling-indexing/block-indexing) says the page "must not be blocked by a robots.txt file", because a crawler that cannot fetch the page "will never see the noindex rule, and the page can still appear in search results".

In Search Console that shows up as **Indexed, though blocked by robots.txt**. The fix runs in an order that feels backwards: allow crawling, let Google see the noindex and drop the page, and only then block it in robots.txt if you still want to save crawling.

## Read the result

| Result | What it means | What to do |
| --- | --- | --- |
| No noindex found | Google is allowed to index the page. | If it is still missing from Google, check URL Inspection. Allowed is not the same as indexed. |
| Noindex found | Google will drop the page when it next crawls it. | Keep it if the page should stay out. Otherwise remove the rule the checker names. |
| Blocked by robots.txt | Google cannot crawl the page, but can still list the URL from links. | Remove the rule if the page should rank. Use noindex if it should not. |
| Noindex found, but Google cannot see it | The noindex never takes effect. | Remove the robots.txt rule first, so Google can read the noindex. |
| The page returns 404, 410 or 5xx | Google drops it for the status, noindex or not. | Restore the page or redirect it if it should exist. |

A noindex is not a fault on its own. Login pages, internal search results, thank you pages and filtered lists often should be out of Google. The question is whether you meant it.

## Find where an accidental noindex comes from

The value tells you which layer wrote it. When the checker can tell the platform from the page, it names the setting to change.

-   **WordPress.** Settings, then Reading, then "Discourage search engines from indexing this site". It prints `noindex, nofollow` on every page, and it travels with a staging database copied to production.
-   **SEO plugins.** Yoast and Rank Math noindex whole content types and archives from one setting, and drop them from the sitemap at the same time.
-   **Shopify.** A conditional noindex in `theme.liquid`, the `seo.hidden` metafield, or an Unlisted product.
-   **Webflow.** The Sitemap indexing toggle in page settings adds the meta tag.
-   **Next.js.** A page that calls `notFound()` after streaming starts keeps a 200 status and gets a noindex tag.
-   **Servers and CDNs.** A header rule in nginx, Apache, `.htaccess`, Netlify's `_headers` or a CDN. Only the header shows it.

## Noindex and canonical ask for different things

A noindex says leave this page out. A canonical pointing at another URL says this is a copy, index that one instead. Google's [duplicate URL guide](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) advises against noindex for choosing a canonical, "because it will completely block the page from Search". For a duplicate, use the canonical alone. For a page that should not be in Google at all, use noindex and let the canonical point at the page itself.

## JavaScript can add a noindex but not reliably remove one

The checker reads the HTML your server sends, before any script runs. Google's [JavaScript guide](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) says a script can add a robots tag, but when the first HTML already says noindex, Google "may skip rendering", so a script that removes it may never run. Put the right value in the server HTML.

## Get a noindexed page back into Google

1.  Remove the rule the checker names, and check again here until it says no noindex found.
2.  Make sure the URL is in your XML sitemap and linked from a page Google already visits.
3.  In Search Console, open URL Inspection, run Test live URL, and check "Indexing allowed?" says yes.
4.  Press Request indexing. A page Google crawls often can come back within days. One it rarely visits can take weeks.

## Check every page and Google's own index with your agent

This page checks one URL from the outside. Two questions it cannot answer: which other pages carry a noindex, and whether Google has actually dropped them. The [seo crawl](https://seoskill.dev/docs/crawl) command lists every noindex, robots.txt block and canonical on a site from your own machine. The [seo page](https://seoskill.dev/docs/page) command adds Google's own URL Inspection result for a page, through your Search Console. Ask:

```
Crawl example.com and list every page that has noindex or is blocked by robots.txt, then check which of them still get impressions in Search Console
```

Install the CLI and run setup:

```
npm i -g seo && seo start
```

Or add the hosted MCP server to your agent and sign in with Google:

Run it in a terminal, then sign in with Google.

Or run it on your machine

Installs the CLI, signs you in and adds the skill to your agents. Site crawls and Bing data run this way, on your own machine. A crawl fetches many pages, and Bing blocks our hosted server.

Once a page is indexable again, [Index My Site](https://indexmysite.app/) can submit it to Google for you. We build it too.

## Noindex checker questions
