Skip to content

We use analytics cookies to see how the site is used. They are only set if you accept. Accepting also turns on session recording (pages viewed, clicks and scrolls) so we can fix problems; what you type stays hidden. Read the privacy policy

A paragraph drawn as grey lines, marked with 16 px font size, line height 1.5 and a 66 character line length, beside the CSS that sets them

Eye test for your website / 8 min read

Font Size, Line Height and Line Length: How to Make Website Text Easy to Read

Body text at 16px or larger, a line height of about 1.5, lines of 45 to 75 characters and a contrast of at least 4.5:1, set in rem so the reader can still enlarge it. Where each number comes from, what design systems use, the CSS, and a ten-minute test for your own pages.

The whole answer, set as an eye chart. The small number on each row is the size it is set in, in pixels at the default text size.

An optician checks your eyes with a card of shrinking print, and every visitor runs the same check on your website, on a phone held at arm's length, without telling you when they fail it.

What settings make body text easy to read?

Rx Short answer for body text

Size
16px or larger, set as 1rem so the reader's own browser setting still counts.
Line height
About 1.5 for paragraphs; tighter only for short headings.
Line length
45 to 75 characters per line, with about 66 as a common target.
Contrast
At least 4.5:1 against the background (3:1 only for large text).
Zoom
Still works at 200% text size and at 320 CSS pixels wide.

Size, line height and line length are starting points from published design guidance. Contrast, zoom and reflow are WCAG 2.2 level AA rules.

None of these numbers is a font choice. A good typeface set too small, too tight or too wide still reads badly, and an ordinary system font set with these values reads well. The rest of this page shows where each number comes from and how to check it on your own site.

What do font size, line height and line length mean?

Font size
The size of the text in CSS pixels. MDN: if no ancestor sets a size, "1em will equal the default browser font-size, which is usually 16px" (MDN, font-size).
Line height (leading)
The height of each line, best written without a unit so it scales with the text. USWDS: "a line height of 1.5 on 16px text results in a line height of 24px" (USWDS, Typography).
Line length (measure)
How many characters fit on one line, counting letters and spaces.
The ch unit
A CSS width based on "the advance measure of the glyph 0" in the element's font (MDN, <length>). Letters are not all as wide as a zero, so treat 66ch as an estimate: Baymard notes the value "will need to be adjusted slightly up or down depending on the font used" (Baymard). Count a real line.
Contrast ratio
How far the text color stands out from its background, from 1:1 (same color) to 21:1 (black on white); W3C: contrast ratios "can range from 1 to 21" (W3C, Understanding 1.4.3).

How big should body text be on a website?

Start at 16px and go up, not down. The U.S. Web Design System says: "For most text, including body copy, use at least an effective size of 16px" (USWDS, Typography). The same sentence at five sizes:

  1. 12px

    Your visitor decides in a few lines whether this page is worth the effort of reading.

    Lighthouse used to flag pages where 40% or more of the text was below 12px; the audit was removed in Lighthouse 13.
  2. 14px

    Your visitor decides in a few lines whether this page is worth the effort of reading.

    Material 3 "body medium", one step below body large.
  3. 16px

    Your visitor decides in a few lines whether this page is worth the effort of reading.

    Usual browser default, USWDS minimum, Material 3 "body large".
  4. 18px

    Your visitor decides in a few lines whether this page is worth the effort of reading.

    The size of the paragraphs on this page.
  5. 19px

    Your visitor decides in a few lines whether this page is worth the effort of reading.

    GOV.UK body text, on phones and desktops alike.

Each plate is set in rem, so if you have raised your browser's default size, every plate above has grown with it. That is the point: the pixel sizes are what most readers get, not a ceiling.

