# Linear pricing teardown · 20/100 · Onto
> Linear is widely admired by developers for product polish. Their pricing page tells the opposite story to AI agents: 1.8 MB of JS for what reduces to 0.3 KB of actual content. 462,336 tokens of garbage. A single GPT-4 query against this URL costs $4.62 — and the agent comes back with a high hallucination risk.

**Source:** /case-studies/linear-pricing
**Extracted:** 2026-05-20T20:59:17.674Z

---
TeardownLinear · May 2026

## Linear's pricing page is 1.8 MB of JavaScript  
_for a 0.3 KB page._

Linear is the company developers cite when they want to point at product polish done right. Their pricing page tells the opposite story to AI agents: 1,806 KB of bytes resolve to **2,289 characters** of actual content — a 96.6% noise ratio. A single GPT-4 query against this URL costs **$4.62**, and the agent comes back with a **high hallucination risk** flag.

[Live target · linear.app/pricing](https://linear.app/pricing)

20/100

AI-hostileAIO Score · the lowest we've published

Read time7 min read

ScannedMay 2026

// TL;DR

If you ask Claude about Linear's pricing tiers today, the model is fetching 462,336 tokens to extract four tier names and a tagline. There is no JSON-LD anchor, no Markdown surface, no agent-aware routing — just the SPA bundle and hope. With one middleware install, the same content becomes 74 tokens, sub-15 ms edge delivery, and zero hallucination risk. The human pricing page renders exactly as it does today.

01 // Pillar breakdown

### Where the 80 points went.

The AIO score is subtractive — every penalty traces to a specific structural issue. Linear loses points in all three pillars; two of them are at the floor.

01Weight · 40%

React Tax

How much of the HTML is noise?

96.6%of downloaded bytes are visual noise

This is the worst React Tax we've measured on a major SaaS pricing page. Nineteen bytes of CSS and JS for every one byte of actual content. An AI agent fetching this URL spends 99.9% of its token budget on visual scaffolding it cannot use.

Raw payload

1,806 KB

Semantic text

2,289 chars

02Weight · 35%

Semantic Richness

Does the HTML tell a structured story?

1 / 2structural checks fail

Heading hierarchy is strong, which is the only reason Linear scores above zero. But there's no JSON-LD schema — no Schema.org markup describing the product, the pricing tiers, the offers. An AI agent has to infer everything structurally from H-tags alone.

JSON-LD schema

Missing

Heading hierarchy

Strong

03Weight · 25%

Content Negotiation

Does the server speak Markdown?

Missingno Accept-header negotiation

Linear's server has one response for every caller: the same 1.8 MB React payload. Send Accept: text/markdown, send a ClaudeBot User-Agent, send anything — you get the SPA bundle. No agent surface. No bot route. No opt-out.

Markdown serving

No

Robots.txt

Allowed

02 // Agent-readiness checklist

### 3 of 5 checks pass. Two of them are foundational.

The infrastructure side of agent-readiness is fine — robots open, WAF permissive, headings structured. The two application-layer checks both fail: no schema, no content negotiation.

01Robots.txt allows agent crawlingPass

02WAF passing agent trafficPass

03Native Markdown content negotiationFail

04JSON-LD schema verificationFail

05Deep semantic hierarchy (H1–H3)Pass

03 // What an AI agent receives

### All of Linear's pricing fits in 0.3 KB.

Below is exactly what Onto's cleaning engine extracts when an AI agent calls Linear's pricing URL — preserved heading hierarchy, four tier names, the tagline. `0.3 KB` instead of `1,806 KB`. The semantic information that exists is preserved. The information that doesn't exist is exposed for what it is — absent.

.onto/md · linear-pricing · 0.3 KB

\# Pricing – Linear
\> Use Linear for free with your whole team. Upgrade to enable unlimited
\> issues, enhanced security controls, and additional features.
\*\*Source:\*\* https://linear.app/pricing
\## Pricing
\#### Free
\#### Basic
\#### Business
\#### Enterprise
\### Built for the future. Available today.
\# Protocol · Semantic\_Extraction\_v1.0
\# Hallucination risk · High

6,227×Smaller

462,336 → 74Tokens (raw → clean)

HighHallucination risk

04 // Recommended fixes

### Three fixes. The first one is decisive.

Linear's scoring problem isn't about React itself — it's about not having a parallel surface for agents. One middleware install creates that surface without touching the product UI.

01High priority

Install @ontosdk/next

Zero change required to application code. Automates Markdown extraction at build-time, routes agents to the .onto payload at the edge.

[Fix with Onto](/serve-sdk)

02Medium priority

Reduce React Tax

96.6% bloat is unusual even for SPA-heavy stacks. Server-side extraction would reduce token waste even on the human surface and improve LCP.

[Fix with Onto](/serve-sdk)

03Medium priority

Add JSON-LD schema

Critical for AI to verify facts about products, plans, and offers. Add Schema.org Product / Offer / Organization scripts — fifteen minutes of work.

[Fix with Onto](/serve-sdk)

05 // Projected impact

### What changes after one middleware install.

6,227×

Payload reduction

1,806 KB → 0.3 KB

100%

Token waste eliminated

462,336 → 74 tokens

$0.0007

Cost / GPT-4 query

was $4.623 · with Onto

<15 ms

Edge response

p99 · CDN edge node

If Linear ran Onto

### Don't guess your own score. Measure it.

The AIO scanner runs the same five checks against any public URL, free, in your browser. If your score is below Linear's, we'd like to know.

[Scan your site](/#scanner)// No card · No signup · 4 seconds

[← All teardowns](/case-studies)[Stripe pricing teardown →](/case-studies/stripe-pricing)