www.linear.app
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 (≈5,089 across regions). Most tokens are real content — the agent isn't paying much for chrome.
Final screenshot
Diagnostics
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.
Rendered profile: headless
Metrics
Token Cost breakdown
Where the page's tokens go (≈5,092 across regions). Most tokens are real content — the agent isn't paying much for chrome.
Final screenshot
Diagnostics
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.
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 (1)
✗ 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/
Passed audits (11)
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=63072000; includeSubDomains |
| ⚠️ Content-Security-Policy | script-src allows 'unsafe-inline' |
| ❌ X-Content-Type-Options | missing nosniff |
| ✅ Referrer-Policy | same-origin |
| ➖ CORS exposure | no CORS headers on the document (normal for an HTML page) |
How to improve
largest contentful paint
longest task 630 ms (10 total)
DefaultRenderer-Cijd7zOp.js — 97 KiB transferred, 76.6% unused
3.2 MB total
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://static.linear.app/web/_next/static/chunks/DefaultRenderer-Cijd7zOp.js | 97 KiB | 76.6% | 74 KiB |
| https://static.linear.app/web/_next/static/chunks/RootActionBoundary-DQ6iuDiG.js | 66 KiB | 83.3% | 55 KiB |
| https://static.linear.app/web/_next/static/chunks/module-QXeJI-F2.js | 54 KiB | 70% | 38 KiB |
| https://static.linear.app/web/_next/static/chunks/framework-CtkhYy84.js | 58 KiB | 55.8% | 33 KiB |
| https://e.linear.app/static/surveys.js?v=1.257.1 | 33 KiB | 81.8% | 27 KiB |
| https://static.linear.app/web/_next/static/chunks/index-njFwt7ya.js | 55 KiB | 47.1% | 26 KiB |
| https://static.linear.app/web/_next/static/chunks/NewHeroIllustration-BET5ixnD.js | 33 KiB | 63.3% | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/dist-B1qWOmG0.js | 34 KiB | 49.8% | 17 KiB |
| https://static.linear.app/web/_next/static/chunks/MediaPlayer-BJFE0i2F.js | 19 KiB | 88.5% | 17 KiB |
| https://static.linear.app/web/_next/static/chunks/client-CPhNxvar.js | 21 KiB | 76.7% | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/schemas-CUdWxvaB.js | 18 KiB | 80.8% | 15 KiB |
| https://static.linear.app/web/_next/static/chunks/proxy-D4Kf6ynR.js | 21 KiB | 64.6% | 14 KiB |
| https://static.linear.app/web/_next/static/chunks/mobx.esm-BTlLkBkM.js | 16 KiB | 76.2% | 12 KiB |
| https://static.linear.app/web/_next/static/chunks/code-diff-Bfp_YACs.js | 24 KiB | 48.4% | 12 KiB |
| https://static.linear.app/web/_next/static/chunks/navigation-U0G9ozDB.js | 16 KiB | 70.3% | 11 KiB |
Network
Heaviest requests (30)
| URL | Type | Status | Transfer |
|---|---|---|---|
| https://linear.app/cdn-cgi/imagedelivery/fO02fVwohEs9s9UHFwon6A/c7fa8f5f-d439-4329-6a65-de549b51e300/f=auto,dpr=2,fit=scale-down,metadata=none | Image | 200 | 1008 KiB |
| https://linear.app/api/search-index | Fetch | 200 | 202 KiB |
| https://linear.app/homepage | Document | 200 | 177 KiB |
| https://linear.app/cdn-cgi/imagedelivery/fO02fVwohEs9s9UHFwon6A/c7b144b7-4ef0-4991-9bcb-617c6a37d200/f=auto,dpr=2,fit=scale-down,metadata=none | Image | 200 | 163 KiB |
| https://static.linear.app/fonts/Berkeley-Mono-Variable.woff2?v=3.2 | Font | 200 | 158 KiB |
| https://static.linear.app/web/_next/static/chunks/DefaultRenderer-Cijd7zOp.js | Script | 200 | 97 KiB |
| https://static.linear.app/web/_next/static/chunks/Providers-DgGJCi-N.js | Script | 200 | 84 KiB |
| https://static.linear.app/web/_next/static/chunks/RootActionBoundary-DQ6iuDiG.js | Script | 200 | 66 KiB |
| https://linear.app/customers?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 60 KiB |
| https://static.linear.app/web/_next/static/chunks/framework-CtkhYy84.js | Script | 200 | 58 KiB |
| https://static.linear.app/web/_next/static/chunks/index-njFwt7ya.js | Script | 200 | 55 KiB |
| https://static.linear.app/web/_next/static/chunks/module-QXeJI-F2.js | Script | 200 | 54 KiB |
| https://linear.app/now?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 44 KiB |
| https://static.linear.app/web/_next/static/chunks/dist-B1qWOmG0.js | Script | 200 | 34 KiB |
| https://static.linear.app/web/_next/static/chunks/NewHeroIllustration-BET5ixnD.js | Script | 200 | 33 KiB |
| https://e.linear.app/static/surveys.js?v=1.257.1 | Script | 200 | 33 KiB |
| https://static.linear.app/web/_next/static/chunks/code-diff-Bfp_YACs.js | Script | 200 | 24 KiB |
| https://static.linear.app/assets/pwa/icon_180.png?v=3 | Other | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/client-CPhNxvar.js | Script | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/proxy-D4Kf6ynR.js | Script | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/MotionConfigContext-BMMT9bWM.js | Script | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/MediaPlayer-BJFE0i2F.js | Script | 200 | 19 KiB |
| https://static.linear.app/web/_next/static/chunks/schemas-CUdWxvaB.js | Script | 200 | 18 KiB |
| https://linear.app/coding-sessions?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 18 KiB |
| https://static.linear.app/web/_next/static/chunks/mobx.esm-BTlLkBkM.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/navigation-U0G9ozDB.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/tsx-Bg64p_Hc.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/Image-Do2H-FpV.js | Script | 200 | 15 KiB |
| https://static.linear.app/web/_next/static/chunks/Header.client-NLrssi87.js | Script | 200 | 15 KiB |
| https://linear.app/contact?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 13 KiB |
Long tasks (>50 ms)
| Start | Duration |
|---|---|
| 6261 ms | 630 ms |
| 729 ms | 343 ms |
| 7480 ms | 326 ms |
| 7835 ms | 244 ms |
| 7209 ms | 219 ms |
| 1074 ms | 154 ms |
| 6927 ms | 127 ms |
| 5326 ms | 112 ms |
| 8080 ms | 108 ms |
| 8426 ms | 102 ms |