A practical SEO checklist

Meta Robots Checklist

Use this meta robots checklist to compare the indexing and preview instructions in a page’s HTML with its HTTP response headers. Find the setting that creates each directive, fix unintended restrictions and retest the public result. Noindex must be readable by the crawler; a robots.txt block can prevent that. Keep a directive inventory so intentional exclusions survive broader fixes.

Free to useNo account neededSaved in your browser
A page card and a response-envelope card carrying matching directive tags.
An original editorial illustration
Your working checklist

Work through the checklist

Click a square to mark a task as Pass. Click again to undo. Use the result menu for a problem, a blocker or a task that does not apply. You do not need to enter notes.

14 checks

Find Every Directive Applied to the Page

A robots meta tag is an HTML instruction for supported indexing and preview behavior. X-Robots-Tag carries those instructions in an HTTP response header. Check both because a page setting does not cancel a restrictive rule elsewhere.

Choose the intended search behavior for each URL type

Create a useful inventory before changing settings.

Use this for: HTML pages and non-HTML files in the review.

Choose representative URLs for public pages, intentional search exclusions and downloadable files. For each, decide whether it should be eligible for search and whether previews need limits. Add the responsible CMS/template or server owner to your existing tracker if useful. Keep private material behind access control; a noindex setting only concerns search results.

Example

Illustrative inventory: /services/ should be eligible; /thank-you/ should remain public but excluded; /downloads/draft.pdf should be excluded through its own HTTP header. None of these examples is an observed test.

  1. Select representative URL types and one real URL for each.
  2. Choose the expected index and preview behavior.
  3. Confirm the intended behavior with the person responsible for that content.
More help and optional notesHigh · Website owner or developer
PassEach sampled URL has a clear intended search behavior and implementation owner.
FailDirectives are being changed without knowing which pages should remain eligible or excluded.

If it fails: Agree the purpose of each URL before making a broad template change.

Retest: Confirm the intended behavior with the person responsible for that content.

Not applicable: This applies to every directive review with public URLs in scope.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Read robots tags in the initial HTML response

Find what the server sends before JavaScript runs.

Use this for: HTML pages in scope.

Open Chrome Developer Tools → Network, reload the page and select the main document. In Response, search for name="robots", name="googlebot" and name="googlebot-news", allowing for different quote styles and capitalization. Read every matching content value. In your CMS or template, keep authored meta tags in the head. An absent robots tag is not automatically an error; default permission does not guarantee indexing.

Example

Illustrative output: <meta name="robots" content="noindex"> excludes this page once Google can fetch and process it. A second tag saying index does not cancel it.

  1. Reload the page with Network recording and open its document Response.
  2. Find all general and relevant crawler-specific robots meta tags.
  3. Compare their combined meaning with the expected behavior.
More help and optional notesHigh · Website owner or developer
PassThe initial HTML directives are understood and match the intended behavior.
FailThe initial document contains an unintended restriction or a conflicting tag.

If it fails: Correct the CMS or template that generates the unwanted tag and inspect the public response again.

Retest: Compare their combined meaning with the expected behavior.

Not applicable: The resource is not HTML; inspect its HTTP headers instead. An HTML page with no robots tag can Pass if that matches the intention.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Inspect every X-Robots-Tag response header

Catch directives that page source cannot show.

Use this for: All sampled URLs, including PDFs.

In the Network panel, select the actual page or file request and open Headers → Response Headers. Read every X-Robots-Tag value, including crawler-specific ones. Follow the redirect to the final content response when present. Header rules may come from the application, web server or CDN. A meta tag cannot override an applicable noindex response header.

Example

Illustrative conflict: the HTML says index, follow while the response contains X-Robots-Tag: noindex. Google still receives the noindex restriction.

  1. Open the final content request in Network.
  2. Read all X-Robots-Tag response values and their crawler scope.
  3. Compare the header and HTML restrictions with the intended result.
More help and optional notesHigh · Website owner or developer
PassAll applicable header directives have been checked and match the URL’s intended behavior.
FailAn unexpected header adds noindex or another unwanted restriction.

If it fails: Remove or narrow the responsible server, application or CDN rule rather than adding a conflicting HTML tag.

Retest: Compare the header and HTML restrictions with the intended result.