The Lighthouse rule reads: "Lighthouse flags pages on which 40% or more of the text has a font size smaller than 12 px", and its page now notes that the audit "has been removed as of Lighthouse 13" (Chrome for Developers, Document doesn't use legible font sizes). Losing the warning did not make 12px body text easier to read.

What sizes do the big design systems use for body text?

Large public design systems land on the same range. Apple's sizes are in points on its own platforms, not CSS pixels, so read them as a comparison, not a conversion.

SystemBody sizeLine heightLine length
Browser default (MDN)usually 16pxset by the browsernone
USWDS (Typography)at least 16pxat least 1.5 for longer texts45 to 90 characters, 66 for long texts
GOV.UK (Type scale, Layout)19px25px (about 1.3)usually no more than 75 characters
Material 3 body large (tokens)1rem (16px)1.5rem (24px)not set in the tokens
Apple iOS body (HIG)17 pt default, 11 pt minimum22 pt leadingnot given

Two things stand out. None of the four web sources puts its largest body style below 16px. And 1.5 is common but not universal: GOV.UK runs 25px lines on 19px text, about 1.3, and keeps lines short with its two-thirds layout instead.

How much space should sit between lines and paragraphs?

For paragraphs, a line height of about 1.5. USWDS: "Longer texts should have a line height of at least 1.5", while headings "no longer than a line or two can have a line height between 1 and 1.35" (USWDS, Typography). The same paragraph, tight and open:

line-height: 1.15

Your visitor decides in a few lines whether this page is worth the effort of reading. Long paragraphs with tight lines make the eye work to find the start of the next line, and readers lose their place when they jump back.

line-height: 1.5

Your visitor decides in a few lines whether this page is worth the effort of reading. Long paragraphs with open lines give the eye a clear lane back to the start of the next line, so readers keep their place.

Two WCAG 2.2 rules touch spacing, and they ask different things:

  • Text Spacing, 1.4.12 (level AA) does not make you use any value. It asks that nothing is lost when a reader overrides yours with a line height of 1.5 times the font size, paragraph spacing of 2 times, letter spacing of 0.12 times and word spacing of 0.16 times (W3C, Understanding 1.4.12 Text Spacing). Text cut off inside a fixed-height box is one common way to fail it.
  • Visual Presentation, 1.4.8 (level AAA) asks that a way exists to get line spacing of "at least space-and-a-half within paragraphs", paragraph spacing "at least 1.5 times larger than the line spacing", text that "is not justified", and lines of "no more than 80 characters" (W3C, Understanding 1.4.8 Visual Presentation). The browser can provide that way, so this is a target, not a test most sites are held to.

How long should a line of text be?

Between 45 and 75 characters for most body text. The sources below agree on the middle of that range; the widest, USWDS, allows up to 90:

  • Bringhurst45 to 75, 66 ideal
  • Ruder (via Baymard)50 to 60
  • Baymard50 to 75
  • GOV.UKusually up to 75
  • WCAG 1.4.8 (AAA)no more than 80
  • USWDS45 to 90, 66 for long texts
Recommended characters per line, on a scale of 0 to 100; a dashed line is an upper limit with no lower bound, and a black tick marks a stated ideal or target. Bringhurst: "Anything from 45 to 75 characters is widely regarded as a satisfactory length of line" for a single-column page in a serif text face, "the 66-character line ... is widely regarded as ideal" (The Elements of Typographic Style, section 2.1.2, on webtypography.net). Baymard: "The optimal line length for body text is 50-75 characters", citing Emil Ruder's 50 to 60 (Baymard Institute, Readability: The Optimal Line Length). USWDS: "Most lines of text should be 45-90 characters", with "66 characters" as a good target for long texts (USWDS). GOV.UK: "no more than 75 characters per line" (GOV.UK Design System, Layout). WCAG 1.4.8: "no more than 80 characters" (W3C).

Watch the column below narrow to a readable measure as it scrolls into view. On a phone it is already narrow, because the screen does the job; long lines are a desktop problem.

Your visitor decides in a few lines whether this page is worth the effort of reading. On a wide monitor, a column that runs the full width of the window can carry 120 characters or more per line. The eye has to travel a long way back to find the start of the next line, and it is easy to land on the wrong one. A maximum width in ch or em keeps the column at a readable measure, and it keeps that measure when the reader enlarges the text.

What the research on screens found

A 1998 screen-reading study found that "Long lines (100 characters) were found to be read faster than very short lines (25 characters), while comprehension remained constant", yet readers judged "moderate line lengths (55 characters per line) easiest to read" (Dyson and Kipping, Visible Language 32(2), 1998). In that study, longer lines were not read more slowly. Treat 45 to 75 as a comfort default that readers prefer, not as a speed rule.

Set the width with a unit that follows the text. web.dev: "Don't set your line-lengths with a fixed unit like px ... Use a relative unit like rem or ch" (web.dev, Typography). Baymard suggests "around 70ch or 34em" to keep lines under 80 characters, adjusted for the font (Baymard).

How much contrast does body text need?

At least 4.5:1. WCAG 2.2 level AA: text needs "a contrast ratio of at least 4.5:1", and large text "at least 3:1", where large means "18 point text or 14 point bold text": about 24px, or about 18.5px if bold (W3C, Understanding 1.4.3 Contrast (Minimum)). Pale grey text is a common way to miss it:

2.32:1Grey #aaaaaa on whiteFails AA for all text
4.54:1Grey #767676 on whitePasses AA, the lightest plain grey that does
7.00:1Grey #595959 on whitePasses AAA (7:1)
83.9%of the top million home pages had low-contrast text in February 2026Source: WebAIM Million 2026

The three ratios were computed with the WCAG formula; check your own pair in the WebAIM Contrast Checker. WebAIM found low-contrast text on 83.9% of home pages, "the most commonly-detected accessibility issue", up from 79.1% in 2025 (WebAIM Million 2026). For the other common failures, see SitePatent's guide to the six accessibility errors behind most detected errors.

What CSS sets readable body text?

A starting point. It leaves the root font size alone, sizes everything in rem, em or ch, and keeps form fields at 16px or more:

/* No font-size on html: keep the reader's own default (usually 16px). */
body {
  font-size: 1rem;             /* or 1.125rem, as on this page */
  line-height: 1.5;            /* unitless, so it scales with the text */
}
.article {
  max-width: 66ch;             /* 66 zeros wide; count a real line */
}
.article p {
  margin-block: 0 1.5em;       /* paragraph gap larger than the line gap */
}
h1, h2, h3 {
  line-height: 1.2;            /* short headings can be tighter */
}
input, select, textarea {
  font-size: max(1rem, 16px);  /* 16px or more: iOS Safari may zoom smaller fields */
}

Why rem and not px for text: "If you don't define a font-size on your html element, this user-preferred system font size will be honoured if you use relative lengths, such as em and rem. If you use px units for sizing text, this preference will be ignored" (web.dev, Sizing Units). MDN is blunter: "Defining font sizes in px is not accessible, because the user cannot change the font size in some browsers" (MDN, font-size). Page zoom still enlarges pixel text; the reader's default size setting is what px ignores.

The form field line: Safari on iOS can zoom the page when a field with small text gets focus. We found no Apple documentation of a threshold, but WebKit's zoom-to-field code uses 16 as its standard font size (webViewStandardFontSize = 16 in WebKit source, WKWebViewIOS.mm), so in current WebKit code a field at 16px or more needs no zoom to reach it.

How do you test your own pages in ten minutes?

  1. Size. In the browser's developer tools, select a body paragraph and read its computed font size: 16px or more at the default setting.
  2. Default setting. Raise the browser's default font size in its settings and reload: body text should grow. If it does not, the text size is probably fixed in px, or set in px on html.
  3. Line length. On a desktop window, copy one full line of a paragraph and count its characters, spaces included: 45 to 75.
  4. Contrast. Check body text and every grey label against their backgrounds in a contrast checker: 4.5:1 or more.
  5. Zoom. Zoom to 200%: no text cut off, overlapping or hidden (WCAG 1.4.4).
  6. Narrow screen. Make the window 320 CSS pixels wide, or zoom a 1280px window to 400%: text reflows with no sideways scrolling (WCAG 1.4.10).
  7. Spacing override. Apply line height 1.5, paragraph spacing 2, letter spacing 0.12 and word spacing 0.16 times the font size with a user style sheet or extension: nothing is clipped (WCAG 1.4.12).
  8. Alignment. Body text is left-aligned, not justified.

Questions site owners ask about text size

Is 16px too small on a big desktop screen?

16px is the floor, not the target. USWDS asks for "at least" 16px, GOV.UK uses 19px on every screen, and Apple's iOS body default is 17 pt.

Should text be smaller on phones?

Not below 16px. GOV.UK keeps its 19px body on small and large screens alike, and Apple's iOS default body size is 17 pt. Shrink headings on phones, not paragraphs.

Does WCAG set a minimum font size?

No. WCAG 2.2 at level AA asks for contrast (1.4.3), text that resizes to 200% (1.4.4), reflow at 320 CSS pixels (1.4.10) and room for text spacing overrides (1.4.12). The size itself comes from design guidance like the table above.

Is justified text a problem?

WCAG 1.4.8 (AAA) lists text that "is not justified" among its readable presentation goals. Justified text stretches the spaces between words to fill each line; left-aligned text keeps them even.

Sources

All pages checked on 25 October 2026. Contrast ratios computed with the WCAG 2 relative luminance formula.