www.khanacademy.org

Report from 8/10/2026, 12:38:05 PM https://www.khanacademy.org
Latest run · lab, cold cache
0
8/10/2026
28-day score · p75 · the standard
0
28 runs
CRR0%latest
SSD26%latest
TC688 toklatest
TTFUT147 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 nameKhan Academy · 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.

An agent recovered no usable content from this page without executing JavaScript.
0
Overall score
weighted CAV (0–100)
FAIL
0–4950–8990–100

Metrics

0%
CRR Content Recovery Poor
0.26
SSD Semantic Signal Density Poor
688 tok
TC Token Cost Good
154 ms
TTFUT Time to First Useful Token N/A

Token Cost breakdown

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

Content
47.2% · 1,771
Chrome (nav / header / footer)
31.5% · 1,182
Boilerplate (cookie / ad)
18.8% · 705
Other
2.5% · 93

Final screenshot

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

Diagnostics

high CRR Content is hidden behind JavaScript

pre-JS raw HTML

Evidence100% of content requires JS
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.44 · 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 52.8% of tokens are non-content (boilerplate/chrome)

agent representation — token decomposition

EvidenceToken decomposition: content 47.2%, chrome 31.5%, boilerplate 18.8%, other 2.5%. Only 47.2% 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 62/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) Blocks: GPTBot Learn →
sitemap.xml Found at /sitemap.xml 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 (4)

robots.txt allows AI bots high impact Blocks: GPTBot

Business impact If robots.txt blocks AI crawlers you are invisible to ChatGPT, Claude and Perplexity — they skip you and recommend a competitor instead.

What we measured We read /robots.txt and test it against 16 AI user-agents (GPTBot, ClaudeBot, PerplexityBot, …) for a Disallow that blocks them.

How to fix Allow major AI bots to public content; restrict only private paths (/admin, /api).

Learn how to implement →

User-agent: GPTBot
Allow: /
Disallow: /admin/

Spec: https://platform.openai.com/docs/gptbot