Not applicable: This applies to every sampled response. Finding no X-Robots-Tag can Pass when no header restriction is intended.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Compare initial and rendered directives on JavaScript pages

Detect tags that change after scripts run.

Use this for: Pages whose head or content is altered by JavaScript.

Compare the Network document response with the current head in DevTools → Elements. With Search Console access, use URL Inspection → Test live URL and inspect the tested page’s HTML. If the initial response contains noindex, do not rely on JavaScript to remove it: Google may skip rendering that page. Fix the initial response or CMS setting instead.

Example

Illustrative failure: the server sends noindex, then a client script replaces it with index. The browser’s final head looks open, but Google may stop before running that script.

  1. Inspect the initial document robots tags.
  2. Compare them with the rendered head and available live-test HTML.
  3. After any correction, retest both initial and rendered output.
More help and optional notesHigh · Website owner or developer
PassInitial and rendered directives consistently express the intended policy.
FailJavaScript introduces an unintended restriction or tries to undo initial noindex.

If it fails: Move the intended policy into the initial server response and remove contradictory script behavior.

Retest: After any correction, retest both initial and rendered output.

Not applicable: The site does not change these directives with JavaScript.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Fix Noindex and Header Rules at Their Source

Noindex only works when the crawler can retrieve it. Remove accidental exclusions from eligible pages, keep deliberate exclusions readable, and scope file rules so a fix does not affect unrelated content.

Set the page’s indexing choice in the CMS or head template

Make the intended edit without changing unrelated pages.

Use this for: HTML pages whose indexing preference needs correction.

In WordPress with Yoast SEO, open the specific page, then Yoast SEO → Advanced. Use the setting that asks whether search engines may show the content in results: No requests noindex; Yes removes that page-level exclusion, subject to other rules. Save or update the page. For a code-managed page, set or remove <meta name="robots" content="noindex"> in the head template for that exact route. Check the public output after either method.

Example

Illustrative change: keep /thank-you/ set to No, but change an accidentally excluded /services/ page to Yes. Do not switch an entire content type just to fix one page.

  1. Open the specific page’s SEO setting or its head template.
  2. Apply the intended page-level choice and save the scoped change.
  3. Reload the public page and verify the HTML and response headers together.
More help and optional notesHigh · Website owner or developer
PassThe saved setting produces the intended public directives for the target page.
FailThe output still contains an unintended restriction or the edit changes unrelated pages.

If it fails: Correct the responsible template or additional header rule and recheck the target plus an unaffected neighbor.

Retest: Reload the public page and verify the HTML and response headers together.

Not applicable: No HTML page-level indexing setting needs correction.

Keep in mind: The CMS path is documentation-verified, not a claim that we tested your installation. Labels and available controls can vary.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Resolve conflicting and crawler-specific restrictions

Evaluate the effective directive rather than the friendliest tag.

Use this for: Pages with multiple tags, headers or crawler-specific directives.

Read general robots directives together with any applicable crawler-specific ones. Google combines negative rules and uses the more restrictive instruction when they conflict. Thus index cannot cancel noindex, and max-snippet:160 cannot cancel nosnippet. Find the plugin, template or response rule that adds the unintended restriction and change that source. Removing one copy is not enough if another remains.

Example

Illustrative combination: robots says nofollow and googlebot says noindex. Googlebot receives noindex, nofollow. Unlike robots.txt group selection, the general negative rule still contributes here.

  1. List all relevant meta and header values for the same response.
  2. Work out the combined restrictions for the intended crawler.
  3. Remove only unintended rules, then inspect all directive locations again.
More help and optional notesHigh · Website owner or developer
PassThe effective combined directives match the intended behavior for each relevant crawler.
FailA conflicting or overlooked directive still restricts the URL unexpectedly.

If it fails: Correct each responsible source; do not try to override a negative instruction with index or follow.

Retest: Remove only unintended rules, then inspect all directive locations again.

Not applicable: The URL has no multiple or conflicting general, crawler-specific or header directives to resolve.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Keep public noindex pages available for crawler retrieval

Let the search engine read the exclusion instruction.

Use this for: Public pages or files intentionally using noindex.

