Check a stylesheet's font sizes against a modular scale and flag sizes, line heights and body text that drift
Type scale auditFreeFor designers and developers
20 min
saved on a typical run. Our estimate, against listing every font-size in a stylesheet and testing it against scale ratios by hand.
Before: what you give it
The example input, as typed in. You paste text, CSS, markup or notes.
:root {
--ink: #1a1a1a;
--paper: #fafaf7;
--accent: #e4572e;
--accent-hover: var(--accent);
--space-2: 8px;
--radius: 6px;
--font-body: "Source Serif 4", Georgia, serif;
--ease: cubic-bezier(0.2, 0, 0, 1);
}
@media (prefers-color-scheme: dark) { :root { --ink: #f2f2ee; --paper: #141414; } }
body { font: 400 17px/1.55 var(--font-body); color: var(--ink); background: var(--paper); }
h1 { font-size: 48px; line-height: 1.05; margin: 0 0 24px; }
h2 { font-size: 30px; margin: 32px 0 12px; }
small { font-size: 13px; }
...
After: what comes back
The first lines of a real run on that input. Nothing here is edited by hand.
# Type scale audit 4 distinct font sizes. No modular ratio fits. Body size 17px. ## Findings No findings. ## Sizes | Size | Uses | On the ratio | |---|---|---| | 13px | 1 | n/a | | 17px | 1 | n/a | ... full output on the tool page
What you get
Every size with use count, best-fit ratio, off-scale sizes, near-duplicates and line height findings
What it cannot do
Reads CSS only, so sizes set by script or inline styles are not counted; pasted CSS is free, URLs need Pro.
Who it is for
- Designers
- Developers
Free and Pro
| Free | 15 runs a day per IP address, up to 100,000 characters a run. |
|---|---|
| Pro | No daily limit, 300 requests a minute, up to 200,000 characters a run. |
Use it from your assistant
The tool is called audit_type_scale. Connect the server once, then ask for it by name or just describe the job. Install steps for each app.
claude mcp add --transport http designers https://designers.allthepossibles.com/mcp
curl -X POST https://designers.allthepossibles.com/api/type-scale-audit -H 'content-type: application/json' -d '{"css":":root {\n --ink: #1a1a1a;\n --paper: #fafaf7;\n --accent: #e4572e;\n --accent-hover: var(--accent);\n --space-2: 8px;\n --radius: 6px;\n --font-body: \"Source Serif 4\", Georgia, serif;\n --ease: cubic-bezier(0.2, 0, 0, 1);\n}\n@media (prefers-color-scheme: dark) { :root { --ink: #f2f2ee; --paper: #141414; } }\nbody { font: 400 17px/1.55 var(--font-body); color: var(--ink); background: var(--paper); }\nh1 { font-size: 48px; line-height: 1.05; margin: 0 0 24px; }\nh2 { font-size: 30px; margin: 32px 0 12px; }\nsmall { font-size: 13px; }\n.btn { padding: 10px 18px; border-radius: var(--radius); background: var(--accent); color: #fff; border: 0; outline: none; transition: background 180ms var(--ease); }\n.btn:hover { background: #c9441f; }\n.button-secondary { padding: 9px 16px; border-radius: 4px; border: 1px solid #1a1a1a; background: transparent; }\n.card { padding: 20px; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,.12); margin-bottom: 15px; }\na { color: var(--accent); }\na:hover { text-decoration: underline; }\n@media (min-width: 768px) { .card { padding: 28px; } }"}'
Try it here
The form starts with the same example input, so you can run it first and then swap in your own.
More in typography
- Modular type scale
Build a modular type scale from a base size and ratio, with rem values and a fluid clamp() for each step
- Measure and leading
Check whether a text column holds 45 to 75 characters per line and get a line-height to match
- Type crimes lint
Find typographic errors in copy, HTML or CSS, such as straight quotes, fake dashes and tight line-height
- Vertical rhythm
Snap a set of type sizes to a baseline grid with line-heights and margins in whole baseline units
- Type pairing check
Check whether two or three typefaces pair well, using class, structure, x-height and role fit