www.khanacademy.org

Report from 9/21/2026, 1:09:52 PM https://www.khanacademy.org
Latest run · lab, cold cache
27
9/21/2026
28-day score · p75 · the standard
27
27 runs
CRR3%latest
SSD24%latest
TC710 toklatest
TTFUT7 ms28-day p75

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.

Core Agent Vitals badge  Embed this badge

Show your agent-readiness score anywhere — it links back to this report.

[![Core Agent Vitals](https://agentvitals.dev/badge/khanacademy.org.svg)](https://agentvitals.dev/results?url=https%3A%2F%2Fwww.khanacademy.org)
<a href="https://agentvitals.dev/results?url=https%3A%2F%2Fwww.khanacademy.org"><img src="https://agentvitals.dev/badge/khanacademy.org.svg" alt="Core Agent Vitals" height="20"></a>
What AI tells your customers about youAgent confidence: LOW
🟡Business nameClient Challenge · guessed from page text (no structured data)
Categorynot found
Pricenot applicable · not applicable to this page type
Locationnot applicable · not applicable to this page type
Hoursnot applicable · not applicable to this page type
Productsnot applicable · not applicable to this page type
Descriptionnot found

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.

27
Overall score
weighted CAV (0–100)
FAIL
0–4950–8990–100

Metrics

3%
CRR Content Recovery Poor
0.24
SSD Semantic Signal Density Poor
710 tok
TC Token Cost Good
124 ms
TTFUT Time to First Useful Token N/A

Token Cost breakdown

Where the page's tokens go (≈4,084 across regions). 55% is non-content — chrome and boilerplate an agent pays for. Add landmark roles (main/nav/header/footer) so agents can skip it.

Content
44.8% · 1,831
Chrome (nav / header / footer)
29.6% · 1,208
Boilerplate (cookie / ad)
17.3% · 705
Other
8.3% · 340

Final screenshot

Final screenshot of https://www.khanacademy.org

Diagnostics

high CRR Content is hidden behind JavaScript

pre-JS raw HTML

Evidence97% of content requires JS · 3% of rendered content recovered (rest is placeholder/wrong)
ImpactA non-rendering agent never sees the JS-injected content.
Effort1–4 h

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.

high SSD Low signal-to-noise for agents

content vs chrome/boilerplate

Evidencesignal 0.41 · JSON-LD 0/1 · missing: structured-data
ImpactAgent spends tokens parsing nav/boilerplate instead of content.
Effort30–90 min

Fix: Wrap the real content in <main>/<article>, cut repeated nav/boilerplate, and keep the primary content dense and early in the DOM.

medium TC 55.2% of tokens are non-content (boilerplate/chrome)

agent representation — token decomposition

EvidenceToken decomposition: content 44.8%, chrome 29.6%, boilerplate 17.3%, other 8.3%. Only 44.8% of the agent's tokens are real content.
ImpactAn agent pays for boilerplate on every request and has less context left for the real content.
Effort30–90 min

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

Agent Discoverability 78/100 · Needs Work

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

~ llms.txt Found at /llms.txt but missing H1/blockquote Learn →
robots.txt (AI bots) Major AI bots allowed Learn →
~ sitemap.xml Sitemap found but no <url>/<loc> entries Learn →
JSON-LD structured data No JSON-LD found Learn →
agents.json Found at /agents.json Learn →
WebMCP endpoint Found at /.well-known/webmcp Learn →
OpenAPI / API docs Found at /openapi.json Learn →

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.

Learn how to implement →

# Your Site
> One-line description for AI agents.

## Key pages
- /products — catalog
- /pricing — plans
- /docs — documentation

Spec: 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.

Learn how to implement →

<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.

Learn how to implement →

# robots.txt
Sitemap: https://example.com/sitemap.xml

Spec: https://www.sitemaps.org/

Passed audits (8)

✓ robots.txt allows AI bots✓ No CAPTCHA wall✓ No content-blocking cookie wall✓ No login wall on public content✓ Server response (TTFB)✓ agents.json discovery✓ WebMCP endpoint✓ API documentation

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.

37Transport posture (0–100, unscored)
1pass
1warn
3fail
Per-header findings (6)
HeaderEvidence
✅ HTTPSserved over HTTPS
❌ HSTSno strict-transport-security header
❌ Content-Security-Policyno content-security-policy header
❌ X-Content-Type-Optionsmissing nosniff
⚠️ Referrer-Policyno referrer-policy header (browser default applies)
➖ CORS exposureno CORS headers on the document (normal for an HTML page)
Full profile — how to improve · unused JS · network · timing

How to improve

highSplit the heaviest unused bundlehighest leverage

khanacademy.cc4f9d7f3ae2c81b.js — 540 KiB transferred, 58.8% unused (third-party)

EvidenceCDP JS coverage: 318 KiB of this bundle is never executed on load.
Impact~-318 KiB transfer; lower Token Cost + faster agent parse.
Effort30–90 min
FixDynamic-import() the below-the-fold parts of khanacademy.cc4f9d7f3ae2c81b.js, or drop unused dependencies. It is third-party — lazy-load or remove it.
highCut third-party weight

kastatic.org — 1829 KiB, 61 requests, 123 ms main-thread

EvidenceThird-party is 93.7% of total transfer (73 requests); kastatic.org is the largest.
ImpactFewer bytes + main-thread stalls before your content settles for an agent.
Effort1–3 h
FixLazy-load, self-host, or remove kastatic.org; defer non-critical third-party scripts.
highReduce layout shift

cumulative layout shift

EvidenceCLS is 0.39.
ImpactStable layout for render + screenshot.
Effort30–60 min
FixSet explicit width/height on images; reserve space for late-loading content.
mediumCut total transfer weight

2.3 MB total

Evidence2.3 MB transferred.
ImpactCheaper, faster fetch on slow links.
Effort1–3 h
FixEnable Brotli, serve WebP/AVIF images, defer non-critical resources.

Third-party impact

73 third-party requests · 2173 KiB (93.7% of transfer) · 123 ms main-thread — code an agent must also fetch/run before your content settles. Fewer, lazier third-parties = faster, cheaper agent reads.

Third-party domainReqsTransferMain-thread
kastatic.org611829 KiB123 ms
cookielaw.org10180 KiB
googletagmanager.com1163 KiB
onetrust.com10 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).

BundleTransferUnusedWasted
https://cdn.kastatic.org/khanacademy/khanacademy.cc4f9d7f3ae2c81b.js 3P540 KiB58.8%318 KiB
https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBP 3P163 KiB61.2%100 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.js 3P103 KiB61.1%63 KiB
https://cdn.kastatic.org/khanacademy/87950.592edd9d6eaaf3da.js 3P22 KiB19.4%4 KiB
https://cdn.cookielaw.org/scripttemplates/otSDKStub.js 3P9 KiB46.1%4 KiB
https://cdn.kastatic.org/khanacademy/91346.6f91459427ba1aca.js 3P5 KiB34.5%2 KiB
https://cdn.kastatic.org/khanacademy/runtime.19724688045a3e27.js 3P14 KiB11.1%2 KiB
https://cdn.kastatic.org/khanacademy/44272.b036a83d8b3078f0.js 3P9 KiB16.9%1 KiB
https://cdn.kastatic.org/khanacademy/66554.252e9f10aa3ed093.js 3P3 KiB29.1%1 KiB
https://cdn.kastatic.org/khanacademy/84395.c8770f3205a8f771.js 3P3 KiB17.8%0 KiB
https://cdn.kastatic.org/khanacademy/52337.906bd1f3075b5765.js 3P2 KiB19.5%0 KiB
https://cdn.kastatic.org/khanacademy/75859.7b0c52a2272d6e69.js 3P1 KiB15.9%0 KiB
https://cdn.kastatic.org/khanacademy/17811.35182fd27d742aef.js 3P2 KiB3.6%0 KiB
https://cdn.kastatic.org/khanacademy/67001.4d011ba8d6e15ce3.js 3P1 KiB0.5%0 KiB

Network

88Requests
2318 KiBTransferred
14Scripts
93.7%3rd-party
1Long tasks
Image (45)
1003 KiB
Script (14)
877 KiB
Font (5)
227 KiB
Fetch (18)
114 KiB
Document (1)
75 KiB
Stylesheet (2)
18 KiB
XHR (2)
3 KiB
Other (1)
1 KiB
Heaviest requests (30)
URLTypeStatusTransfer
https://cdn.kastatic.org/ka-mpp/2f791629-46fe-4653-9fbd-097d991c7db7.pngImage200783 KiB
https://cdn.kastatic.org/khanacademy/khanacademy.cc4f9d7f3ae2c81b.jsScript200540 KiB
https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBPScript200163 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.jsScript200103 KiB
https://www.khanacademy.org/Document20075 KiB
https://cdn.kastatic.org/khanacademy/fonts/6964dfbfb0312ae1-PlusJakartaSans-Italic-VariableFont_wght.woff2Font20064 KiB
https://www.khanacademy.org/api/features/sdk-u16yaYPyqdZ0OHuZFetch20063 KiB
https://cdn.kastatic.org/khanacademy/fonts/951cb95b43c04e99-PlusJakartaSans-VariableFont_wght.woff2Font20059 KiB
https://cdn.kastatic.org/khanacademy/fonts/1cf13853095a62e2-LatoLatin-Bold.woff2Font20044 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20044 KiB
https://cdn.kastatic.org/khanacademy/fonts/d45d409d2fa42169-LatoLatin-Regular.woff2Font20043 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20033 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20029 KiB
https://cdn.kastatic.org/images/ie-warning/browser_firefox.pngImage20029 KiB
https://cdn.cookielaw.org/consent/757b7941-c87a-4c66-8f35-eed366c64b57/018dd1ad-8ae3-7978-89b9-87c467eef3d1/en.jsonFetch20024 KiB
https://cdn.kastatic.org/khanacademy/87950.592edd9d6eaaf3da.jsScript20022 KiB
https://cdn.cookielaw.org/logos/static/ot_company_logo.pngImage20019 KiB
https://cdn.kastatic.org/khanacademy/khanacademy.10bb245398371d72.cssStylesheet20017 KiB
https://cdn.kastatic.org/khanacademy/fonts/03ac24f73354c182-SourceSerifPro-Regular.woff2Font20016 KiB
https://cdn.kastatic.org/khanacademy/runtime.19724688045a3e27.jsScript20014 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/assets/v2/otPcCenter.jsonFetch20013 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20011 KiB
https://cdn.cookielaw.org/scripttemplates/otSDKStub.jsScript2009 KiB
https://cdn.kastatic.org/khanacademy/44272.b036a83d8b3078f0.jsScript2009 KiB
https://cdn.kastatic.org/images/ie-warning/browser_chrome.pngImage2008 KiB
https://cdn.kastatic.org/images/store-badges/google-play/en.pngImage2006 KiB
https://cdn.kastatic.org/khanacademy/91346.6f91459427ba1aca.jsScript2005 KiB
https://www.khanacademy.org/api/internal/graphql/learnMenuTopicsQuery?hash=365090232&fastly_cacheable=persist_until_publish&pcv=4bafdbe7dfd76808ea29db261f15260918110026&variables=%7B%22region%22%3A%22CA-BC%22%7D&lang=en&app=khanacademyFetch2005 KiB
https://cdn.kastatic.org/khanacademy/images/a2e763b82653be76-en.svgImage2004 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/assets/otCommonStyles.cssFetch2004 KiB

Long tasks (>50 ms)

StartDuration
235 ms76 ms
Analyzing…
running mobile + desktop · ~30s