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,192 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,195 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 654 ms (10 total)
DefaultRenderer-CjeqydK0.js — 98 KiB transferred, 76.6% unused
4.0 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-CjeqydK0.js | 98 KiB | 76.6% | 75 KiB |
| https://static.linear.app/web/_next/static/chunks/RootActionBoundary-R3ommUQ_.js | 66 KiB | 83.1% | 54 KiB |
| https://static.linear.app/web/_next/static/chunks/module-DUhZb3va.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.7% | 27 KiB |
| https://static.linear.app/web/_next/static/chunks/index-Cutr8tbQ.js | 54 KiB | 46.4% | 25 KiB |
| https://static.linear.app/web/_next/static/chunks/NewHeroIllustration-_hBeO_t4.js | 34 KiB | 63.3% | 22 KiB |
| https://static.linear.app/web/_next/static/chunks/dist-BBQIoIT1.js | 34 KiB | 49.8% | 17 KiB |
| https://static.linear.app/web/_next/static/chunks/MediaPlayer-CpROpPpY.js | 19 KiB | 88.5% | 17 KiB |
| https://static.linear.app/web/_next/static/chunks/client-DLQzarB5.js | 21 KiB | 76.8% | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/schemas-1oG5yX9I.js | 18 KiB | 80.5% | 14 KiB |
| https://static.linear.app/web/_next/static/chunks/proxy-B0gOJCtV.js | 21 KiB | 64.2% | 14 KiB |
| https://static.linear.app/web/_next/static/chunks/mobx.esm-CBZMzfr1.js | 16 KiB | 76.2% | 12 KiB |
| https://static.linear.app/web/_next/static/chunks/code-diff-BJwkx2KE.js | 24 KiB | 48.4% | 12 KiB |
| https://static.linear.app/web/_next/static/chunks/navigation-DYN2d8gp.js | 16 KiB | 71.6% | 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/homepage | Document | 200 | 352 KiB |
| https://linear.app/now?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 208 KiB |
| https://linear.app/customers?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 207 KiB |
| https://linear.app/coding-sessions?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 205 KiB |
| https://linear.app/pricing?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 202 KiB |
| https://linear.app/contact?_rsc=j7FLHZTo1wAklyJY | Fetch | 200 | 200 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-CjeqydK0.js | Script | 200 | 98 KiB |
| https://static.linear.app/web/_next/static/chunks/Providers-CBuMU21Z.js | Script | 200 | 84 KiB |
| https://static.linear.app/web/_next/static/chunks/RootActionBoundary-R3ommUQ_.js | Script | 200 | 66 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-Cutr8tbQ.js | Script | 200 | 54 KiB |
| https://static.linear.app/web/_next/static/chunks/module-DUhZb3va.js | Script | 200 | 54 KiB |
| https://static.linear.app/web/_next/static/chunks/NewHeroIllustration-_hBeO_t4.js | Script | 200 | 34 KiB |
| https://static.linear.app/web/_next/static/chunks/dist-BBQIoIT1.js | Script | 200 | 34 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-BJwkx2KE.js | Script | 200 | 24 KiB |
| https://static.linear.app/web/_next/static/chunks/client-DLQzarB5.js | Script | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/proxy-B0gOJCtV.js | Script | 200 | 21 KiB |
| https://static.linear.app/assets/pwa/icon_180.png?v=3 | Other | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/MotionConfigContext-czndVmd6.js | Script | 200 | 21 KiB |
| https://static.linear.app/web/_next/static/chunks/MediaPlayer-CpROpPpY.js | Script | 200 | 19 KiB |
| https://static.linear.app/web/_next/static/chunks/schemas-1oG5yX9I.js | Script | 200 | 18 KiB |
| https://static.linear.app/web/_next/static/chunks/mobx.esm-CBZMzfr1.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/tsx-fUK4hkA7.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/navigation-DYN2d8gp.js | Script | 200 | 16 KiB |
| https://static.linear.app/web/_next/static/chunks/Image-DhwWqjmC.js | Script | 200 | 15 KiB |
| https://static.linear.app/web/_next/static/chunks/Header.client-Dpt0ovNn.js | Script | 200 | 15 KiB |
Long tasks (>50 ms)
| Start | Duration |
|---|---|
| 1397 ms | 654 ms |
| 4465 ms | 563 ms |
| 2151 ms | 147 ms |
| 5056 ms | 128 ms |
| 3836 ms | 117 ms |
| 3047 ms | 93 ms |
| 3558 ms | 93 ms |
| 3142 ms | 89 ms |
| 5657 ms | 81 ms |
| 3670 ms | 80 ms |