01
Hanging punctuation
Opening quotes hang their full glyph into the margin; optical capitals pull left. The block aligns to the eye, not the em box.
Typeset.us — a new era in web typography
Forty-five years after print solved it, the browser catches up. Knuth’s mathematics, Tschichold’s tolerances, Bringhurst’s quarter-em — running live on every paragraph of this page.
01 — The Proof
Same words, same space, both rendered by your browser right now. The first is your browser doing its best on its own. Watch the ends of its lines: little words like “a” and “the” left behind, thoughts snapped in half. The second is set the way a book would set it. Then squeeze the column.
Every line ends where it should — by intention. This is Typeset, live.
Your browser: CSS text wrapping.
Drag the slider and count the short words your browser leaves hanging at line ends. The book carries them down to the next line.
The book isn’t a book. It’s your browser running Typeset — the one-line script at the bottom of this page. Every paragraph you’ve read here was set the same way.
For developers
Any site, one tag
<script src="https://typeset.us/go@4.4.0.js" integrity="sha384-OPixflfJwk7LTcwv7u1n3T6ratxF6EeTJXn3D/TnLw9bCV2qkIVogco3QFZj6l5D" crossorigin="anonymous" defer></script>Version 4.4.0, with its integrity hash. The file never changes.
<script src="https://cdn.jsdelivr.net/npm/typeset.us@4.4.0/dist/auto.js" integrity="sha384-OPixflfJwk7LTcwv7u1n3T6ratxF6EeTJXn3D/TnLw9bCV2qkIVogco3QFZj6l5D" crossorigin="anonymous" defer></script>The same file from npm via jsDelivr, with the same hash.
npm
npm i -E typeset.us@4.4.0import { mount } from 'typeset.us';
mount(document, 'article p, article h2');React 18.2+ and 19
import { TypesetRichText } from 'typeset.us/react';
<TypesetRichText lang="en">
Read <a href="/notes">the notes</a> first.
</TypesetRichText>text-wrap: balancetext-wrap: prettyhyphens: autotext-wrap: pretty60.0 KB gzipped for the script tag. No dependencies, no network calls, no tracking. Every result is checked after it renders, and a paragraph Typeset cannot improve keeps your browser’s layout.
02 — The Tastemaker
03 — The Craft
01
Opening quotes hang their full glyph into the margin; optical capitals pull left. The block aligns to the eye, not the em box.
02
The compositor finishes holding two hundred candidate paragraphs and chooses the most musical rag — never merely the cheapest.
03
Word-space tolerances measured from your font’s own natural space — Tschichold’s 80 to 133 percent, the envelope InDesign adopted — never assumed from a quarter-em.
04
Every composed line is re-measured after render. If the browser disagrees, the engine steps back rather than ship an overflow.
04 — Proof of taste, in one line
<script src="https://typeset.us/go@4.4.0.js" integrity="sha384-OPixflfJwk7LTcwv7u1n3T6ratxF6EeTJXn3D/TnLw9bCV2qkIVogco3QFZj6l5D" crossorigin="anonymous" defer></script>The same engine that set this page: beam-search composition, hanging punctuation, smart quotes, self-checks that fall back to the browser rather than ever make your text worse. 60.0 KB gzipped, no dependencies, generated from the source you can read.
Set live by its own engine. View source — it’s the same code.