Inclusely

Guide

Accessible fonts for your Shopify store

What makes text easy to read, the size and spacing rules that really exist, and where to change them in your Shopify theme.

Reviewed by Misha Gavura, founder of Inclusely. Last reviewed . Written by the Inclusely team at EVDEV, Toronto.

There is no ADA-approved font list. US, Canadian and EU rules point to WCAG, and WCAG asks how text behaves, not which font you pick. Use a plain font with clear letter shapes, body text of at least 16 pixels, contrast of 4.5:1, and a theme that still works when shoppers zoom to 200% or add extra spacing.

Is there an ADA compliant font?

No. The ADA itself does not mention fonts for websites. The US Justice Department's web guidance only says that people with vision disabilities may need to use the browser's zoom to make text bigger. WCAG, the standard used by courts, Ontario's AODA and the European Accessibility Act (through EN 301 549), does not name a font or a minimum size either.

Section508.gov, the US government's own accessibility site, says it plainly: neither WCAG nor Section 508 specifies typefaces or a minimum font size. The ADA font rules you may have read about are in the 2010 ADA Standards, and they cover physical signs and the screens on ATMs and fare machines, where text cannot be zoomed. Raised sign letters and ATM screens must be sans serif, and sign text must not be italic, script or highly decorative. That is a good hint, not a website rule.

So when an article lists “ADA compliant fonts”, read it as “fonts that make the real rules easier to meet”. Those rules are:

The WCAG rules that decide whether your text is readable
WCAG 2.2 criterionWhat it asksLevel
1.4.3 Contrast (minimum)4.5:1 for normal text, 3:1 for large text.AA
1.4.4 Resize textText can be zoomed to 200% with nothing lost.AA
1.4.5 Images of textUse real text, not pictures of words.AA
1.4.10 ReflowAt 320 pixels wide, no sideways scrolling to read.AA
1.4.12 Text spacingNothing breaks when shoppers add more spacing.AA
1.4.8 Visual presentationShort lines, no justified text, easy spacing.AAA

Level AA is the level laws point to. AAA is the strictest level and is not required, but it is full of good typography advice. For the whole standard in plain words, see WCAG 2.2 AA explained.

What makes a font readable

A readable font is one that people can tell apart letter by letter, at small sizes, on a phone, in bright light, with tired eyes or low vision. The W3C notes that some fonts are more readable than others and that people with low vision often need to change the font, so your theme should allow it. Look for these traits:

Font traits that help or hurt reading
TraitWhy it mattersHow to check
Letters that look differentCapital I, small l and the number 1 should not be twins. Same for O and 0, and for rn and m.Type Il1 O0 rn m in the font and look.
A tall x-heightLower case letters that are tall for their size stay readable when the text is small.Compare the height of x with the height of H.
Open shapesOpen curves in a, e, c and s keep letters from filling in at small sizes or on blurry screens.Read the font at 14 pixels on a phone.
Even, solid strokesWCAG warns that very thin strokes look fainter than their colour, so they read as lower contrast.Avoid light (300) and thinner weights for body text.
Normal widthCondensed fonts squeeze letters together and get worse when text is zoomed.If it looks narrow at a glance, use it only for short labels.
Plain styleScript, handwritten and display fonts are slow to read in long text.Keep them to your logo or one short heading.

Serif or sans serif is less important than people think. Section508.gov says sans serif matters most for body text and that serif fonts are fine for headings. A plain serif at 18 pixels reads better than a light, condensed sans serif at 13 pixels.

Good body text choices in Shopify's font library include Inter, Open Sans, Lato, Roboto, Noto Sans, Source Sans Pro, Work Sans, Nunito Sans, Figtree, DM Sans and Assistant (the default in Dawn). The system font option is also good: it uses the font already on the shopper's device and loads instantly.

What font size should a store use?

WCAG sets no minimum font size. Success criterion 1.4.4 asks that text can be resized up to 200% without losing content or function. Section508.gov suggests 15 to 16 pixels for websites and says running text under 9 point is a barrier. The sizes below are our recommendations for a store, not legal limits.

Suggested text sizes for a Shopify store (our recommendations)
TextSuggested sizeNotes
Body text and product descriptions16 to 18 px16 px is the browser default. Do not shrink it.
Prices, menus and buttons15 to 16 pxShoppers act on these. Make them easy.
Small print, labels, footers14 px or moreShipping and return terms are not decoration.
Headings20 px and upSize and weight should show the order of headings.

Size also changes the contrast rule. WCAG calls text “large” at 18 point (about 24 pixels) or 14 point bold (about 18.5 pixels). Large text needs a contrast of 3:1. Everything smaller needs 4.5:1. That is why a pale grey sale price at 13 pixels so often fails. Test your colours with the free colour contrast checker.

Zoom has to work too. If a theme sets text in viewport units (vw) only, it may not grow when a shopper zooms, which WCAG lists as a failure (F94). Text sizes in rem or em, as Dawn uses, scale correctly.

Text spacing: what WCAG 1.4.12 asks