Test the exact URL against the relevant robots.txt rules and confirm its public content response can be fetched. If robots.txt blocks it, Google cannot read its HTML or X-Robots-Tag instruction. For a public exclusion, retain noindex and correct the accidental crawl block. If the material is private, use authentication or remove public access rather than opening it for crawlers.

Example

Illustrative conflict: /thank-you/ contains noindex but robots.txt disallows /thank-you/. The noindex is present in the file, yet unavailable to the crawler.

  1. Confirm the intended noindex is in the served page or file response.
  2. Check the URL’s crawl access and current response.
  3. Retest both access and the directive after resolving an accidental block.
More help and optional notesHigh · Website owner or developer
PassThe public excluded resource is crawlable and returns the intended noindex.
FailA robots restriction or fetch problem prevents the required directive from being read.

If it fails: Fix public crawl access while keeping the exclusion; preserve authentication for private resources.

Retest: Retest both access and the directive after resolving an accidental block.

Not applicable: No public page or file in this scope intentionally uses noindex.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Set noindex on the PDF response when that file needs exclusion

Control the file itself rather than only its linking page.

Use this for: PDFs or other non-HTML resources that should remain public but out of search.

Ask the developer to add X-Robots-Tag: noindex to the actual file response through the application, server or CDN configuration. Scope the rule to the intended file or directory before considering a sitewide extension rule. A noindex tag on the HTML download page does not automatically apply to the linked PDF. Keep the file crawlable so the header can be read.

Example

Illustrative request: add X-Robots-Tag: noindex only to /downloads/draft-catalog.pdf. Leave /downloads/product-manual.pdf eligible if it serves a useful public search purpose.

  1. Identify the exact file URL and the system serving its response.
  2. Apply a narrowly scoped header rule in the normal configuration.
  3. Fetch the file and an unaffected neighboring file to verify the intended header scope.
More help and optional notesHigh · Developer
PassThe intended non-HTML response carries noindex and unaffected files retain their intended policy.
FailOnly the linking page is excluded, the file is crawl-blocked, or a broad rule excludes useful files.

If it fails: Move or narrow the header rule on the actual file response and restore its required crawl access.

Retest: Fetch the file and an unaffected neighboring file to verify the intended header scope.

Not applicable: No non-HTML resource needs an indexing-directive review.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Set Preview Limits Only for a Clear Reason

Preview directives limit particular uses of the content. They do not make it private or guarantee how a result will look. Choose restrictions deliberately because they can reduce the text or media available in search previews.

Choose supported text, image and video preview settings

Match preview limits to the content owner’s actual preference.

Use this for: Pages that need explicit preview limits or have unexplained restrictions.

Inspect the current robots values before adding more. For Google, max-snippet sets a character limit; 0 acts like nosnippet and -1 removes that numeric limit. max-image-preview accepts none, standard or large. max-video-preview uses seconds; 0 allows at most a static image, while -1 sets no limit. A limit is permission, not a promise of a preview. Separate structured-data or licensing permissions may affect permitted uses. Google’s noarchive and nositelinkssearchbox rules are now ignored; do not rely on them for current Google behavior.

Example

Illustrative choice: max-snippet:160, max-image-preview:large, max-video-preview:0 allows a limited text preview and a large image, with at most a static video image. An additional nosnippet overrides the text allowance and prevents video previews.

  1. Identify any required preview restriction and its intended engine.
  2. Set supported values in the responsible meta tag or header; remove accidental restrictive duplicates.
  3. Inspect the served values and confirm their combined meaning matches the chosen policy.
More help and optional notesMedium · Website owner or developer
PassThe effective supported preview settings match an intentional policy.
FailInvalid, obsolete or conflicting values are relied on for behavior they cannot provide.

If it fails: Replace unsupported or accidental rules with documented controls for the intended engine.

Retest: Inspect the served values and confirm their combined meaning matches the chosen policy.

Not applicable: No explicit preview policy or existing preview restriction needs review.

Keep in mind: Separate structured-data permissions or licensing can affect permitted uses. Do not use preview controls as access control.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Exclude only the text passage that needs snippet control

Keep a page-level restriction from hiding more preview text than intended.

Use this for: HTML pages where a particular text passage should not appear in Google snippets.

