www.khanacademy.org
Metrics
Final screenshot
Diagnostics
100% of content requires JS
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.
signal 0.23 · JSON-LD 0/1 · missing: structured-data
Fix: Wrap the real content in <main>/<article>, cut repeated nav/boilerplate, and keep the primary content dense and early in the DOM.
Rendered profile: headless
Metrics
Final screenshot
Diagnostics
100% of content requires JS
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.
signal 0.23 · JSON-LD 0/1 · missing: structured-data
Fix: Wrap the real content in <main>/<article>, cut repeated nav/boilerplate, and keep the primary content dense and early in the DOM.
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 (4)
~ Machine-readable prices medium impact No prices found (fine for non-commercial sites)
Business impact When a user asks an agent 'how much does X cost', it needs readable pricing. Hidden, JS-only or 'request a quote' pricing means the agent can't answer — and recommends someone who can.
What we measured We scan the HTML for price patterns and Schema.org Offer/PriceSpecification markup.
How to fix Expose prices (or a starting-from range) in HTML and add Schema.org Offer.
<script type="application/ld+json">{"@type":"Offer","price":"29.90","priceCurrency":"EUR"}</script>Spec: https://schema.org/Offer
~ 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)
How to improve
2373 KiB (55%) of JS goes unused. Code-split, lazy-load below-the-fold scripts, and drop unused dependencies — less JS also lowers CAV Token Cost (TC) and speeds up agent parsing.
CLS is 0.316. Set explicit width/height on images and reserve space for late-loading content.
3.0 MB transferred. Enable Brotli, serve WebP/AVIF images, and defer non-critical resources.
JavaScript coverage
2373 KiB unused of 4307 KiB (55% unused JS) — unused JS inflates Token Cost (TC) and slows the agent's parse.
| Script | Size | Unused |
|---|---|---|
| https://cdn.kastatic.org/khanacademy/khanacademy.75a94b56b0207a4a.js | 2334 KiB | 1365 KiB (58%) |
| https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBP | 469 KiB | 282 KiB (60%) |
| https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.js | 426 KiB | 261 KiB (61%) |
| https://cdn.kastatic.org/khanacademy/20349.d9b431b866fd55e7.js | 154 KiB | 114 KiB (74%) |
| https://cdn.kastatic.org/khanacademy/30384.eb80796dc2c59272.js | 78 KiB | 65 KiB (84%) |
| https://cdn.kastatic.org/khanacademy/42157.d185f0a3e4c50a8c.js | 66 KiB | 47 KiB (72%) |
| https://cdn.kastatic.org/khanacademy/24546.a962fd8482f9d954.js | 46 KiB | 36 KiB (78%) |
| https://cdn.kastatic.org/khanacademy/8162.2962948d564a8c14.js | 72 KiB | 35 KiB (49%) |
| https://cdn.kastatic.org/khanacademy/8273.21563b95fbb018c4.js | 33 KiB | 26 KiB (79%) |
| https://cdn.kastatic.org/khanacademy/77327.58f1ec83c590f305.js | 28 KiB | 16 KiB (59%) |
| https://cdn.kastatic.org/khanacademy/14953.05ad24aa10dcf7d0.js | 18 KiB | 15 KiB (84%) |
| https://cdn.kastatic.org/khanacademy/57819.91e6a2fe98d3050f.js | 22 KiB | 14 KiB (66%) |
Network
Heaviest requests
| URL | Type | Status | Transfer |
|---|---|---|---|
| https://cdn.kastatic.org/ka-mpp/df8ccf02-5534-4732-a5a9-ecdae7c0ba0b.png | Image | 200 | 783 KiB |
| https://cdn.kastatic.org/khanacademy/khanacademy.75a94b56b0207a4a.js | Script | 200 | 725 KiB |
| https://www.googletagmanager.com/gtm.js?id=GTM-WSX5PBP | Script | 200 | 158 KiB |
| https://www.khanacademy.org/ | Document | 200 | 119 KiB |
| https://cdn.kastatic.org/khanacademy/images/[email protected] | Image | 200 | 108 KiB |
| https://cdn.cookielaw.org/scripttemplates/202310.2.0/otBannerSdk.js | Script | 200 | 103 KiB |
| https://www.khanacademy.org/api/features/sdk-u16yaYPyqdZ0OHuZ | Fetch | 200 | 97 KiB |
| https://cdn.kastatic.org/khanacademy/images/327662a27ed8e9d6-math-unicorn-donate-collage.webp | Image | 200 | 79 KiB |
| https://cdn.kastatic.org/khanacademy/images/[email protected] | Image | 200 | 74 KiB |
| https://cdn.kastatic.org/khanacademy/images/[email protected] | Image | 200 | 72 KiB |
| https://cdn.kastatic.org/sounds/khanmigo/audio_samples_v2/error/lmnt:khanmigo-m-1:en.txt | Fetch | 200 | 48 KiB |
| https://cdn.kastatic.org/khanacademy/fonts/71fc01820777da89-LatoLatin-Italic.woff2 | Font | 200 | 45 KiB |
| https://cdn.kastatic.org/khanacademy/fonts/1cf13853095a62e2-LatoLatin-Bold.woff2 | Font | 200 | 44 KiB |
| https://cdn.kastatic.org/khanacademy/fonts/d45d409d2fa42169-LatoLatin-Regular.woff2 | Font | 200 | 43 KiB |
| https://cdn.kastatic.org/khanacademy/20349.d9b431b866fd55e7.js | Script | 200 | 38 KiB |
| https://cdn.kastatic.org/images/ie-warning/browser_firefox.png | Image | 200 | 29 KiB |
| https://cdn.kastatic.org/khanacademy/images/5524c161fa4ef39b-boost-scores.webp | Image | 200 | 25 KiB |
| https://cdn.kastatic.org/khanacademy/8162.2962948d564a8c14.js | Script | 200 | 25 KiB |
| https://cdn.kastatic.org/khanacademy/30384.eb80796dc2c59272.js | Script | 200 | 23 KiB |
| https://cdn.cookielaw.org/logos/static/ot_company_logo.png | Image | 200 | 19 KiB |
| https://cdn.cookielaw.org/consent/757b7941-c87a-4c66-8f35-eed366c64b57/018dd1ad-8ae3-7978-89b9-87c467eef3d1/en.json | Fetch | 200 | 17 KiB |
| https://cdn.kastatic.org/khanacademy/42157.d185f0a3e4c50a8c.js | Script | 200 | 17 KiB |
| https://cdn.kastatic.org/khanacademy/fonts/03ac24f73354c182-SourceSerifPro-Regular.woff2 | Font | 200 | 16 KiB |
| https://cdn.kastatic.org/khanacademy/fonts/b430c69579ae2887-SourceSerifPro-Semibold.woff2 | Font | 200 | 16 KiB |
| https://cdn.kastatic.org/khanacademy/runtime.c55414019efae9d7.js | Script | 200 | 14 KiB |
| https://cdn.kastatic.org/khanacademy/24546.a962fd8482f9d954.js | Script | 200 | 14 KiB |
| https://cdn.cookielaw.org/scripttemplates/202310.2.0/assets/v2/otPcCenter.json | Fetch | 200 | 13 KiB |
| https://cdn.kastatic.org/khanacademy/khanacademy.b274f0d95d7d3d64.css | Stylesheet | 200 | 13 KiB |
| https://cdn.kastatic.org/khanacademy/72690.337d2cb05ca8c2d9.js | Script | 200 | 12 KiB |
| https://toolbox.marketingtools.apple.com/api/badges/download-on-the-app-store/black/en-us?releaseDate=1331424000 | Image | 200 | 11 KiB |
Long tasks (>50 ms)
| Start | Duration |
|---|---|
| 213 ms | 76 ms |
| 464 ms | 66 ms |