Some shoppers use a browser extension or their own style sheet to add space between lines, letters and words. It makes text easier to follow for many people with low vision or dyslexia. Success criterion 1.4.12 (level AA) says no content or function may be lost when a shopper sets all of these at once:

The four WCAG 1.4.12 spacing values
SettingAt leastAt 16 px text
Line height1.5 times the font size24 px
Space after paragraphs2 times the font size32 px
Letter spacing0.12 times the font sizeabout 1.9 px
Word spacing0.16 times the font sizeabout 2.6 px

You do not have to design with these values, and you do not need to add a spacing button. Your theme just has to cope when the shopper applies them. What breaks is almost always a box with a fixed height: the text grows, the box does not, and words get cut off or overlap.

Two sample product cards. Turn on the WCAG 1.4.12 spacing and watch which one keeps all of its text.

Fixed heights

Linen shirt, sage green

$68.00 CAD

Add to cart

Flexible heights

Linen shirt, sage green

$68.00 CAD

Add to cart

Spacing test is off. Both cards look the same.

To test your own store, paste this into the Console in your browser's developer tools on any page:

WCAG 1.4.12 text spacing test (browser console)
document.head.insertAdjacentHTML(
  "beforeend",
  `<style>
  * { line-height: 1.5 !important;
      letter-spacing: 0.12em !important;
      word-spacing: 0.16em !important; }
  p { margin-bottom: 2em !important; }
  </style>`
);

Then look at the places Shopify themes most often clip text: the announcement bar, menu items, sale and sold out badges, buttons, product card titles that are cut to two lines, tabs, and the cart drawer. If you find a clipped box, the fix is to swap a fixed height for min-height and remove overflow: hidden where it hides text. In Online Store, Edit theme, Theme settings, Custom CSS, that looks like this (class names differ by theme):

Example fix in Theme settings, Custom CSS
/* Buttons and badges grow with text */
.button, .badge {
  height: auto;
  min-height: 44px;
}
/* No fixed height on card titles */
.card__heading {
  max-height: none;
  overflow: visible;
}

Text cut to two lines with an ellipsis

WCAG allows a shortened title with an ellipsis only if the full text is still easy to reach, for example on the product page the card links to. Text that is simply cut off with no way to read it fails.

Line length, alignment, capitals and italics

These come from WCAG 1.4.8 (level AAA) and the W3C's research on the needs of people with low vision. They are not required at AA, but they cost nothing and help everyone:

  • Keep lines short. WCAG 1.4.8 says no more than 80 characters per line. Long product descriptions stretched across a wide screen are hard to follow. If your theme has a width setting for text sections, pick the narrower one.
  • Align text to the left. Justified text (straight on both sides) leaves uneven gaps between words. Centred text is fine for one line, not for paragraphs.
  • Go easy on capitals. The W3C notes that text in all capitals is harder to read for most people. Some themes have a setting that puts buttons and menus in capitals. Short labels are fine. Whole sentences are not.
  • Do not set paragraphs in italics or underline. Use them for a word or two, not a block.
  • Use real text, not images of text. Words baked into a banner image do not zoom, reflow or translate, and screen readers only get what the alt text says. See alt text examples for product images for banners you cannot avoid.

Dyslexia and ADHD fonts: what the research says

You will see fonts sold as dyslexia-friendly or ADHD-friendly. The evidence for a special font is weak. A 2017 study in Annals of Dyslexia tested the OpenDyslexic font with 12 students with dyslexia, aged 9 to 12, against Arial and Times New Roman. It found no improvement in reading speed or accuracy, and none of the students said they preferred it. We found no published research on fonts made for ADHD.

What dyslexia groups do suggest is plain layout: a plain, evenly spaced font, at least 12 point, 1.5 line spacing, a little extra letter and word spacing, and left-aligned text. Dyslexia Scotland's guidance also says no single font suits everyone. That is the same advice as the rest of this page.

The best thing a store can do is let readers choose. Some people set their own font in the browser or use a reading extension. A theme that passes the 1.4.12 spacing test and does not lock text into images lets those tools work. A font on your store cannot treat or fix a reading difficulty, and you should not say it does.

How to change fonts and sizes in a Shopify theme

In the Shopify admin, go to Online Store, then select Edit theme on the theme you want. Open Theme settings (the settings icon) and choose Typography. Most free themes have a Headings font and a Body font, each with a Change button that opens Shopify's font library. Work on a duplicate of your live theme first, then preview before you publish.

Typography settings in Shopify's Dawn theme
SettingWhat it doesSuggested
Headings fontThe font for titles and section headings.Any plain font. A serif is fine.
Headings font size scale100% to 150%, in steps of 5%.100% or more.
Body fontProduct descriptions, menus, buttons, prices.A plain sans serif or the system font.
Body font size scale100% to 130%, in steps of 5%.Try 110% if text looks small.

The size range above is from Dawn's settings file. Shopify's Help Center describes a font size scale of 100% to 150%. Newer themes, such as the Horizon family, group type settings differently, so the labels may not match. Look for Typography or Text in Theme settings.