~ No content-blocking cookie wall medium impact Consent platform: cookiebot (verify it doesn't block content)

Business impact A consent wall that hides content until a click is invisible to agents — they cannot click 'Accept'.

What we measured We fingerprint OneTrust, Cookiebot, Usercentrics and similar managers and flag content-blocking ones.

How to fix Use an overlay banner that leaves content in the DOM, not a blocking interstitial.

Spec: https://gdpr.eu/cookies/

~ 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/

Passed audits (7)

✓ No CAPTCHA wall✓ No login wall on public content✓ XML sitemap present + fresh✓ 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.

92Transport posture (0–100, unscored)
4pass
1warn
0fail
Per-header findings (6)
HeaderEvidence
✅ HTTPSserved over HTTPS
✅ HSTSmax-age=31536000; includeSubDomains; preload
✅ Content-Security-Policypolicy present, script-src does not allow inline
✅ X-Content-Type-Optionsnosniff
⚠️ 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.6b13cdf9dd6bb252.js — 714 KiB transferred, 58.6% unused (third-party)

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

kastatic.org — 2109 KiB, 68 requests, 222 ms main-thread

EvidenceThird-party is 94.1% of total transfer (81 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.336.
ImpactStable layout for render + screenshot.
Effort30–60 min
FixSet explicit width/height on images; reserve space for late-loading content.
mediumBreak up long main-thread tasks

longest task 121 ms (2 total)

EvidenceMain thread blocked 121 ms by the longest task.
ImpactFaster interactivity + content settling.
Effort1–4 h
FixSplit heavy work, defer third-party scripts, move compute off the main thread.
mediumCut total transfer weight

2.6 MB total

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

Third-party impact

81 third-party requests · 2461 KiB (94.1% of transfer) · 222 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.org682109 KiB222 ms
cookielaw.org10180 KiB
googletagmanager.com1161 KiB
apple.com111 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.6b13cdf9dd6bb252.js 3P714 KiB58.6%418 KiB
https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBP 3P161 KiB60.3%97 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.js 3P103 KiB61.1%63 KiB
https://cdn.kastatic.org/khanacademy/16914.a29881af8838a9c2.js 3P35 KiB74.3%26 KiB
https://cdn.kastatic.org/khanacademy/62257.b0e56ef60b495c14.js 3P23 KiB83.7%20 KiB
https://cdn.kastatic.org/khanacademy/25071.5ee7a73a959b9915.js 3P13 KiB79.7%10 KiB
https://cdn.kastatic.org/khanacademy/8273.d6ae3993a3701930.js 3P9 KiB79.5%7 KiB
https://cdn.kastatic.org/khanacademy/14953.ed9dce10bea3a8ce.js 3P6 KiB84.6%5 KiB
https://cdn.cookielaw.org/scripttemplates/otSDKStub.js 3P9 KiB45.9%4 KiB
https://cdn.kastatic.org/khanacademy/29226.6eccf3e2be9bb6dc.js 3P21 KiB19.7%4 KiB
https://cdn.kastatic.org/khanacademy/73950.aabeead257a16f5d.js 3P5 KiB77.4%4 KiB
https://cdn.kastatic.org/khanacademy/57819.32644b5e098e69bf.js 3P5 KiB65.8%4 KiB
https://cdn.kastatic.org/khanacademy/76684.0cc3e5250ad93e32.js 3P5 KiB76.1%4 KiB
https://cdn.kastatic.org/khanacademy/11860.ca810a3d9682dbab.js 3P4 KiB85.9%3 KiB
https://cdn.kastatic.org/khanacademy/75083.5d34075adf63db25.js 3P4 KiB62.9%2 KiB

Network

97Requests
2615 KiBTransferred
25Scripts
94.1%3rd-party
2Long tasks
Script (25)
1157 KiB
Image (41)
964 KiB
Font (5)
227 KiB
Fetch (20)
166 KiB
Document (1)
79 KiB
Stylesheet (2)
18 KiB
XHR (2)
3 KiB
Other (1)
1 KiB
Heaviest requests (30)
URLTypeStatusTransfer
https://cdn.kastatic.org/ka-mpp/ab38b054-1a1c-401e-bbde-58f19df734f3.pngImage200783 KiB
https://cdn.kastatic.org/khanacademy/khanacademy.6b13cdf9dd6bb252.jsScript200714 KiB
https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBPScript200161 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.jsScript200103 KiB
https://www.khanacademy.org/Document20079 KiB
https://www.khanacademy.org/api/features/sdk-u16yaYPyqdZ0OHuZFetch20066 KiB
https://cdn.kastatic.org/khanacademy/fonts/6964dfbfb0312ae1-PlusJakartaSans-Italic-VariableFont_wght.woff2Font20064 KiB
https://cdn.kastatic.org/khanacademy/fonts/951cb95b43c04e99-PlusJakartaSans-VariableFont_wght.woff2Font20060 KiB
https://cdn.kastatic.org/sounds/khanmigo/audio_samples_v2/error/lmnt:khanmigo-m-1:en.txtFetch20048 KiB
https://cdn.kastatic.org/khanacademy/fonts/1cf13853095a62e2-LatoLatin-Bold.woff2Font20044 KiB
https://cdn.kastatic.org/khanacademy/fonts/d45d409d2fa42169-LatoLatin-Regular.woff2Font20043 KiB
https://cdn.kastatic.org/khanacademy/16914.a29881af8838a9c2.jsScript20035 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20034 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/62257.b0e56ef60b495c14.jsScript20023 KiB
https://cdn.kastatic.org/khanacademy/29226.6eccf3e2be9bb6dc.jsScript20021 KiB
https://cdn.cookielaw.org/logos/static/ot_company_logo.pngImage20019 KiB
https://cdn.kastatic.org/khanacademy/khanacademy.2339b08e45f2a9cb.cssStylesheet20017 KiB
https://cdn.kastatic.org/khanacademy/fonts/03ac24f73354c182-SourceSerifPro-Regular.woff2Font20016 KiB
https://cdn.kastatic.org/khanacademy/runtime.bf2d676b85c5f93b.jsScript20013 KiB
https://cdn.kastatic.org/khanacademy/25071.5ee7a73a959b9915.jsScript20013 KiB
https://cdn.cookielaw.org/scripttemplates/202310.2.0/assets/v2/otPcCenter.jsonFetch20013 KiB
https://toolbox.marketingtools.apple.com/api/badges/download-on-the-app-store/black/en-us?releaseDate=1331424000Image20011 KiB
https://cdn.kastatic.org/khanacademy/images/[email protected]Image20011 KiB
https://cdn.kastatic.org/khanacademy/44272.a0cb7b173313d9e8.jsScript2009 KiB
https://cdn.cookielaw.org/scripttemplates/otSDKStub.jsScript2009 KiB
https://cdn.kastatic.org/khanacademy/8273.d6ae3993a3701930.jsScript2009 KiB
https://cdn.kastatic.org/images/ie-warning/browser_chrome.pngImage2007 KiB

Long tasks (>50 ms)

StartDuration
229 ms121 ms
354 ms60 ms
Analyzing…
running mobile + desktop · ~30s