All 99 checks, by area
Docket runs 99 checks across 13 areas. This list is
generated from the shipped build, so it cannot drift from what the tool actually does — run
docket checks and you will get the same list.
Each check produces a finding only when there is something to report, and each finding carries what it costs you, how much work the fix is, and the markup to paste. Areas that do not apply to a site — local business checks on a pure SaaS product, for instance — are marked not applicable rather than scored as passing.
AI search visibility (10)
- Citable, specific claims
ai.citable_facts - AI crawler access
ai.crawler_access - Dead AI crawler directives
ai.dead_crawler_directive - Server access for AI crawlers
ai.edge_access - Entity definition and sameAs
ai.entity - Answer extractability
ai.extractability - Dates AI engines can read
ai.freshness_signal - llms.txt
ai.llms_txt - Content reachable without JavaScript
ai.rendering - The AI control nothing can detect
ai.unmeasurable_optout
Brand consistency (6)
- Logo presence and markup
brand.logo - Brand name consistency
brand.name_consistency - Consistent positioning statement
brand.positioning - Social profile consistency
brand.social_consistency - Typography and colour consistency
brand.visual_consistency - Writing voice consistency
brand.voice_consistency
Content quality (11)
- Generic AI-sounding copy
content.ai_slop - Pages competing with each other
content.competing_pages - Freshness signals
content.dates - Trust and authorship signals
content.eeat - JavaScript-dependent content
content.js_rendering - Declared page language
content.lang_mismatch - Language coverage
content.language_scope - Placeholder content
content.placeholder - Readability
content.readability - Thin content
content.thin - Topics worth writing about
content.topic_gaps
Conversion & landing pages (9)
- Published email addresses that cannot receive mail
cvr.dead_contact - Form friction
cvr.form_friction - Funnel coverage
cvr.funnel - Title / headline consistency
cvr.message_match - Calls to action
cvr.no_cta - Pricing transparency
cvr.pricing - Social proof
cvr.social_proof - Phone links that will not dial
cvr.unusable_phone - Above-the-fold value proposition
cvr.value_prop
Crawlability & indexing (19)
- Broken pages (4xx/5xx)
index.broken - Googlebot's 2MB fetch limit
index.byte_cap - Canonical tags
index.canonical - Conflicting canonical tags
index.canonical_conflict - Click depth and orphans
index.depth - Duplicate pages
index.duplicate_content - Client-side redirects
index.meta_refresh - Pages blocked from indexing
index.noindex - Redirect problems
index.redirects - robots.txt blocks the whole site
index.robots_blocks_all - XML sitemap
index.sitemap - Soft 404 handling
index.soft_404 - Soft 404 pages in the crawl
index.soft_404_pages - URL structure
index.url_hygiene - www / apex canonicalisation
index.www - hreflang language codes
intl.hreflang_codes - hreflang return tags
intl.hreflang_return - hreflang self-reference
intl.hreflang_self - hreflang target health
intl.hreflang_targets
Links (7)
- Broken outbound links
links.broken_external - Insecure internal links
links.http_on_https - Internal linking
links.internal_volume - Internal linking
links.money_page_weak_inlinks - Navigation reachable without JavaScript
links.nav_not_in_html - Outbound link handling
links.outbound_quality - Pagination handling
links.pagination
Local business SEO (6)
- Local business detection
local.applicable - Contact and conversion signals
local.contact_signals - Location targeting in content
local.geo_targeting - NAP consistency
local.nap - Review signals
local.reviews - LocalBusiness schema
local.schema
Tracking & campaign readiness (6)
- Advertising pixels
mar.ad_pixels - Analytics installed
mar.analytics - Consent and privacy compliance
mar.consent - Email list building
mar.email_capture - Marketing stack inventory
mar.stack - UTM tagging hygiene
mar.utm_hygiene
On-page SEO (6)
- Internal link anchor text
onpage.anchors - Meta descriptions
onpage.description - Heading structure
onpage.headings - Image optimisation
onpage.images - Language and viewport declarations
onpage.lang - Title tags
onpage.title
Speed & Core Web Vitals (7)
- Layout shift risk
perf.cls_risk - Compression and caching headers
perf.compression - Image formats
perf.modern_images - Page weight
perf.page_weight - Redirect latency
perf.redirect_cost - Render-blocking resources
perf.render_blocking - Server response time
perf.ttfb
Structured data (6)
- Incomplete structured data
schema.incomplete - Invalid JSON-LD
schema.invalid - Structured data vs visible content
schema.mismatch - Missing structured data
schema.missing - Rich result opportunities
schema.opportunity - Schema price vs visible price
schema.price
Security & trust (3)
- Security headers
security.headers - HTTPS
security.https - Mixed content
security.mixed_content
Social & sharing (3)
- Favicon
social.favicon - Open Graph tags
social.open_graph - Twitter/X card
social.twitter
Where a check has a step-by-step fix
A finding tells you what changed and hands you the markup. For the checks people most often arrive here looking for, there is a longer walkthrough with the reasoning behind the fix:
- AI crawler access — which crawler does what, and how to allow citation while refusing training.
- hreflang and html lang mismatch — the two are different declarations and only one of them is usually wrong.
- Open Graph tags — why a shared link shows no image, and what each platform actually reads.
- Security headers — which ones a crawler notices and which are for your users.
- Marketing tag audit — whether your tracking is on every page, which is not the same question as whether it is installed.
- Conversion audit — the nine checks that apply to a landing page rather than to a crawl.
How a finding is put together
A check that fires produces more than a label. Each finding carries four things, and they are what separate a plan from a list:
- What it costs you, in plain language. Not "missing meta description" but what happens as a result — Google writing your search snippet from whatever text it finds, often a cookie notice.
- Severity, where critical is reserved for things that stop the page ranking at all. If everything is critical, nothing is, so the bar is deliberately high.
- Effort, from minutes to a project. Combined with impact, this is what produces the ordering — a trivial fix on an important page outranks a large fix on a marginal one.
- The change itself, as markup you can copy. For structured data that means a complete, valid JSON-LD block with your own business details already in the right fields.
Findings are also capped in reach. An issue affecting every page of a large site does not automatically outrank one affecting the homepage, because reach is compressed logarithmically — without that, one trivial nit on a large site drowns out everything that matters.
What is deliberately not here
Per-page backlinks and anchor text. Domain authority and the list of referring domains come from Common Crawl's hyperlink graph, but which individual page links to you, and with what anchor text, lives in archive files far too large to fetch from a laptop. Search volumes. Docket finds the queries people actually type, from Google's public autocomplete, and refuses to print a monthly volume it does not have. Each is a real limitation and each is stated in the report rather than papered over.