A minimum font size raises small text on every site a reader visits. We set one in Chrome and Firefox and measured what happened to the text and the boxes around it.
Check your own browser
The two values below are measured on this page. The slider applies a minimum to three boxes of 10 pixel text.
Minimum font size in your browser right now: checking
Floor for text sized in em: checking
height: 26px
height: 2lh
min-height: 26px
To change the real setting:
- In Chrome, open
chrome://settings/fontsand move the Minimum font size slider, which runs from 0 to 24. - In Firefox, open Settings, find Fonts and press Advanced settings. Minimum font size offers None, then 9 to 72, for the language chosen under Fonts for.
- Safari on the Mac has “Never use font sizes smaller than” in its Advanced settings, according to Apple’s guide, which we read on 8 November 2026. We did not test Safari, and the guide doesn’t say how the setting treats units or layout.
Every unit is raised
We drew a string of 20 letters in each unit below, at each minimum, and worked out the size from its width. The numbers are Chrome’s, and Firefox drew the same size in every cell.
| CSS value | No minimum | Minimum 9 | Minimum 12 | Minimum 16 | Minimum 24 |
|---|---|---|---|---|---|
| 8px | 8 | 9 | 12 | 16 | 24 |
| 10px | 10 | 10 | 12 | 16 | 24 |
| 0.625rem | 10 | 10 | 12 | 16 | 24 |
| 0.625em | 10 | 10 | 12 | 16 | 24 |
| 62.5% | 10 | 10 | 12 | 16 | 24 |
| x-small | 10 | 10 | 12 | 16 | 24 |
| 1vw | 10 | 10 | 12 | 16 | 24 |
| 14px | 14 | 14 | 14 | 16 | 24 |
| 20px | 20 | 20 | 20 | 20 | 24 |
The raised size doesn’t compound. 1.5em inside a parent set to 10 pixels drew at 15 at a minimum of 12 in both browsers, because em starts from the 10 pixels the page asked for.
getComputedStyle disagrees
Chrome reports the raised size. Firefox reports the size the page asked for while drawing the larger one, so a script that reads font-size to fit text gets a number that doesn’t match the screen.
| Browser and minimum | getComputedStyle | Drawn |
|---|---|---|
| Chrome, minimum 12 | 12 | 12 |
| Chrome, minimum 24 | 24 | 24 |
| Firefox, minimum 12 | 10 | 12 |
| Firefox, minimum 24 | 10 | 24 |
Chrome’s second minimum
Chrome keeps two preferences. The slider changes minimum_font_size. minimum_logical_font_size has no control on the settings page and is 6 unless something changes it. It raises text only when every size in the chain comes from the reader’s default: em, percent and keywords, with no pixel or rem value above them. Each column below is one value of that preference, with the slider left at zero.
| CSS value | Set to 0 | Default (6) | Set to 12 | Set to 24 |
|---|---|---|---|---|
| 0.25em | 4 | 6 | 12 | 24 |
| 25% | 4 | 6 | 12 | 24 |
| 0.5em | 8 | 8 | 12 | 24 |
| xx-small | 9 | 9 | 12 | 24 |
| 0.25rem | 4 | 4 | 4 | 4 |
| 0.5rem | 8 | 8 | 8 | 8 |
| 8px | 8 | 8 | 8 | 8 |
| 1vw | 10 | 10 | 10 | 10 |
| 0.5em inside 1rem | 8 | 8 | 8 | 8 |
| 0.5em inside 16px | 8 | 8 | 8 | 8 |
So every Chrome user has a floor for relative text: 0.25em drew at 6 pixels in Chrome and 4 in Firefox with nothing changed. Chromium’s source explains the split. Pages that ask for an exact pixel size can break when it is raised, and the comment there names gamespot.com at a 9 pixel minimum. In our run rem and vw counted as exact sizes too.
Firefox sets it per language
Firefox stores one minimum per language group, while Chrome has a single value. We set Firefox’s Latin minimum to 24 and loaded 10 pixel Arial text with different lang attributes, then repeated the run with only the Japanese minimum set.
| lang attribute | Chrome, 24 | Firefox, Latin 24 | Firefox, Japanese 24 |
|---|---|---|---|
| None | 24 | 24 | 10 |
| en | 24 | 24 | 10 |
| ru | 24 | 10 | 10 |
| ja | 24 | 10 | 24 |
| ko | 24 | 10 | 10 |
| zh | 24 | 10 | 10 |
| ar | 24 | 10 | 10 |
Text with no lang counted as Latin on our English build of Firefox. A reader who set the Latin minimum gets no floor on text marked as Russian or Japanese.
Line height depends on the unit
The table shows the height of one line of 10 pixel text.
| line-height | No minimum | Chrome 12 | Chrome 24 | Firefox 12 | Firefox 24 |
|---|---|---|---|---|---|
| normal | 11 | 14 | 28 | 15 | 28 |
| 1.2 | 12 | 14.4 | 28.8 | 14.4 | 28.8 |
| 1.5 | 15 | 18 | 36 | 18 | 36 |
| 150% | 15 | 18 | 36 | 15 | 15 |
| 1.5em | 15 | 15 | 15 | 15 | 15 |
| 15px | 15 | 15 | 15 | 15 | 15 |
Unitless values and normal grew in both browsers. 1.5em and pixel values held at 15, which puts 24 pixel text on a 15 pixel line. With a percent value, Chrome grew the line and Firefox held it at 15.
Widths and rows of tags
| Rule on 10 pixel text | No minimum | Minimum 12 | Minimum 16 | Minimum 24 |
|---|---|---|---|---|
| inline-block, no width | 60 | 72 | 96 | 144 |
| min-width: 6em | 60 | 72 | 96 | 144 |
| width: 6em | 60 | 60 | 60 | 60 |
| Text inside width: 6em | 60 | 72 | 96 | 144 |
| width: 10em | 100 | 100 | 100 | 100 |
| width: 10ch | 55.6 | 66.7 | 89 | 133.5 |
| Rows of five tags in 300px | 1 | 2 | 2 | 3 |
Firefox matched these widths and row counts, with ch within a tenth of a pixel. The CSS Values spec says a minimum must not affect font-relative lengths in a property. em obeyed that in both browsers and ch did not. The spec also says a minimum does affect em in media queries, and neither browser did that: (min-width: 50em) still matched in a 1000 pixel window at a minimum of 24.
Photo by Francis Glenn MarcianoFixed heights clip the text
These boxes are 200 pixels wide and hold text that takes two lines at 10 pixels. Each cell gives the box height and then the height of its content. Firefox’s numbers were the same.
| Rule | No minimum | Minimum 12 | Minimum 16 | Minimum 24 |
|---|---|---|---|---|
| height: 26px | 26 / 26 | 26 / 47 | 26 / 83 | 26 / 125 |
| height: 2.6em | 26 / 26 | 26 / 47 | 26 / 83 | 26 / 125 |
| height: 2lh | 26 / 26 | 31 / 47 | 42 / 83 | 62 / 125 |
| -webkit-line-clamp: 2 | 26 / 26 | 31 / 47 | 42 / 83 | 62 / 125 |
| min-height: 26px | 26 / 26 | 47 / 47 | 83 / 83 | 125 / 125 |
height: 2lh and line clamping grew with the text and cut it at a whole line. Only min-height showed everything. scrollHeight can undercount a single line in a box with a fixed line-height: at a minimum of 24, text needing 27 pixels sat in a 16 pixel box, and scrollHeight said 21 in Chrome and 22 in Firefox.
What the minimum leaves alone
| Text | Chrome 12 | Chrome 24 | Firefox 12 | Firefox 24 |
|---|---|---|---|---|
| font-size: 0 | 0 | 0 | 0 | 0 |
| SVG text at 8 | 8 | 8 | 8 | 8 |
| Canvas text at 8px | 8 | 8 | 8 | 8 |
| 16px with transform: scale(.5) | 8 | 12 | 8 | 12 |
| 16px with zoom: .5 | 8 | 12 | 12 | 24 |
font-size: 0 stayed at zero, so that way of closing the gap between inline-blocks still works. font-size: 1px doesn’t: the gap went from about a quarter of a pixel to 3.3 in Chrome and 3.3 in Firefox at a minimum of 12. On CSS zoom the browsers differ: Firefox raised the zoomed result, and Chrome raised the size first and then zoomed it. Buttons, selects and inputs followed the minimum in both.
How to keep a layout working
.tag { min-height: 1.5rem; line-height: 1.4; }
.card { min-height: 6rem; }
/* Two lines at most, cut at a whole line */
.title { height: 2lh; overflow: hidden; line-height: 1.3; }- Use
min-heighton anything that holds text. - Write
line-heightwithout a unit. - Give tags and buttons a
min-widthin place of awidth. - Let rows of tags wrap, and leave the container’s height open.
Accessible font sizing covers what the setting does to rem lengths. To test a page:
- Set Chrome’s minimum to 24 and reload.
- Look for text cut off at the bottom of a box and for lines that overlap.
- If the page isn’t in a Latin script, repeat in Firefox with Fonts for set to its language.
How this was tested
On 8 November 2026 a script loaded one test page in each browser at each setting, in a 1000 by 800 pixel window on Windows 11. Drawn size is the width of 20 Arial letters x divided by 10, since each is half an em wide.
- Chrome 156.0.8078.80, headless, with
minimum_font_sizeat 0, 9, 12, 16 and 24, thenminimum_logical_font_sizeat 0, 9, 12, 16 and 24, and one run with 9 and 14 together. - Firefox 159.0.1, headless, with
font.minimum-size.x-westernat the same values, andfont.minimum-size.jaat 24.
We did not run Safari, WebKit, Edge or any phone, and browser zoom was not part of the run. We read the CSS spec and the Chromium source on the same day. The full output is available as raw JSON. The test script and this article were prepared with help from AI.
Common questions
Can CSS turn off a reader’s minimum font size?
No unit we tried got past it. SVG text, canvas and a transform stayed small, but those draw text outside normal font sizing.
What minimum should I test with?
24, the top of Chrome’s slider, shows problems fastest. Apple’s guide suggests readers try 12 or 14, so check those too.
Does Chrome’s floor of 6 pixels affect my site?
Only for text that works out below 6 pixels in em, percent or a keyword, with no rem or pixel size above it.
