Methodology
Marketing Hygiene Checker is an automated audit of how well a page works for people, screen readers, search crawlers and AI agents — and what it costs in carbon. This page documents exactly what is measured, how it is scored, where the figures come from and what the scanner cannot see.
How the score works
- Every check scores pass = 1, warn = 0.5, fail = 0; informational checks do not count.
- A category's score is the average of its checks, 0–100.
- The overall score is the weighted average of the category scores.
- The pass rate shown next to it follows the checklist's own method: fully passed items ÷ all scored items.
- Cached results are reused for about ten minutes; every report shows its scan time.
Category weights
- Accessibility & Semantics — 30%
- Rendering & JavaScript Weight — 25%
- Structured Data & Agent Signals — 20%
- Discoverability & Bot Access — 15%
- Carbon & Efficiency — 10%
- Online Shop (only when a shop is detected) — 20% (only when the page is detected as a shop; weights are normalised over the categories present)
- Agent API & Trust Signals (bonus) — informational, 0%
Grades
- Spotless — 90+ : Agent-ready and human-ready — minor polish only.
- Tidy — 75+ : Solid shape; a few fixes would close the gap to spotless.
- Needs a Wipe-Down — 60+ : The basics are there, but several checks need attention.
- Cluttered — 40+ : Multiple structural issues are likely costing you visibility.
- Deep-Clean Required — 0+ : Foundational accessibility and machine-readability work needed.
Thresholds taken from the checklist
- JavaScript: ≤ 100 KB gzipped target, ~170 KB hard ceiling (transfer size,
nomodulepolyfills ignored). - Page weight: ≤ ~270 KB for an A+ carbon rating, ≤ ~530 KB for an A.
- Core Web Vitals (mobile, Google PageSpeed Insights): LCP ≤ 2.5 s, INP ≤ 200 ms (lab stand-in: Total Blocking Time ≤ 200 ms), CLS ≤ 0.1.
- Carbon (Sustainable Web Design v4): ≤ 0.095 g CO₂ per view = A+, ≤ 0.186 g = A (acceptable); global median ≈ 0.36 g.
- Structured data: JSON-LD for the main entity, no conflicting Organization records.
- Reaudit quarterly or after major changes; check AI citations monthly by hand.
What each category checks
### Accessibility & Semantics
- One clear H1
- Heading order
- Landmarks
- Image alt text
- Descriptive links
- Form labels
- Named buttons
- Real navigation links
- Keyboard focus
- Lighthouse audit
- Tab test (by hand)
### Rendering & JavaScript Weight
- Rendering mode
- Works without JavaScript
- JavaScript ≤ 100 KB
- Third-party tags
- Page weight
- Server response
- Compression
- Builders & plugins
- Core Web Vitals
- Unused JavaScript
### Structured Data & Agent Signals
- JSON-LD present
- JSON-LD valid
- Entity type
- No conflicting entities
- schema.org validator
- Rich-result markup
- Author identity
- Dated & current
- HTTPS
- Working links
- Metadata
- Proof of work
- Vanish test (by hand)
### Discoverability & Bot Access
- Indexable
- robots.txt
- Sitemap
- AI bot rules
- AI crawlers allowed
- AI crawlers get the page
- Content Signals
- llms.txt
- Markdown version
- One heading, one idea
- Services, prices, FAQs
- AI citations (by hand)
### Carbon & Efficiency
- CO₂ per page view
- Image optimisation
- Caching & CDN
- Green hosting
### Online Shop (only when a shop is detected)
- Product & Offer markup
- Price & stock in HTML
- Shipping & returns
- One Product schema
- Variant & filter labels
- Product image alt text
- No bot wall
- Stock freshness
- AI shopping check (by hand)
### Agent API & Trust Signals (bonus)
- Agent manifest
- security.txt
Independent checks
Our own heuristics are cross-checked by independent tools, shown next to the result: Google PageSpeed Insights (Core Web Vitals, unused JavaScript, Lighthouse accessibility), WebAIM WAVE (AIM score and errors, run when a visitor presses the button in the report, because each lookup is paid), the schema.org Markup Validator (link), isitagentready.com (agent-readiness level), The Green Web Foundation (green hosting) and websitecarbon.com's calculator.
Sources
- Google Search Central documentation (structured data, rich results, crawling and indexing, Core Web Vitals).
- WebAIM (WAVE) and the axe-core rules used by Lighthouse.
- HTTP Archive Web Almanac 2025 (JavaScript and page-weight medians).
- Sustainable Web Design model v4 and the Green Web Foundation's co2.js.
- WCAG 2.2, WAI-ARIA Authoring Practices, schema.org, Google Search structured-data documentation, RFC 9309 (robots.txt), RFC 9116 (security.txt), RFC 9727 (API catalog), llmstxt.org, contentsignals.org.
What the scanner cannot see
- It reads the server-delivered HTML and the files it links to. Content that only exists after JavaScript runs is invisible to it — which is also what many AI crawlers see — except for the Lighthouse audit, which runs in a real browser.
- It does not press Tab in a real browser, listen to a screen reader, judge whether your content is unique (the "vanish test") or measure real-user INP, and it cannot see which AI assistants cite you; the report lists these as manual checks.
- Server response time is measured from our server on a warm connection; it is indicative, not a field measurement.
- Page weight is estimated from up to 20 images, 25 scripts and 15 stylesheets referenced in the HTML, as transfer size. websitecarbon.com measures a real page load and can differ.
- PageSpeed Insights has a daily quota and can time out on heavy pages; the check is then marked "not measured" instead of failing.
- It is an automated heuristic, not a professional audit.
Changelog
- 1.9.0 — 2026-10-23: form check follows the checklist line exactly — a visible label for every field (screen-reader-only labels and placeholders warn) and validation errors that reach screen readers; "The audit at a glance" ends with scoring and next steps (pass rate, fix accessibility and rendering first, re-audit every three months); the score card shows the pass rate as a percentage; the Agent API ring shows the signals found instead of an empty "—"; clearer note when a host refuses data-centre traffic.
- 1.8.1 — 2026-10-22: scan, PageSpeed and WAVE results are shared between server instances (Vercel Runtime Cache), so a repeated scan is not measured twice and the daily WAVE allowance holds across instances. The websitecarbon.com panel retries once and says plainly when their service is busy.
- 1.8.0 — 2026-10-22: the full report is open to everyone — no email needed for the fixes and prompts. Results page redesigned: score card with category rings, failing checks open first, extras collapsed.
- 1.7.0 — 2026-10-22: the MCP connector works like an app — every part of the checker is its own tool (audit at a glance, accessibility, JavaScript & Core Web Vitals, structured data & schema.org, Markdown, content chunking, AI crawlers, agent readiness, carbon, online shop, machine view).
- 1.6.3 — 2026-10-22: carbon on its own for agents — MCP tool check_carbon and GET /api/carbon (websitecarbon-style result with yearly equivalents).
- 1.6.2 — 2026-10-22: "Over a year" in the carbon section, as on websitecarbon.com — yearly CO₂, energy and everyday equivalents for an adjustable number of monthly page views.
- 1.6.1 — 2026-10-22: WebAIM WAVE connected — unlocked reports show the AIM score and the number of errors and contrast errors (target: AIM 9/10, zero errors).
- 1.6.0 — 2026-10-22: every report opens with "The audit at a glance" — six audit steps with the tool to verify each, the three priorities and the quick wins.
- 1.5.0 — 2026-10-22: HTTPS (redirect, mixed content), working links, content recency, content structure (one heading, one idea; sections that stand alone; no fixed sizes); every report shows what crawlers and agents extract without JavaScript; the five-page scan shows a quick audit matrix. Fixed: informational checks no longer lower a category score.
- 1.4.0 — 2026-10-22: live validation with the official schema.org Markup Validator and a rich-result completeness check; every check can be ticked individually in Customize scan; indexability, a live fetch as GPTBot/ClaudeBot/PerplexityBot within the 1–5 s AI-crawler timeout, FAQs among the decision content, unused JavaScript target 50 KB, JavaScript-only pagination/forms and the quality of the Markdown version.
- 1.3.0 — 2026-10-22: AI search crawlers not blocked, Markdown version of each scanned page, services/prices/contact discoverable, keyboard-focusable controls, clean metadata, proof of work, server response, compression, page-builder and plugin load; manual guidance for the Tab test, the vanish test and the monthly AI citation check.
- 1.2.0 — 2026-10-22: full checklist coverage (rendering mode, third-party tags, page weight, Core Web Vitals, unused JavaScript, Lighthouse accessibility, media, caching/CDN, green hosting), online-shop category, pass rate, multi-page scan, result cache and rate limit, static HTML pages.
- 1.1.0 — 2026-10-21: gzip-aware JavaScript weight, SWD v4, author-identity and freshness checks, button-name and navigation checks, agent-ready surface (API catalog, MCP, skills).
- 1.0.0: first release.
Who runs this
Marketing Hygiene Checker is built and run by András Pintér, SEO and AI-visibility consultant in Hessen, Germany — andraspinter.de (English/German), digitalislathatosag.hu (Hungarian), LinkedIn. The idea was inspired by Warren Laine-Naida's GreenGeeks webinar “Marketing Hygiene Matters” (September 2026); the checks, scoring and software are our own work.
Corrections
Disagree with a result? Email info@ismysitehygienic.com with the URL and the check — thresholds and wording are revised in the open and listed above.