All 93 checks, by area
Docket runs 93 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 (8)
- Generic AI-sounding copy
content.ai_slop - Freshness signals
content.dates - Trust and authorship signals
content.eeat - JavaScript-dependent content
content.js_rendering - Language coverage
content.language_scope - Placeholder content
content.placeholder - Readability
content.readability - Thin content
content.thin
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 (18)
- 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 - 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 (6)
- Broken outbound links
links.broken_external - Insecure internal links
links.http_on_https - Internal linking
links.internal_volume - 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 (5)
- 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
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
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.