Dotted pixel art of a pale curved beach between turquoise water and dark forested land, seen from above.

Minimum font size in browsers

Author
gunlaug team
Updated
8 Nov 2026
Reading time
7 min

Photo by Pok Rie

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

A small label that was designed to fit on two lines of a card.

height: 2lh

A small label that was designed to fit on two lines of a card.

min-height: 26px

A small label that was designed to fit on two lines of a card.

To change the real setting:

  • In Chrome, open chrome://settings/fonts and 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.

Size text was drawn at in Chrome, by CSS value and minimum font size, in pixels
CSS valueNo minimumMinimum 9Minimum 12Minimum 16Minimum 24
8px89121624
10px1010121624
0.625rem1010121624
0.625em1010121624
62.5%1010121624
x-small1010121624
1vw1010121624
14px1414141624
20px2020202024

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.

What getComputedStyle reported for 10 pixel text, next to the size drawn
Browser and minimumgetComputedStyleDrawn
Chrome, minimum 121212
Chrome, minimum 242424
Firefox, minimum 121012
Firefox, minimum 241024

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.

Size text was drawn at in Chrome by the logical minimum preference, in pixels
CSS valueSet to 0Default (6)Set to 12Set to 24
0.25em461224
25%461224
0.5em881224
xx-small991224
0.25rem4444
0.5rem8888
8px8888
1vw10101010
0.5em inside 1rem8888
0.5em inside 16px8888

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.

Size 10 pixel text was drawn at, by lang attribute
lang attributeChrome, 24Firefox, Latin 24Firefox, Japanese 24
None242410
en242410
ru241010
ja241024
ko241010
zh241010
ar241010

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.

Height of a line of 10 pixel text in pixels, by line-height value, browser and minimum
line-heightNo minimumChrome 12Chrome 24Firefox 12Firefox 24
normal1114281528
1.21214.428.814.428.8
1.51518361836
150%1518361515
1.5em1515151515
15px1515151515

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

Widths in pixels and row counts in Chrome by minimum font size
Rule on 10 pixel textNo minimumMinimum 12Minimum 16Minimum 24
inline-block, no width607296144
min-width: 6em607296144
width: 6em60606060
Text inside width: 6em607296144
width: 10em100100100100
width: 10ch55.666.789133.5
Rows of five tags in 300px1223

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.

Dotted pixel art of an orange sunset sky above a dark, rippled foreground.Photo by Francis Glenn Marciano

Fixed 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.

Box height and content height in pixels in Chrome by minimum font size
RuleNo minimumMinimum 12Minimum 16Minimum 24
height: 26px26 / 2626 / 4726 / 8326 / 125
height: 2.6em26 / 2626 / 4726 / 8326 / 125
height: 2lh26 / 2631 / 4742 / 8362 / 125
-webkit-line-clamp: 226 / 2631 / 4742 / 8362 / 125
min-height: 26px26 / 2647 / 4783 / 83125 / 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

Size drawn in pixels for text the minimum may not reach
TextChrome 12Chrome 24Firefox 12Firefox 24
font-size: 00000
SVG text at 88888
Canvas text at 8px8888
16px with transform: scale(.5)812812
16px with zoom: .58121224

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-height on anything that holds text.
  • Write line-height without a unit.
  • Give tags and buttons a min-width in place of a width.
  • 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:

  1. Set Chrome’s minimum to 24 and reload.
  2. Look for text cut off at the bottom of a box and for lines that overlap.
  3. 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_size at 0, 9, 12, 16 and 24, then minimum_logical_font_size at 0, 9, 12, 16 and 24, and one run with 9 and 14 together.
  • Firefox 159.0.1, headless, with font.minimum-size.x-western at the same values, and font.minimum-size.ja at 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.

Sources