Try it

This runs the real engine, right here in your browser.

No server round trip: promo/vendor/polytypo.browser.js is src/index.ts bundled against the same locale data the npm package will ship with once it is published. Each locale starts with its own default example; edit it, or switch languages to see how the same idea is punctuated differently everywhere.

Output

The call the form above is making, right now

Every field's own comment carries its type, default and allowed values. None of them fall back to a default when the value is wrong or missing — each throws its own error, with a machine-readable code, rather than guessing what you meant. Full option and error-code reference — Docs.

Idempotency is a headline claim, not just a property test: paste the output back into the input and nothing should change.

No hard size limit on transform() — ordinary prose runs at roughly 250K characters per second, so even a full novel pasted in typesets in a couple of seconds. Pathological input (long runs of alternating quote or dash characters with no real content between them) is measurably slower, since a couple of rules re-check their own output to guarantee idempotency — real text never has that shape, so this only matters if you're piping in machine-generated or adversarial input.