Typeset.us — an argument, set by its subject
The Browser Types. It Doesn’t Read.
Pick up any book you trust. Open it anywhere and run your eye down the right-hand edge of the text. You will rarely find a line that ends on the word of or a the dangling at an edge, cut off from its noun. You will not find the last line of a paragraph holding one abandoned word. Books have been free of these things for five hundred years — not by luck, but because the people who set them considered such breaks defects, and fixed them, by hand, line by line.
Now open the last article you read — on this same screen.
The browser sets text with one rule: fill the line until the next word doesn’t fit, then break. It is fast, it is simple, and it has no idea what it is breaking. It doesn’t know that of belongs to the word that follows it. It doesn’t know a sentence just started. It doesn’t know your paragraph ends on its most important word and just stranded it alone. The browser types. It doesn’t read.
This wasn’t always going to be the deal. When text moved from metal to screens, the composing room’s judgment — the part that read the line before breaking it — was supposed to be rebuilt in software. Donald Knuth and Michael Plass actually did it, in 1981, and did it provably: score every way a paragraph could break, charge each flaw a cost, take the composition with the lowest total. Not taste — arithmetic you could check. Their algorithm went on to set the world’s scientific literature through TeX, and when Adobe built InDesign it built the Paragraph Composer on their idea. QuarkXPress, which still broke one line at a time, spent the next decade losing designers to it — me among them. Print took the science and never looked back.
The browsers skipped it. Not out of contempt — out of arithmetic. A nineties browser was laying out text while it was still downloading, into columns that could change width at any moment, on machines with nothing to spare; a one-pass greedy break was the only bill it could pay. The emergency measure calcified into the definition of a line on the web. The machines have gotten ten thousand times faster since. The rule was never revisited. The web got CSS instead: word-spacing, text-align, and forty years of waiting.
The platform’s answer, measured
The platform is finally moving. text-wrap: pretty shipped in Chrome and Safari, and it is genuinely better than nothing — Safari’s version even scores the whole paragraph. Credit where due. But look at what it optimizes: line lengths, hyphenation points, the geometry of the rag. No shipping implementation knows what a preposition is. None will spend a line to keep a sentence’s opening intact. And the spec offers no way to ask what it did — pretty is defined as permission for the browser to try harder, which cannot be tested, asserted on, or trusted with anything you care about.
Don’t take my word for any of this. Here is the same paragraph, three ways, measured from the actual rendering in your browser, right now:
Counts are measured from the rendering above, right now, in your browser — drag the slider and watch them change. Dotted marks show each measured flaw.
Taste you can assert on
Typeset is a compositor that runs where the browser’s decision actually lands: on the rendered line. It leans on Knuth and Plass’s science without apology — whole-paragraph scoring, costs for flaws, the composition with the least total damage — because they were right, and forty years of everyone else’s print work has already confirmed it. What we added is what their world never needed: the paragraph is scored the way a reader experiences it — meaning first, shape second. A line may not end on a word that belongs to the next one. A paragraph may not abandon its last word. The right edge should move the way a book’s does: gently, without cliffs. Within those rules it chooses among thousands of candidate compositions, at about a millisecond and a half per paragraph.
And then it checks its own work. Every composition is re-measured against the live rendering. If a webfont arrives late, if a container lies about its width, if any of a dozen browser quirks would make the composed paragraph worse than the browser’s own, the engine restores the original and records why. The result is a property no CSS declaration can offer: audit() returns the measured violations on the page — overflows, orphans, weak line-ends — as data. Zero means zero. Your CI can assert it. Your AI agent can verify it. You can paste any URL into the grader and watch it count.
That is the actual disagreement with the platform. Not whether the browser should try harder — it should, and it’s starting to — but whether typography is a vibe or a claim. A vibe you take on faith. A claim you can measure. Five hundred years of composition happened one measurable decision at a time, and the people who made those decisions would be baffled by a web that calls its text “pretty” and cannot say what it fixed.
What it doesn’t do
A claim, unlike a vibe, has boundaries — so here are ours. Typeset reads English prose and nothing else; drop it on another language and it will decline rather than guess. Text you copy from a composed paragraph carries a line break where each line ended — we chose that over the worse defect of welded words. Until version 3.3, paragraphs carrying links or emphasis kept their protections but not their composition; that gap is now closed, and this essay — links, italics, code and all — is the proof. And typeset does not read, either. It runs the checklist five centuries of compositors wrote — priced, searched, and measured — at the speed of the machine that forgot it. Every limit above is a decision with a number on it, and the full accounting is public in the journal.
One line
This page runs the engine it argues for: every paragraph of this essay — including this one — was composed while your browser loaded it. You don’t have to take that on faith either; paste this page’s address into the grader and let it count. The install is one line, it works on any site you own, and it un-sets itself rather than ship a mistake:
<script src="https://typeset.us/go.js" defer></script>Your site, set like a book — and it can prove it. Grade your page, or install it in the next three minutes.