Wrap the intended text in a valid span, div or section with the data-nosnippet attribute. Keep the rest of the page available if a whole-page nosnippet is not wanted. The attribute is boolean: data-nosnippet="false" still applies, so remove the attribute to turn it off. Avoid adding or removing it from an existing node after rendering begins; include it when the element is created.

Example

Illustrative markup: <span data-nosnippet>Temporary member message</span>. This limits snippet extraction from that text; it does not hide the message from page visitors.

  1. Identify the exact text that needs snippet exclusion.
  2. Add data-nosnippet to a supported HTML wrapper with valid closing tags.
  3. Inspect initial and rendered markup to confirm the exclusion covers only the intended passage.
More help and optional notesMedium · Website owner or developer
PassThe intended passage is inside a valid supported wrapper and unrelated copy remains outside it.
FailA malformed wrapper captures extra text or a false value is mistakenly treated as disabling the attribute.

If it fails: Correct the wrapper or remove the attribute entirely where the restriction is unwanted.

Retest: Inspect initial and rendered markup to confirm the exclusion covers only the intended passage.

Not applicable: No passage-specific snippet restriction is required.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Retest Production After Template and Settings Changes

Verify what the public site serves, including deliberately excluded neighbors. An updated CMS screen is only the beginning of the check; the final response is the evidence.

Check production for inherited staging exclusions

Catch a sitewide setting before it hides important public pages.

Use this for: Launches, migrations or shared-template/configuration changes.

On a production site intended for search, check any environment-wide noindex setting alongside page settings and headers. In WordPress, review Settings → Reading → Discourage search engines from indexing this site. Clear an unintended production-wide exclusion, while retaining authentication or the chosen protections on staging. Do not remove every noindex indiscriminately; intentional utility-page exclusions still belong.

Example

Illustrative regression sample: homepage and service page should be eligible, while /thank-you/ remains noindex. A safe production fix preserves that difference.

  1. Compare production environment settings with the intended launch policy.
  2. Correct any inherited global exclusion at its source.
  3. Inspect a public page from each affected template and an intentionally excluded control URL.
More help and optional notesCritical · Website owner or developer
PassProduction public templates have the intended directives and deliberate exclusions remain intact.
FailA staging/global restriction affects intended public pages or a broad fix removes necessary exclusions.

If it fails: Correct the environment or template scope and repeat the representative checks.

Retest: Inspect a public page from each affected template and an intentionally excluded control URL.

Not applicable: There is no launch, migration or shared environment/template change in this review.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Verify the changed response and then the search-engine record

Separate a directive repair from confirmed indexing changes.

Use this for: Any page whose directive was added, removed or narrowed.

Reload the exact public URL and inspect its final status, response headers, initial HTML and relevant rendered HTML again. In Search Console, compare Test live URL with the indexed result and last crawl date. A live test can show the corrected directive before the indexed record changes. Keep actual indexing or removal pending until fresh search-engine evidence supports it; do not keep changing a correct tag merely because processing is incomplete.

Example

Illustrative result: the live service page no longer has noindex, but its indexed record still refers to yesterday’s crawl. The implementation is corrected; indexing is not yet confirmed.

  1. Repeat the same response and directive checks used before the edit.
  2. Run the available live inspection and compare it with the indexed record.
  3. After a fresh crawl, revisit the record and confirm the intended indexing state or investigate the remaining reason.
More help and optional notesHigh · Website owner or developer
PassThe served directives are correct; any claimed search-engine change is supported by a fresh record.
FailFresh output still contradicts the intention, or an old index record is presented as proof of a completed change.

If it fails: Fix a remaining output error or leave the engine-processing outcome pending until current evidence is available.

Retest: After a fresh crawl, revisit the record and confirm the intended indexing state or investigate the remaining reason.

Not applicable: No indexing or preview directive has changed in this review.

Keep in mind: Eligibility, a live test and a recrawl request do not guarantee indexing or rankings.

Optional: sample URL, expected result, observation date or a reminder. Keep confidential data out of shared exports.

No result recorded yet.

Changing this result updates your checkmark and progress immediately. Notes are optional.

Reset this checklist?

This removes saved statuses, evidence and result dates for the checks on this page. Other checklists keep their records. Export a CSV first if you need a copy.

