Scanning the page — checking accessibility, JS weight, structured data, discoverability, and carbon footprint…
Is Your Site Marketing-Hygienic?
Last scanned 2026-10-23 11:05 UTC
Results for
https://example.com/
Needs a Wipe-DownThe basics are there, but several checks need attention.
21 of 41 checks passed (pass rate 51%)
The audit at a glance
6 steps · 3 priorities · quick wins · next steps
Audit steps
3 issue(s) in roles, names or focus
Aim for: Every button and link has a role, a name, is enabled and focusable
Audit this with: Chrome DevTools → Accessibility (F12) (opens in a new tab) · see the fix
1 KB JavaScript · 0 KB unused
Aim for: Under 100 KB, ideally 0–50 KB; unused JS under 50 KB
Audit this with: pagespeed.web.dev (opens in a new tab)
Validator unavailable
Aim for: Valid JSON-LD for Person / Organization and the page's main entity
Audit this with: validator.schema.org (opens in a new tab) · see the fix
Pending
Aim for: <link rel="alternate" type="text/markdown" href="…">
Audit this with: isitagentready.com (opens in a new tab) · see the fix
A+ · 0.000 g CO₂ per view
Aim for: ≤ 0.1 g per view (A+)
Audit this with: websitecarbon.com (opens in a new tab)
Lighthouse accessibility 96/100
Aim for: Keyboard accessible; WAVE AIM score 9/10
Audit this with: wave.webaim.org (opens in a new tab) · see the fix
If you do only three things
- Improve Don't block AI user agents in robots.txt — add a Content-Signal and the sitemapsearch=yes, ai-input=yes, ai-train as you decide; without it agents don't know what to do
- Fix Show firsthand proof on the pageauthor page and link, case studies with dates, client examples — check it every month
- By hand Once a month, ask the top AI platforms your clients' questionssee whether you are mentioned or cited; if not, see who is, and do a better job than they do
Quick wins — do these first
- FixRepair the heading outline and mark up header, nav, main and footerOne clear <h1> · Semantic landmarks present
- DoneGive every button, field and icon link a clear name
- DoneCut JavaScript: drop unused code, defer what's left, trim tracking tags
- DoneShrink big images and serve them as WebP or AVIF
- FixDescribe the page's main entity in valid JSON-LDJSON-LD structured data present
Scoring and next steps
- Pass rate: 21 of 41 checks pass on this page (51%) — passed checks divided by all checks, counted per page.
- Fix accessibility and rendering/JavaScript first (5 open items here): people, screen readers and agents all depend on them.
- Audit again every three months, and after any major change to the site (new theme, page builder, plugins or tracking tags).
Accessibility
6/10Failed:One clear <h1>
Goal
Give the page exactly one <h1> that states what it's about, so people and crawlers get a clear entry point into the content outline.
Issue
No <h1> found on the page.
How to implement
Add exactly one <h1> near the top of the page that states what the page is about in a few words.
Add exactly one <h1> near the top of the page that states what the page is about in a few words (this is the single most important heading for both visitors and crawlers).
Passed:No skipped heading levels
Goal
Keep heading levels sequential (H1 → H2 → H3) so screen readers and crawlers can build an accurate document outline.
Result
Heading levels increase in order, without skipping a level.
Failed:Semantic landmarks present
Goal
Mark header, nav, main, and footer regions semantically so screen readers and agents can jump straight to the right part of the page.
Issue
Missing landmark(s): header, nav, main, footer.
How to implement
Add the missing semantic element(s) — header, nav, main, footer — or the matching ARIA role (banner/navigation/main/contentinfo).
Add the missing semantic landmark element(s) — header, nav, main, footer — (or the matching ARIA role) so screen readers and agents can jump straight to the right region instead of parsing generic <div>s.
Passed:Images have alt attributes
Goal
Give every <img> an alt attribute — descriptive text for meaningful images, empty alt="" for purely decorative ones.
Result
No <img> elements on the page.
Passed:Descriptive link text
Goal
Write link text that describes the destination on its own, without relying on surrounding context — screen reader users often tab through links in a list.
Result
No generic ('click here'/'read more') or empty links found.
Passed:Form fields have visible labels; errors are announced
Goal
Give every form field a visible <label> tied to it (for/id or wrapping), and make validation errors reach screen readers — native browser validation, or aria-invalid plus an error message linked with aria-describedby or an aria-live/role=alert region.
Result
No form fields found on the page.
Passed:Every link and button can be reached with the keyboard
Goal
Every link, button and form control must be focusable — reachable with the Tab key — because that is also how agents find what they can act on. Controls with tabindex="-1", links without an href and javascript: links are invisible to both.
Result
No links or controls removed from the keyboard order (no negative tabindex, no href-less or javascript: links).
Informational:By hand: Tab through the page and read the accessibility tree
Goal
Click the logo, put the mouse away and press Tab: every link — including drop-down and sub-menu items — must receive visible focus in a sensible order. Then open DevTools (F12) → Accessibility and check that each button and link shows a role, a name, enabled and focusable.
Result
Manual check — the scanner reads the HTML but cannot press Tab in a real browser.
Warning:Lighthouse accessibility audit (axe-core, independent)
Goal
Pass an automated accessibility audit run in a real browser: Lighthouse's accessibility category (axe-core rules) should score 90+ with no failing audits. Confirm with WAVE (wave.webaim.org) — the target there is an AIM score of 9 out of 10.
Issue
Lighthouse accessibility 96/100 with 1 failing audit(s): Document does not have a main landmark. (1).
How to implement
Open the Lighthouse/PageSpeed accessibility section for this page; each failing audit lists the exact elements. Fix colour contrast, ARIA attributes, names and focus order first, then re-run.
Resources
Fix the failing Lighthouse accessibility audits on this page: Document does not have a main landmark. (1). For each, open the audit in PageSpeed Insights (Accessibility section) to get the exact elements, fix them in the template (contrast ratios ≥ 4.5:1, valid ARIA roles/attributes, accessible names, logical focus order, correct lang/landmarks), and re-run until the accessibility score is ≥ 90 with no failing audits.
Independent check: WAVE (WebAIM)
Runs WebAIM's WAVE on this page: AIM score, errors and contrast errors. The target is an AIM score of 9 out of 10 and zero errors.
Rendering & JS
9/10Warning:Rendering mode: content in the initial HTML
Goal
Identify the rendering mode and keep key content server-rendered or static (SSR/SSG). Many AI/LLM crawlers never execute JavaScript, so content that only appears after hydration is invisible to them.
Issue
Only ~156 characters of visible text in the server HTML.
How to implement
Move critical content into the server-rendered/static HTML (SSR/SSG) instead of injecting it client-side.
This page's real content appears to arrive only after JavaScript runs. Many AI/LLM crawlers skip JS execution entirely and only see the raw HTML — move critical content (headline, key copy, calls-to-action, nav links) into the server-rendered/static HTML (SSR/SSG) instead of injecting it client-side.
Passed:Works without JavaScript: pagination, forms, interactions
Goal
Don't make JavaScript the only way to understand or use the page: "Load more" and infinite scroll need real pagination links, forms need a <form> with an action and a submit button, interactive content needs its HTML in the page with JavaScript only as enhancement.
Result
No JavaScript-only pagination or forms found in the server HTML.
Passed:JavaScript weight ≤ 100 KB gzipped
Goal
Keep total JavaScript under 100 KB gzipped — ideally 0–50 KB (hard ceiling ~170 KB). The average site ships ~700 KB of JavaScript in ~20 requests per page; every extra KB costs load time, carbon, and agent parsing effort.
Result
~1 KB of JS (transfer size, i.e. gzipped/brotli where the server compresses) across 1 sampled file(s).
Passed:Third-party tags audited and trimmed
Goal
Every third-party script (tag manager, analytics, pixels, chat widgets, overlays) should earn its place: each one adds JavaScript, delays interaction, and sends visitor data elsewhere. Keep the ones you act on; remove the rest.
Result
No third-party scripts in the initial HTML.
Passed:Page weight ≤ 270 KB (A+) / ≤ 530 KB (A)
Goal
Keep the total transferred weight of the page at or under ~270 KB for an A+ carbon rating (≤ ~530 KB still earns an A). For scale: static HTML ~0.1 MB loads in 0.3–0.8 s, a standard React app ~1.2 MB in 1.2–2.5 s, a heavy framework ~4.8 MB in 4–8 s — and conversion is about 3× higher at 1 s than at 5 s. Images are usually the biggest lever.
Result
~2 KB transferred — HTML 0 KB · CSS 0 KB · JS 1 KB · images 0 KB (0 sampled) · 2 requests referenced in the HTML (average site: ~20).
Passed:Fast server response (hosting)
Goal
The server should start answering within ~800 ms (Google's "good" TTFB; ≤ 600 ms is better) and deliver the whole HTML well within the 1–5 seconds AI crawlers wait before giving up. Slow hosting, no page cache or a heavy theme/plugin stack delays everything after it — for visitors and crawlers alike.
Result
The page's HTML started arriving after ~13 ms (best of two requests from our server on a warm connection); the complete HTML took ~64 ms on a cold connection, the way a crawler meets it (AI crawlers time out after 1–5 s).
Passed:HTML, CSS and JavaScript are compressed
Goal
Serve HTML, CSS and JavaScript compressed (Brotli or gzip). It typically cuts text transfer by 70–80 % at no cost — what optimisation plugins call "zip".
Result
2/2 text resources served compressed (HTML: br).
Passed:No page-builder layer, few plugins loading assets
Goal
Every page builder and every plugin that loads its own CSS/JS adds a layer between your content and the reader. Clean up before you add: fewer plugins, a light theme, no builder where the block editor or plain HTML will do.
Result
No page builder detected; not a WordPress page.
Passed:Core Web Vitals pass (LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1)
Goal
Pass Google's Core Web Vitals on mobile: Largest Contentful Paint ≤ 2.5 s, Interaction to Next Paint ≤ 200 ms (lab stand-in: Total Blocking Time ≤ 200 ms), Cumulative Layout Shift ≤ 0.1.
Result
LCP 1.2 s (field), INP 88 ms (field), CLS 0.000 (field) · Lighthouse performance 100/100. Source: Google PageSpeed Insights (mobile); "field" = real Chrome users, "lab" = one Lighthouse run.
Passed:Unused JavaScript removed or deferred
Goal
JavaScript that loads but never runs on this page is pure cost. Lighthouse's "Reduce unused JavaScript" audit measures it; the target is under 50 KB of unused JavaScript (and under 100 KB of JavaScript in total).
Result
~0 KB of JavaScript could be removed according to Lighthouse (counts every script loaded during the run, including ones other scripts load later — so it can exceed the JS weight sampled from the HTML above).
Independent check: Core Web Vitals (PageSpeed Insights)
Running Lighthouse on Google’s servers — usually 10–30 seconds…
Structured data & trust
0/7Failed:JSON-LD structured data present
Goal
Describe the page's main entity (who you are, what you offer) as JSON-LD so search engines and AI agents can read it as structured facts, not prose to interpret.
Issue
No <script type="application/ld+json"> found on the page.
How to implement
Add a JSON-LD block describing the page's main entity — Organization for a company, LocalBusiness if you have a physical location/service area, plus Product/Service/FAQPage/Article where relevant.
Add a JSON-LD block describing the page's main entity. Minimal Organization example:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://yoursite.com"
}
</script>
Use LocalBusiness instead of Organization if you have a physical location/service area, and add Product/Service/FAQPage/Article blocks on pages where those apply.
Informational:JSON-LD parses without errors
Goal
Keep every JSON-LD block syntactically valid — a single stray comma invalidates the whole block.
Result
All JSON-LD blocks are valid JSON.
Informational:Describes a recognized entity type
Goal
Use a well-known schema.org @type (Organization, LocalBusiness, Product, Service, Article, FAQPage, etc.) so search engines and agents recognize what kind of thing this page describes.
Result
Found:
How to implement
Change or add a block whose @type is a standard schema.org entity relevant to the page, rather than a custom/unrecognized type.
Make sure at least one JSON-LD block's @type is a well-known schema.org entity relevant to the page (Organization, LocalBusiness, Product, Service, Article, FAQPage, etc.) rather than a custom or unrecognized type.
Informational:No conflicting Organization/LocalBusiness blocks
Goal
Keep a single, consistent Organization/LocalBusiness record so crawlers and AI agents don't get contradictory facts about who you are.
Result
Organization/LocalBusiness data is consistent.
Informational:Passes the schema.org Markup Validator
Goal
Every structured-data object on the page passes the official Schema Markup Validator (validator.schema.org) with no errors or warnings: valid types, valid property names, valid values.
Result
validator.schema.org did not answer during this scan (not scored) — open the validator with the link below.
Warning:Markup for a rich-result type is complete
Goal
Give each page structured data for a type Google can show as a rich result (Article, Product, FAQ, Breadcrumb, Local business, Event, Recipe, Video, Software app…) with the properties it requires. FAQ results are shown only for some sites in Google, but the markup still helps AI answers.
Issue
No structured data for a rich-result type (Article, Product, FAQ, Breadcrumb, Local business, Event…) on this page.
How to implement
Add the JSON-LD type that matches the page (Article for posts, Product for products, LocalBusiness/Service pages, FAQPage for Q&A, BreadcrumbList everywhere) with its required properties, and test it in Google's Rich Results Test.
Resources
Add JSON-LD for a rich-result type that fits this page — e.g. BreadcrumbList on every page, Article (headline, image, author, datePublished) on posts, Product (name, offers) on product pages, LocalBusiness (name, address) on location pages, FAQPage (mainEntity with Question/acceptedAnswer) where the page answers questions. Validate it at validator.schema.org and in Google's Rich Results Test.
Warning:Content is dated and current
Goal
Keep content current and say so: show when it was published or last updated (e.g. "Updated September 2026 · Author: Name") in a form machines can read (datePublished/dateModified in JSON-LD, a <time datetime> element, or article:modified_time), so agents can tell current content from stale content.
Issue
No publish or last-updated date found in JSON-LD, <time datetime>, or meta tags.
How to implement
Add dateModified (and datePublished) to the page's JSON-LD and show the same date visibly in a <time datetime="YYYY-MM-DD"> element.
Add a machine-readable freshness date. In the page's JSON-LD (WebPage/Article) add "datePublished" and "dateModified" in ISO 8601 (e.g. "2026-10-21"), and show the same date visibly, e.g. <p>Last updated <time datetime="2026-10-21">21 October 2026</time></p>. Keep dateModified honest — update it only when the content actually changes.
Failed:Clean, complete metadata
Goal
Give every page a descriptive <title>, a meta description, a canonical URL, the page language, a viewport tag and Open Graph title/image — the metadata search engines, AI crawlers and link previews read first.
Issue
Metadata gaps: title is 14 characters (aim for 15–70); no meta description; no canonical link; no og:title/og:image for link previews.
How to implement
Fill the missing tags in the page template (most SEO plugins and frameworks expose all of them).
Resources
Complete this page's metadata. Problems found: title is 14 characters (aim for 15–70); no meta description; no canonical link; no og:title/og:image for link previews. Add in <head>: a unique <title> (15–70 characters, the page's topic first), <meta name="description"> (50–170 characters, what the visitor gets), <link rel="canonical" href="…">, <meta name="viewport" content="width=device-width, initial-scale=1">, og:title, og:description and og:image; and set <html lang="…">.
Failed:Proof of work: author page and case studies are linked
Goal
Show proof that you did the work: link an author/about page and case studies, references or client examples (with dates) from your pages. "We offer the best deal in town" — can you prove it? Without proof you get mentioned, not cited.
Issue
No link to an author/about page or case studies, references or client examples found on this page.
How to implement
Create (or link) an author page with your experience and profiles, and a case-study/references page with dated, specific client results; link both from the navigation or footer and from authority pages.
Add proof of work to this page and site: an author/about page (who you are, experience, links to your profiles and publications) linked with rel="author"; case studies or references with dates, the client's situation, what you uniquely did and the measurable result; link them from the navigation/footer and mention them in the copy of your authority pages. AI assistants cite sources that can prove expertise; generic claims only get mentioned.
Informational:By hand: the vanish test for your authority pages
Goal
Ask honestly for each authority page: if this page did not exist, would it matter? It should only exist if its content exists only here. If it is a rewrite of what 16 other sites say, rethink it — AI crawlers look for the single best, unique answer.
Result
Manual check — uniqueness of content can't be judged by a scanner.
Warning:Served securely over HTTPS
Goal
Serve every page over HTTPS, redirect http:// to https://, and load no images, scripts or styles over plain http — browsers, search engines and AI systems treat insecure pages as less trustworthy.
Issue
http:// does not redirect to https://.
How to implement
Install a TLS certificate (free with Let's Encrypt or your host/CDN), add a permanent 301 redirect from http:// to https://, and change every http:// resource URL to https:// (or a relative URL).
Resources
Make example.com fully HTTPS: http:// does not redirect to https://. Enable a TLS certificate, redirect all http:// requests to https:// with a 301, update these resource URLs to https://: (none), and consider sending a Strict-Transport-Security header.
Informational:Links work (no 404s)
Goal
Every link on the page leads somewhere: broken links waste crawl budget, break agents' paths through your site and signal neglected content.
Result
No links to test.
Independent check: schema.org Markup Validator
The "Passes the schema.org Markup Validator" check above already contains the official validator's result for this page. Open the full validator report to see each object and property, and Google's Rich Results Test for rich-result eligibility.
Discoverability
3/10Failed:robots.txt exists
Goal
Publish a robots.txt file so crawlers know what they may fetch before they fetch anything else.
Issue
No robots.txt found at https://example.com/robots.txt (status 404).
How to implement
Add a robots.txt file at the root of your domain (served at /robots.txt) with at least a default allow rule and a pointer to your sitemap.
Resources
Add a robots.txt file at the root of https://example.com (served at /robots.txt). At minimum: User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml This is the first file every crawler — search engine or AI agent — checks before fetching anything else.
Warning:Sitemap referenced or reachable
Goal
Give crawlers a complete, structured list of your URLs instead of making them discover pages by following links alone.
Issue
No sitemap found via robots.txt or /sitemap.xml.
How to implement
Generate an XML sitemap listing your important pages, serve it at /sitemap.xml, and reference it from robots.txt.
Generate an XML sitemap listing your important pages and serve it at https://example.com/sitemap.xml, then add this line to robots.txt: Sitemap: https://example.com/sitemap.xml
Warning:Explicit rules for AI/LLM crawlers
Goal
Decide intentionally whether GPTBot, PerplexityBot, ClaudeBot, and similar AI crawlers can access your content, instead of leaving them on the default catch-all rule.
Issue
robots.txt states no AI policy: no named rules for AI/LLM crawlers and no Content-Signal line — they fall back to the default User-agent: * block.
How to implement
Add a named User-agent block for each AI crawler you want to allow or block, rather than relying on the wildcard block to cover them.
Add explicit, intentional rules for AI/LLM crawlers in robots.txt instead of leaving them on the default catch-all. Example — allow the ones you want indexing/citing you, block the ones you don't: User-agent: GPTBot Allow: / User-agent: PerplexityBot Allow: / User-agent: ClaudeBot Allow: / User-agent: CCBot Disallow: / Pick Allow/Disallow per bot based on your own policy — the goal is an explicit decision, not silence.
Passed:The page can be indexed
Goal
Search engines and AI crawlers may only use pages that are indexable: HTTP 200, no noindex in a robots meta tag or X-Robots-Tag header, and a canonical that points to the page itself.
Result
HTTP 200, no noindex, and the canonical (if any) points to this URL.
Passed:AI search and assistant crawlers are not blocked
Goal
robots.txt must not block the crawlers that fetch pages for search and for users' questions (Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot/User…). Blocking AI training crawlers is a legitimate policy choice; blocking search and assistant crawlers makes you invisible in AI answers.
Result
No search or assistant crawler is blocked from the site root. No training crawler is blocked either.
Passed:AI crawlers receive the page within 5 seconds
Goal
When robots.txt allows them, AI crawlers (GPTBot, ClaudeBot, PerplexityBot) must actually get the same page as a visitor, within the 1–5 seconds they wait — no firewall block, no challenge page, no empty shell.
Result
Requests identifying as GPTBot (12 ms), ClaudeBot (13 ms), PerplexityBot (10 ms) got the full page.
Warning:Content-Signal directive
Goal
State a machine-readable policy on whether your content may be used for search indexing, AI-agent answers, and AI model training — separately.
Issue
No Content-Signal directive found — no stated policy on AI training vs. search vs. AI-input use of your content.
How to implement
Add a Content-Signal line to robots.txt stating your policy for search, ai-input, and ai-train separately.
Add a Content-Signal directive to robots.txt to state your policy on how crawlers may use your content: User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=no Adjust the three values (yes/no) to match your actual policy on search indexing, AI-agent use at query time, and AI model training.
Warning:llms.txt present
Goal
Offer a short, curated Markdown index of your most important pages so LLMs and agents don't have to guess which pages matter.
Issue
No llms.txt found at the site root.
How to implement
Publish a llms.txt file at the site root: an H1 with your site/brand name, a one-paragraph summary, then a 'Key pages' list of Markdown links to your top pages.
Add a llms.txt file at https://example.com/llms.txt — a short Markdown index curated for AI agents and LLM crawlers. Structure: # <Your site/brand name> > One-paragraph summary of what the site/business does. ## Key pages - [Services](/services): what you offer - [Pricing](/pricing): how much it costs - [Contact](/contact): how to reach you Keep it short — this is a map, not a mirror of your whole site.
Warning:Markdown version of this page
Goal
Offer a clean Markdown version of the page — what AI agents prefer to read — at least for your top five authority pages: a <link rel="alternate" type="text/markdown">, content negotiation on Accept: text/markdown, or a .md twin.
Issue
No Markdown version of this page found (no rel=alternate link, no Accept: text/markdown negotiation, no .md twin).
How to implement
Generate a Markdown version of the page's main content (headings, copy, links; no navigation, scripts or ads) and link it with <link rel="alternate" type="text/markdown" href="…">. On WordPress a free markdown plugin can do this for every page; on Cloudflare, "Markdown for Agents" serves it via content negotiation.
Resources
Offer a Markdown version of https://example.com/ so AI agents can read it without parsing the HTML. Generate it from the page's main content (headings, body copy, links; strip navigation, scripts, ads), serve it at a stable URL such as https://example.com.md, and add to the page's <head>: <link rel="alternate" type="text/markdown" href="https://example.com.md"> Optionally also answer requests sent with "Accept: text/markdown" with that Markdown. Start with your five most important pages.
Warning:Services, prices, FAQs and contact/booking are easy to find
Goal
Clear, extractable content gets you cited when people ask AI to compare and shortlist: what you offer, what it costs, answers to common questions (FAQs) and how to contact or book you — reachable straight from the navigation or on the page.
Issue
No navigation links found in the server HTML.
How to implement
Add plain navigation links to your services/products, your prices (or how pricing works) and your contact or booking page.
Make the site's key actions discoverable from the main navigation: add plain <a href> links to services, pricing, contact, FAQs (e.g. "Services", "Prices", "Book a call"). Agents and visitors decide quickly; offers, prices and the way to contact you must not be hidden behind other pages or JavaScript-only menus.
Informational:One heading, one idea: sections stand on their own
Goal
Structure content so each section covers one idea, answers its question early and is understandable on its own — that is good writing first, and it lets search and AI systems match a section to a question. Use subheadings, short paragraphs and lists; avoid "as mentioned above"; don't split text artificially. There is no ideal chunk size: a chunk ends where a thought is complete.
Result
Only ~25 words of main content — too little to judge structure.
Informational:Monthly by hand: are you mentioned or cited by AI assistants?
Goal
Once a month, ask the main AI platforms (ChatGPT, Gemini, Claude, Perplexity, Copilot) the questions your clients ask. Check whether you are mentioned and cited, in an incognito window and logged in. If someone else is cited, study why and do a better job than they do.
Result
Manual check — the scanner can't see AI answers. Pair it with the vanish test and proof-of-work checks.
Independent check: agent-readiness level
Scanning the site’s agent protocols — about 10 seconds…
Level from Cloudflare’s isitagentready.com, a free public scanner. We are not affiliated with Cloudflare.
Open on isitagentready.com (opens in a new tab)Carbon
3/4Passed:CO₂ per page view ≤ 0.095 g (A+), ≤ 0.186 g acceptable (A)
Goal
Estimate CO₂ per page view with the Sustainable Web Design model v4 and keep it at or below 0.095 g (A+); 0.186 g (A) is acceptable. The global median is about 0.36 g.
Result
~0.000 g CO₂/view (rating A+), estimated from ~2 KB transferred (HTML + sampled CSS/JS/images), Sustainable Web Design v4, green hosting applied. websitecarbon.com's calculator did not answer during this scan (HTTP 403).
Passed:Images compressed, modern formats, lazy-loaded
Goal
Serve images compressed and at their display size, in WebP or AVIF, and lazy-load the ones below the fold. Images are usually the biggest lever on page weight and carbon.
Result
No images on the page.
Warning:Caching and CDN enabled
Goal
Serve static assets with long cache lifetimes (Cache-Control max-age ≥ 1 day, ideally immutable) from a CDN close to the visitor, so repeat views and far-away visitors cost almost nothing.
Issue
Only 0/1 sampled CSS/JS/image files are cacheable for a day or more.
How to implement
Put the site behind a CDN (Cloudflare's free plan, or your host's built-in edge) and set Cache-Control: public, max-age=31536000, immutable on versioned CSS/JS/image files.
Enable caching and a CDN for this site. Set "Cache-Control: public, max-age=31536000, immutable" on versioned/fingerprinted CSS, JS and image files, and at least "max-age=86400" on other static assets. Currently only 0 of 1 sampled assets are cacheable for a day or more.
Passed:Green hosting
Goal
Host on infrastructure that runs on renewable energy or is verified green (The Green Web Foundation directory). It lowers the data-centre share of every page view's footprint.
Result
example.com is served by verified green hosting (Cloudflare).
Over a year
Over a year
Rough equivalents from this page's ~0.000 g CO₂ per view (Sustainable Web Design v4); every page you make lighter shrinks all of them.
Independent check: Website Carbon Calculator
Asking websitecarbon.com…
Agent API
InformationalInformational:ai-agent.json / ai-plugin.json manifest
Goal
Optional: publish an agent manifest at /.well-known/ (ai-agent.json pointing agents to your critical pages, or ai-plugin.json describing a callable API with name, description, auth and OpenAPI spec location).
Issue
No /.well-known/ai-agent.json or ai-plugin.json manifest found (optional, early-stage convention).
How to implement
If you expose an API agents could call on your behalf (booking, ordering, lookups), publish a manifest at /.well-known/ai-plugin.json describing the endpoint, auth, and an OpenAPI spec.
If your site exposes an API agents could call on your behalf, publish a manifest at https://example.com/.well-known/ai-plugin.json with your API's name, description, auth method, and OpenAPI spec location. Skip this if you don't have a callable API — it's optional.
Informational:security.txt contact file
Goal
Publish a /.well-known/security.txt (RFC 9116) with a contact method — a small, standard trust signal that you're a real, reachable operator.
Issue
No /.well-known/security.txt found.
How to implement
Add a short security.txt with at least a Contact: line (email or URL).
Add a security.txt file at https://example.com/.well-known/security.txt: Contact: mailto:you@yourdomain.com Expires: 2027-01-01T00:00:00.000Z This is a widely-recognized, low-effort trust signal — not agent-specific, but increasingly checked alongside agent-readiness signals.
What crawlers and agents see
no JavaScript
Text-only extraction of the first server response — what many AI crawlers index, and the actions an agent can take (role + name).
Title, headings & text
This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.
~25 words of main content.
Actions
No buttons or call-to-action links an agent could use were found.
Extracted links
No navigation links in the server HTML.
These are automated heuristics, not a professional audit. Please use your own judgment when applying a fix, as results are provided “as-is” and the operator assumes no liability for actions taken on them.