If the font you want is not in Shopify's library, a developer can add it to the theme. Atkinson Hyperlegible, made by the Braille Institute for readers with low vision, is a common choice. It is free for personal and commercial use under the Braille Institute's licence, but it is not in the Shopify library. Upload the font file to the theme's assets, then load it in layout/theme.liquid, below the theme's own style block so your value wins:

Adding a font file in layout/theme.liquid (inside head)
<style>
  @font-face {
    font-family: "Atkinson Hyperlegible Next";
    src: url("{{ 'AtkinsonHyperlegibleNext-Regular.woff2' | asset_url }}") format("woff2");
    font-weight: 400;
    font-display: swap;
  }
  /* Dawn reads the body font from this variable. Other themes name it differently. */
  :root {
    --font-body-family: "Atkinson Hyperlegible Next", sans-serif;
  }
</style>

Each extra font file is a download, which slows your store a little. Load only the weights you use, usually regular and bold. Theme updates can overwrite edits to theme.liquid, so note the change somewhere your team will find it.

Common font mistakes on Shopify stores

  • A thin weight for body text. A font picker may offer Light or 300. Choose Regular (400) for anything longer than a heading.
  • A script font for the product description. Keep decorative fonts for the logo.
  • Sale text inside the banner image. Put the words in the section's heading and button fields instead.
  • Tiny text on phones. Some themes shrink text on small screens. Check product pages on a real phone, not only in the editor preview.
  • Light grey body text and fixed-height badges. Both pass a quick look in the editor and fail the contrast or spacing test.
  • Blocking zoom on phones. If theme.liquid has maximum-scale=1 or user-scalable=no in the viewport tag, shoppers cannot pinch to zoom. Remove it.

How to check the fonts on your store

  1. Zoom to 200%

    Open a product page on a computer and press Ctrl and + (Cmd and + on a Mac) until the browser shows 200%. All text should still be there, and nothing should overlap or get cut off.
  2. Run the text spacing test

    Paste the spacing snippet from the text spacing section into your browser's developer tools, or use a text spacing bookmarklet. Look at buttons, badges, the menu, product card titles and the announcement bar.
  3. Check the colours

    Put your body text colour and background into a contrast checker. Normal text needs 4.5:1. Check sale prices, small print and text on top of images too.
  4. Read it on a phone

    Read a full product description on a phone, outdoors if you can. If you squint or zoom, your shoppers do too.

The free accessibility checker flags blocked zoom and other code problems on any public page, and the contrast checker covers your colours. Spacing, line length and how readable a font feels still need a person, which is why we explain what automated tests can and cannot find. If your theme is the problem, our scan of accessible Shopify themes shows how the free themes did.

How Inclusely will handle typography

When it launches, Inclusely will flag low-contrast text and blocked zoom on every template, suggest theme setting changes you approve, and guide you through the spacing and zoom checks software cannot do alone. Each change goes in a dated record. See how it works.

Questions about accessible fonts

What fonts are ADA compliant?

None, and none need to be. The ADA does not name any font for websites, and neither does WCAG, the standard courts and regulators use. What matters is how text behaves: it can be zoomed to 200%, it has enough contrast, it survives extra spacing, and it is real text rather than a picture of text. A plain, well-made font makes those easier.

What is the most accessible font?

There is no single most accessible font. Plain sans-serif fonts with clear letter shapes, such as Inter, Open Sans, Lato, Roboto, Noto Sans or the system font, are safe choices for body text. Atkinson Hyperlegible, made by the Braille Institute for low vision readers, is another good option. Size, spacing and contrast matter more than the font name.

What font size is required for ADA compliance?

There is no required size. WCAG 1.4.4 asks that text can be resized up to 200% without losing content, and it sets no minimum. Section508.gov suggests 15 to 16 pixels for websites. For a store, 16 pixels for body text is a sensible floor, with nothing important below 14 pixels.

Is serif or sans serif more accessible?

Both can work. Section508.gov says sans serif matters most for body text, and serif fonts are fine for headings. A plain serif at a good size is easier to read than a thin or condensed sans serif. Avoid script, handwritten and very decorative fonts for anything longer than a few words.

What is the best font for dyslexia?

Research does not back one font. A 2017 study in Annals of Dyslexia found that the OpenDyslexic font did not improve reading speed or accuracy for the students with dyslexia it tested. Dyslexia Scotland suggests a plain, evenly spaced font, 1.5 line spacing and left-aligned text, and says no one font suits everyone. Readers who prefer a special font can set it in their browser, as long as your theme lets their settings work.

What does WCAG 1.4.12 text spacing require?

Level AA criterion 1.4.12 says no content or function may be lost when a shopper sets line height to 1.5 times the font size, paragraph spacing to 2 times, letter spacing to 0.12 times and word spacing to 0.16 times. You do not have to use those values. Your theme just has to cope when someone else does.

What to do next

Readable text on every page of your store.

Early access stores get a free scan of the whole store, including contrast and zoom on every template, and a call about the results.

Get early access