A useful result, every time

Check a task. Choose a result.

This is a manual SEO workflow. It helps you decide what to investigate and keep a usable record. It does not crawl your website or verify your answers automatically.

  1. Choose your scope. Pick the relevant task group and representative pages you are authorized to inspect.
  2. Run the stated check. Follow the steps, then choose your result. Click the square for Pass, or use the result menu for another status. You do not need to type anything.
  3. Assign the next action. Fix a problem when you can, or ask the right person for help. Optional notes can remind you what to do next. Check the result again after a fix.

What your progress means

Review progress counts passes and failures against applicable checks. Failed work still counts as reviewed. Blocked and untested checks remain unfinished. This is not an SEO score.

Untested
You have not checked this yet.
Pass
You checked it and it works as described.
Fail
You checked it and found something to fix.
Blocked
You need access, information or someone’s help.
Not applicable
This task does not apply to your website.

Export CSV downloads the checks currently shown and any optional notes. Print expands the instructions for that view. Saved results stay in this browser; there is no account sync.

Apply the workflow

How do you interpret directives when the checks disagree?

Use the examples to decide which rule needs changing, then move to crawlability or indexability only when that is the remaining issue.

Use a Directive Inventory to Choose the Fix

This hypothetical inventory shows how to combine the evidence you collect. None of the rows is a live measurement. Add the actual URL, crawler, observation date and responsible system to your own working record if useful.

“Eligible” describes the intended permission, not a guarantee that the page will be indexed. The examples assume the crawler can fetch the final resource; when access is blocked, fix that dependency before claiming the directive has been read.

Illustrative inventory: expected interpretations, not observed tests
URLIntended useHTML directiveX-Robots-TagEffective Google restrictionNext action
/services/Eligible for searchrobots: index, follownoindexNoindex restricts the pageRemove unintended header; adding another index tag cannot cancel it.
/thank-you/Public, excluded from searchrobots: noindexNoneNoindex, if fetchableKeep crawl access so the directive can be read.
/downloads/draft.pdfPublic file, excludedNot HTMLnoindexNoindex, if fetchableApply the header on the PDF response itself.
/guides/solar/Eligible, limited text previewrobots: max-snippet:160nosnippetNo text snippet or video previewRemove nosnippet only if it conflicts with the intended preview policy.
/guides/compare/Eligible for Google, normal navigationrobots: nofollow; googlebot: noindexNoneGooglebot: noindex, nofollowCorrect both unintended negative directives at their sources.

Noindex Checklist: Confirm the Directive Can Be Read

For a public page you want excluded, publish noindex in its HTML or actual response header and leave crawl access available. For an intended search page, remove every accidental applicable noindex, including a server/CDN copy. Adding index does not override noindex.

For a private document, keep access control in place. A public URL can remain accessible to people even when a search engine has processed its noindex. The exclusion and privacy decisions are separate.

Nofollow Checklist: Choose the Right Scope

Use a page-level nofollow only for an intended page-wide instruction. For a particular paid or user-generated link, apply the relevant rel value to that anchor. A page-level nofollow does not mean noindex.

A linked URL can still be discovered through another page or sitemap. If useful content depends on one page’s links for discovery, check its broader internal path rather than treating a robots tag as the entire crawlability review.

Nosnippet Checklist: Check the Actual Preview Scope

Google’s nosnippet prevents text snippets and video previews; a static image thumbnail may still appear. It also prevents the content from being used as direct input for Google AI Overviews and AI Mode. That is a Google-specific documented control, not a claim about every AI service.

Use max-snippet for a text limit and data-nosnippet for a particular passage when those narrower choices fit. Review separate structured data and licensing permissions before assuming preview limits cover every permitted use. Do not use noarchive as a current Google cache-removal control; Google no longer uses that rule.

Continue from Directives to Indexability

Finish this meta robots audit checklist with an inventory of intended directives, resolved conflicts and pending engine checks. A correct directive is one part of the page’s search eligibility; status, canonical selection and other evidence may still explain an indexing problem.

A clear process, with honest limits.

Follow the steps, choose the result that matches what you found, and check again after changes. Notes are optional. A completed check does not guarantee indexing, traffic or rankings. How the checklists work.