# Noindex and canonical diagnosis worksheet

Manual diagnosis and locally tested fictional example

Use this worksheet to diagnose one URL before assigning a change. Record the intended outcome, capture headers and raw HTML from the same response, and compare the target. Keep intentionally excluded or protected pages intact. The fictional HarborDesk example illustrates response changes; it does not establish Google indexing or canonical selection.

Pack version 1.0 · 16 September 2026. Worksheet version 1.0.

Guide: https://rankecho.io/resources/find/issues/noindex-canonical-conflict

## Part 1 — Diagnosis worksheet and fictional example

Copy this for one URL. Complete the intent and same-response evidence before assigning a change; the HarborDesk case shows the required detail.

# Noindex/canonical diagnosis worksheet

Version 1.0 — one URL, one decision

## Intended outcome
- Exact URL and owner [required]:
- Intended outcome: index as primary / exclude / keep as available equivalent duplicate [required]:
- Preferred representative, if different, and why the bodies are equivalent:
- Public-access boundary; authentication or authorization that must remain:

## Same-response delivery capture
- Exact GET time, requested URL, final URL, status, and content type [required]:
- Every X-Robots-Tag response header, including crawler-specific values [required]:
- Generic robots meta and Google-specific robots meta from raw HTML [required]:
- Every declared canonical and how it was delivered [required]:
- Target status, final URL, directives, and substantive body equivalence:
- Served robots result for the exact crawler and path: allowed / blocked / unknown; source and capture time [required]:

## Indexed inspection
- Exact URL inspection time and indexed status:
- Last crawl shown, user-declared canonical, and Google-selected canonical:
- Canonical-target inspection time and indexed status:
- Fresh or live test result and time, kept separate from indexed information:

## Decision and verification
- Primary hypothesis and narrower alternatives:
- One proposed change, owner, approver, deployment time, and rollback:
- After-delivery GET: final URL, status, headers, raw meta, canonical, and body check:
- Later indexed inspection date and state, or unknown:
- Later impressions, clicks, sessions, and conversions, kept separate without a causal claim:

## Filled fictional example: HarborDesk primary URL
- Intent: https://harbordesk.example/product/exports is the intended public primary page. The example domain is fictional; do not request it over the network.
- Capture: direct in-memory GET on 2026-09-12T03:25:13.397Z returned 200 text/html. The fixture defines no redirect behavior.
- Before directives: X-Robots-Tag noindex; raw HTML meta robots index,follow; raw HTML canonical https://harbordesk.example/product/exports.
- Target and body: the canonical named the same URL. Title, full HTML, and main body were identical before and after.
- Robots: the served fictional policy disallowed /blocked-demo only. The direct requests ignored robots.txt; no crawler-policy evaluator ran.
- Hypothesis: an unintended response header requested exclusion even though HTML declared index and the canonical named the same URL.
- One change: remove only that X-Robots-Tag header. Supply the production owner and location; rollback restores the saved rule.
- After delivery: 200 text/html; X-Robots-Tag absent; meta index,follow and the self-canonical unchanged.
- Unknown: no browser, Googlebot, Search Console, indexing, canonical-selection, ranking, traffic, or conversion test ran. Record those later, separately, if available.

Manual worksheet with a locally tested fictional response. Replace it with owner-approved captures from the real URL before changing delivery.

## Part 2 — What outcome should this URL have?

Write the intended outcome first. A public primary, available equivalent duplicate, excluded preview, and protected route need different controls; status 200 does not decide among them.

Compare a duplicate's meaningful content and purpose with its target. A matching canonical string does not establish equivalence. Escalate private or sensitive routes to the access-control owner.

| URL role | Intended result | Direction |
| --- | --- | --- |
| Public primary | Be eligible for Google | Remove unintended exclusion; preserve approved URL signals. |
| Available equivalent duplicate | Stay available while another URL is preferred | Remove accidental exclusion; preserve approved duplicate handling. |
| Intentionally excluded preview | Stay public but excluded | Preserve noindex; a 200 alone does not make it an error. |
| Private or sensitive route | Require access control | Keep authentication or authorization; noindex is not access control. |


## Part 3 — What did the fictional HarborDesk test establish?

On September 12, 2026, an isolated Hono fixture made eight in-memory page GETs and two robots.txt GETs; all returned 200. It used no network, browser, crawler, Google service, or real HarborDesk system. Extraction matched controlled strings only.

The main changed only by removing an X-Robots-Tag noindex header. The print duplicate changed only from meta noindex,follow to index,follow. The preview and blocked demonstration were byte-identical controls. The receipt shows why headers and URL intent matter; it did not test Google.

| Path | Before | After | What changed |
| --- | --- | --- | --- |
| /product/exports | X-Robots-Tag: noindex; meta index,follow; self-canonical | Header absent; meta and canonical unchanged | Only the response header changed; title, full HTML, and main body were identical. |
| /product/exports?view=print | No X header; meta noindex,follow; canonical to main | Meta index,follow; header and canonical unchanged | Only the meta value changed; its substantive main body matched the main URL. |
| /preview/export-copy | Meta noindex,follow; no canonical | Unchanged | Intentional public-preview exclusion was preserved. |
| /blocked-demo | 200; meta noindex,follow; robots.txt disallow; no canonical | Unchanged | The direct GET ignored robots policy, so the 200 did not test crawler access. |


## Part 4 — Which bounded repair should you hand to the owner?

Tie one change to the declared outcome. Name the rule or template, owner, approver, deployment time, expected response, protected controls, rollback trigger, and restoration step. Bundle another change only when separate evidence requires it.

Remove accidental noindex from an available equivalent duplicate. Leave its canonical unless evidence supports editing it; explicit index is optional.

| Finding | Smallest handoff | Rollback or stop condition |
| --- | --- | --- |
| Primary has accidental noindex | Remove that one meta or X-Robots-Tag rule | Restore it if intent was wrong or delivery regresses. |
| Equivalent duplicate has accidental noindex | Remove the exclusion; retain one target | Restore it if equivalence or availability was misclassified. |
| Target differs in body, status, or access | Stop; resolve intent or equivalence | No directive change until the target is defensible. |
| Intentional exclusion or protected route | Preserve exclusion and access | Stop any change that would expose private content. |

- [Use the rendering repair when paired captures prove it](https://rankecho.io/resources/fix/server-rendering-nextjs)
- [Keep product-content clarity with its owner](https://rankecho.io/resources/fix/product-page-for-ai-search)

## Use this pack

1. Save a copy for one URL. Complete all nineteen fields from current captures and owner-approved intent; retain unknown values explicitly.
2. Compare the target and record crawl access separately. Preserve intentional exclusions and private access, and assign one reversible change with its owner and rollback.
3. Verify the delivered response first. Record later indexed inspection and search or business measures separately; neither the worksheet nor the fictional fixture tests Google.

Inspect a sample fix — https://rankecho.io/sample-fix. Evaluate the Fix Engine — https://rankecho.io/product/fix-engine for bounded changes with human review and manual shipment. Full-page writing is a separate content add-on — https://rankecho.io/pricing/content, not included with the visibility subscription.
