www.wto.org
Scored by v3 · source-of-truth hashes: score db860d6ac94e · thresholds e94f8b33e500 — verifiable against the canonical scorer.
The 28-day score is the p75 of nightly runs — the stable number to cite. Deterministic metrics (CRR/SSD/TC) show their latest value (they move only when the site changes); timing (TTFUT) and answer-fidelity (AF) are smoothed by 28-day p75 — the same lab-vs-field split Core Web Vitals uses. Synthetic daily measurement, not real-user field data.
An agent is likely to fabricate missing details rather than say “I don’t know”. 0/3 applicable facts come from machine-readable structured data.
Metrics
Token Cost breakdown
Where the page's tokens go (≈8,344 across regions). 100% is non-content — chrome and boilerplate an agent pays for. Add landmark roles (main/nav/header/footer) so agents can skip it.
Final screenshot
Diagnostics
pre-JS raw HTML
Fix: Server-render or statically generate the main content so a non-JS agent still receives it; make client rendering a progressive enhancement, not the source of truth.
content vs chrome/boilerplate
Fix: Wrap the real content in <main>/<article>, cut repeated nav/boilerplate, and keep the primary content dense and early in the DOM.
agent representation — token decomposition
Fix: Strip repeated nav/header/footer/cookie chrome from the agent-visible output; wrap content in <main>/<article> so the extractor keeps signal and drops boilerplate.
Rendered profile: headless
Metrics
Token Cost breakdown
Where the page's tokens go (≈8,037 across regions). 99% is non-content — chrome and boilerplate an agent pays for. Add landmark roles (main/nav/header/footer) so agents can skip it.
Final screenshot
Diagnostics
pre-JS raw HTML
Fix: Server-render or statically generate the main content so a non-JS agent still receives it; make client rendering a progressive enhancement, not the source of truth.
content vs chrome/boilerplate
Fix: Wrap the real content in <main>/<article>, cut repeated nav/boilerplate, and keep the primary content dense and early in the DOM.
agent representation — token decomposition
Fix: Strip repeated nav/header/footer/cookie chrome from the agent-visible output; wrap content in <main>/<article> so the extractor keeps signal and drops boilerplate.
Rendered profile: headless
Access & discovery checks — separate from the gated CAV metrics above. Click an issue for business impact, what we measured, and how to fix. · Take the Agent Readiness course →
Agent files & endpoints
Issues (3)
~ llms.txt present + valid high impact Found at /llms.txt but missing H1/blockquote
Business impact llms.txt is the robots.txt for AI: it tells agents what your site is, what matters, and where to find it. Without it AI guesses — and guessing means inaccurate recommendations and lost visibility.
What we measured We fetch /llms.txt and /.well-known/llms.txt and validate the spec (H1 title + a one-line blockquote summary). We also note /llms-full.txt (your full content as Markdown).
How to fix Create /llms.txt with a short summary + key pages; optionally /llms-full.txt with full content in Markdown.
# Your Site
> One-line description for AI agents.
## Key pages
- /products — catalog
- /pricing — plans
- /docs — documentationSpec: https://llmstxt.org
✗ Structured data (JSON-LD) medium impact No JSON-LD found
Business impact Schema.org JSON-LD tells agents what a page IS (product, article, business) with typed fields (price, rating, hours). Without it agents extract less reliably.
What we measured We parse <script type=application/ld+json>, validate it, and check for populated @type fields.
How to fix Add JSON-LD: Organization/LocalBusiness on the homepage, Product on product pages, Article on posts.
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Your Co","url":"https://example.com"}</script>Spec: https://schema.org/
~ XML sitemap present medium impact Sitemap found but no <url>/<loc> entries
Business impact A sitemap is your table of contents for AI crawlers. Without it agents follow homepage links and miss deep pages (products, docs, pricing) — shrinking what they can recommend.
What we measured We fetch /sitemap.xml (and /sitemap_index.xml), confirm valid XML with <loc> entries, and check <lastmod> freshness.
How to fix Generate an XML sitemap of all public pages with current lastmod dates and reference it in robots.txt.
# robots.txt
Sitemap: https://example.com/sitemap.xml
Passed audits (8)
Transport & Trust (SEC 1.0.0)
HTTPS, HSTS, CSP, sniffing, referrer and CORS posture. Diagnostic only — this does not affect the CAV score. A security header does not make a page more legible to an agent, so scoring it would reward a CDN toggle that changes nothing an agent can recover. We measure it and say so.
Per-header findings (6)
| Header | Evidence |
|---|---|
| ✅ HTTPS | served over HTTPS |
| ✅ HSTS | max-age=31536000 |
| ❌ Content-Security-Policy | no content-security-policy header |
| ✅ X-Content-Type-Options | nosniff |
| ⚠️ Referrer-Policy | no referrer-policy header (browser default applies) |
| ✅ CORS exposure | access-control-allow-origin: https://eregistration.wto.org, https://rtais.wto.org |
How to improve
largest contentful paint
cumulative layout shift
longest task 2354 ms (10 total)
Chart.js — 94 KiB transferred, 90.5% unused
3.4 MB total
Third-party impact
6 third-party requests · 246 KiB (7.1% of transfer) · 247 ms main-thread — code an agent must also fetch/run before your content settles. Fewer, lazier third-parties = faster, cheaper agent reads.
| Third-party domain | Reqs | Transfer | Main-thread |
|---|---|---|---|
| googletagmanager.com | 1 | 161 KiB | 247 ms |
| jsdelivr.net | 1 | 71 KiB | — |
| cloudflareinsights.com | 2 | 11 KiB | — |
| plausible.io | 1 | 3 KiB | — |
| google-analytics.com | 1 | 0 KiB | — |
Wasted JavaScript (by bundle)
Transfer-accurate — each bundle's transfer size × its unused %, ranked by wasted bytes (the biggest code-splitting wins). Unused JS also inflates Token Cost (TC).
| Bundle | Transfer | Unused | Wasted |
|---|---|---|---|
| https://www.wto.org/library/memberscharts/Chart.js | 94 KiB | 90.5% | 85 KiB |
| https://www.googletagmanager.com/gtag/js?id=G-4C48KGVJMD 3P | 161 KiB | 52.4% | 85 KiB |
| https://cdn.jsdelivr.net/npm/chart.js 3P | 71 KiB | 89.4% | 63 KiB |
| https://www.wto.org/library/wtomenus/jquery.min.js | 30 KiB | 76.9% | 23 KiB |
| https://www.wto.org/library/events/moment.js | 33 KiB | 58.2% | 19 KiB |
| https://www.wto.org/library/authentication/jquery-1.11.2.min.js | 30 KiB | 61% | 18 KiB |
| https://www.wto.org/library/events/interactive_cal_code.js | 18 KiB | 92.5% | 17 KiB |
| https://www.wto.org/library/flashvideo/jwplayer.js | 18 KiB | 86.5% | 15 KiB |
| https://www.wto.org/library/flashvideo/flash_video_code.js | 12 KiB | 98.5% | 12 KiB |
| https://www.wto.org/library/photo_gallery/photo_gallery_code.js | 12 KiB | 92.6% | 11 KiB |
| https://www.wto.org/library/groupings/groupings_code.js | 11 KiB | 97.6% | 11 KiB |
| https://www.wto.org/library/events/responsive/lightbox/lightgallery.js | 9 KiB | 88% | 8 KiB |
| https://www.wto.org/library/wtomenus/loader_wide_2011.js | 14 KiB | 48.3% | 7 KiB |
| https://www.wto.org/library/wtomenus/common_logic_e.js | 4 KiB | 84.4% | 3 KiB |
| https://www.wto.org/library/authentication/json2.js | 5 KiB | 59.8% | 3 KiB |
Network
Heaviest requests (30)
| URL | Type | Status | Transfer |
|---|---|---|---|
| https://www.wto.org/images/img_index/photos/container-ship-in-transit_lg.jpg | Image | 200 | 988 KiB |
| https://www.wto.org/images/img_index/photos/wtobuilding320202_md.jpg | Image | 200 | 260 KiB |
| https://www.wto.org/images/img_index/photos/dgno_5mar21_md.jpg | Image | 200 | 224 KiB |
| https://www.wto.org/library/flashvideo/flash_video_e.js | Script | 200 | 210 KiB |
| https://www.googletagmanager.com/gtag/js?id=G-4C48KGVJMD | Script | 200 | 161 KiB |
| https://www.wto.org/library/events/wto_events_data.json | XHR | 200 | 134 KiB |
| https://www.wto.org/library/events/wto_events_data.json | XHR | 200 | 134 KiB |
| https://www.wto.org/library/_op_scripts/plugins-min.js?_=1784545709714 | XHR | 200 | 116 KiB |
| https://www.wto.org/library/photo_gallery/slideshow_data.js | Script | 200 | 102 KiB |
| https://www.wto.org/library/photo_gallery/slideshow_data.js | Script | 200 | 102 KiB |
| https://www.wto.org/library/memberscharts/Chart.js | Script | 200 | 94 KiB |
| https://cdn.jsdelivr.net/npm/chart.js | Script | 200 | 71 KiB |
| https://www.wto.org/images/img_index/photos/GCJuly26_20260715184400_md.jpg | Image | 200 | 51 KiB |
| https://www.wto.org/images/img_index/photos/Robert-Staiger_e_lg_20260309112950_md.jpg | Image | 200 | 47 KiB |
| https://www.wto.org/images/img_index/photos/A4T_Website_banners_1200x675_E_20260622092122_lg.png | Image | 200 | 41 KiB |
| https://www.wto.org/library/news/news_2026_e.js | Script | 200 | 38 KiB |
| https://www.wto.org/library/events/moment.js | Script | 200 | 33 KiB |
| https://www.wto.org/images/img_index/photos/array-of-blue-lithium-ion-batteries-with-copper-wi-2026-01-07-06-48-36-utc_20260717123737_md.JPG | Image | 200 | 32 KiB |
| https://www.wto.org/library/authentication/jquery-1.11.2.min.js | Script | 200 | 30 KiB |
| https://www.wto.org/library/wtomenus/jquery.min.js | Script | 200 | 30 KiB |
| https://www.wto.org/library/authentication/jquery-1.11.2.min.js | Script | 200 | 30 KiB |
| https://www.wto.org/library/styles/wto-blessed1.css?z=1547634103057 | Stylesheet | 200 | 27 KiB |
| https://www.wto.org/library/styles/fonts/museo/3308EE_0_0.woff2 | Font | 200 | 26 KiB |
| https://www.wto.org/library/styles/fonts/museo/3308EE_4_0.woff2 | Font | 200 | 26 KiB |
| https://www.wto.org/images/img_index/photos/1200x675_e_20260428090936_md.jpg | Image | 200 | 26 KiB |
| https://www.wto.org/library/styles/fonts/museo/3308EE_2_0.woff2 | Font | 200 | 26 KiB |
| https://www.wto.org/library/news/news_vars_e.js | Script | 200 | 25 KiB |
| https://www.wto.org/library/styles/fonts/museo/3308EE_1_0.woff2 | Font | 200 | 25 KiB |
| https://www.wto.org/library/styles/wto-blessed3.css?z=1547634103057 | Stylesheet | 200 | 21 KiB |
| https://www.wto.org/library/styles/wto-blessed2.css?z=1547634103057 | Stylesheet | 200 | 20 KiB |
Long tasks (>50 ms)
| Start | Duration |
|---|---|
| 6973 ms | 2354 ms |
| 2932 ms | 2342 ms |
| 10098 ms | 719 ms |
| 1392 ms | 440 ms |
| 6073 ms | 213 ms |
| 737 ms | 201 ms |
| 9368 ms | 161 ms |
| 2372 ms | 135 ms |
| 1228 ms | 90 ms |
| 1326 ms | 58 ms |