Skip to the main content
Rampline
Menu

Bench note

Colour Contrast in Builder Themes: The Most Common Failure on the Web

Low contrast text was detected on 83.9% of the top million home pages. Here is why builder themes produce it so reliably, and how to measure your own instead of guessing.

Published 3 August 2026Re-measured 19 September 2026

Jump to a section5 sections

Of the six failure types the WebAIM Million reports on, one towers over the rest. In the 2026 analysis, low contrast text was detected on 83.9% of the top million home pages — well ahead of missing alternative text at 53.1% and missing form labels at 51%.

It is also, of the six, the one most completely within your control on a website builder. You do not need a developer. You need a number.

Three of the six, in the 2026 WebAIM MillionShare of the top million home pages where each failure was detected automatically. Automated detection finds only some failures, so read these as floors, not totals.
  • Low contrast text83.9%
  • Missing alternative text53.1%
  • Missing form labels51%

The numbers, and where they come from

Two success criteria, both about the same thing at different levels of ambition.

SC 1.4.3 Contrast (Minimum), Level AA, asks for at least 4.5:1 for text, and 3:1 for large-scale text. This is the threshold almost every legal instrument that references WCAG is pointing at.

SC 1.4.6 Contrast (Enhanced), Level AAA, asks for at least 7:1 for text, and 4.5:1 for large-scale text.

"Large-scale" has a definition rather than a vibe: at least 18 point, or 14 point bold. In CSS terms that lands around 24px, or about 18.66px when bold.

There is a third criterion people forget entirely. SC 1.4.11 Non-text Contrast, Level AA, asks for 3:1 on the parts of the interface that are not text — the border of an input, the outline of a focus ring, the stroke of an icon that carries meaning. A form field whose only boundary is a pale grey hairline can fail this while every word on the page passes.

Rampline itself is built to the enhanced criterion rather than the minimum, and the working is a script in the repository rather than a claim: body text here measures 19.68:1, black on the yellow bands measures 13.75:1, and the lightest rule the design is allowed to draw measures 3.45:1. Three obvious uses of the yellow were measured and rejected — yellow type on white at 1.43:1, white type on yellow at the same, and a darkened yellow hairline on white at 1.87:1. That last set is the useful part of the exercise, because it is where the intuition fails.

This site's pairs against the floorsEach bar starts at 1:1, where there is no contrast at all. Lines mark 3:1, 4.5:1 and 7:1. Computed from the palette with the WCAG 2.2 formula.
  • Black text on white19.68:1Clears 7:1 (AAA text)
  • Black text on the yellow13.75:1Clears 7:1 (AAA text)
  • Lightest rule on white3.45:1Clears 3:1 for a rule
  • Darkened yellow rule on white1.87:1Below 3:1 even for a rule
  • Yellow text on white1.43:1Fails every floor
  • White text on yellow1.43:1Fails every floor

Why builder themes produce this failure so reliably

Four mechanisms, and most low-contrast sites have several of them at once.

Theme previews are shot on ideal content. The demo has a two-word heading in 48px over a dark photograph. Your version has a paragraph of body copy in 15px over the light part of the same photograph. The theme was never wrong; it was demonstrated in a condition you do not share.

The greys are chosen by eye on a good screen. Designers work on bright, colour-accurate displays in controlled light. Your reader is outdoors, on a phone at 40% brightness, with a smeared screen protector. The grey that reads as "elegantly subdued" in the studio reads as "absent" on the train.

Text over images is unmeasurable by construction. Any contrast figure you calculate is against one pixel. Move the crop, change the image, resize the window, and the ratio changes. Builders encourage this layout because it photographs well.

Brand colour is treated as non-negotiable. A mid-tone brand colour used as body text can land just under the 4.5:1 minimum — close enough to look fine and far enough to fail. The resolution is almost always to keep the brand colour for large display type, backgrounds and shapes, and use a darker variant for running text. Nobody has ever noticed the difference except the people who could suddenly read the page.

How to measure, without buying anything

Any browser's developer tools will give you a computed contrast ratio if you inspect an element and open the colour swatch next to its color property. That is the fastest route and it uses the colours actually rendered, which is better than the colours you think you specified.

Two habits make this considerably more useful.

Check the worst case, not the best. Find your smallest, lightest, longest piece of running text — usually the footer, a form's helper text, a date stamp, or a disclaimer. Those are the ones that fail. Headings are almost never the problem.

Check your states. Placeholder text, disabled controls, the hover colour of a link, and the text inside a button that changes appearance on focus. Placeholder text in particular is frequently three shades lighter than anything else on the page.

The specific places it goes wrong on builder sites

In rough order of how often we see it:

  • Footer text. Small, pale, on a tinted background, and carrying your address and opening hours.
  • Form helper and placeholder text. See above, plus an input border that fails 1.4.11 on its own.
  • Captions under images. Styled as "quiet" by every theme on earth.
  • Text over hero images. Unmeasurable, and usually white over something that is only dark in the corner it was cropped from.
  • Button text on brand-coloured buttons. White on mid-blue, white on orange and white on yellow are the classic failures, and white on yellow is always catastrophic.
  • Link colour inside body text. Often a lighter tint of the brand colour, which fails both the contrast criterion against the background and, if the underline has been removed, SC 1.4.1 Use of Color as well.
  • Disabled buttons. Technically exempt from the contrast criteria as inactive elements, but if your visitor cannot tell why the button will not respond, you have solved a compliance question and created a usability one.

Fixing it without redesigning everything

You very rarely need a new palette. You need two or three darker variants of the colours you already have.

  1. Darken the body text first. If your running copy is a grey, take it towards black until it clears 4.5:1, then consider going further towards 7:1. Nobody has ever complained that body text was too legible.
  2. Give links their underline back. This fixes a separate criterion and makes the link colour's exact value much less critical.
  3. Split the brand colour in two. A display version and a text version. Use the text version anywhere the type is under 24px.
  4. Put a solid panel behind text over images, rather than a gradient you have to guess about. This converts an unmeasurable case into a measurable one, which is the actual win.
  5. Check the footer, because you have not.

None of this requires a subscription, a widget or a consultant, and none of it makes your site compliant with anything — that is a legal determination about your specific site and nothing here is legal advice. It does make your site readable, which is the point the standard is gesturing at.

How much your platform helps varies, and the assessment of ADA-compliant website builders covers which ones put a contrast check where the decision is being made rather than in a report afterwards.

Questions from the bench

Is 4.5:1 or 7:1 the number I need?
SC 1.4.3, the Level AA criterion, asks 4.5:1 for text and 3:1 for large-scale text, and that is the threshold most instruments referencing WCAG point at. SC 1.4.6 at Level AAA asks 7:1 and 4.5:1. Meeting the enhanced criterion on body text is not difficult once you have decided to, and it buys you a margin for bad screens and bright rooms.
Does contrast apply to logos?
Logotypes and brand names are outside the scope of the text contrast criteria. That is a scoping decision in the standard rather than a statement that an unreadable logo is a good idea, and if your logo is also the link to your home page, its accessible name still has to be right.
How do I check contrast over a photograph?
Strictly, you cannot get one reliable number, because the ratio varies across the image and changes with the crop. The practical answer is to stop trying: put the text on a solid panel, or apply a solid overlay of a known colour, so that the pair you are measuring is a pair that actually exists.
My theme will not let me change the grey. What now?
Most builders allow a custom CSS block on paid plans, and one rule overriding a body colour is about as safe an intervention as exists. If your plan genuinely offers no route to change a text colour, that is a real constraint on the platform and worth weighing before you build anything large on it.

Where this is filed

Every note here sits underneath one assessment: ADA-compliant website builders, which is where the platforms are read side by side. Nothing on this site is legal advice, and no builder on that page is sold as a route to compliance.

The recheck notice

When a platform quietly changes what it gives you

Builders move accessibility features without a changelog: a theme restyles its focus ring, a wizard learns a check, a field migrates to another panel. The recheck list is meant to carry one short note whenever a page here has to be corrected. It is not switched on yet, so this form keeps nothing — until it is, the re-measured date at the foot of each page is the record.

For recheck notes only — for example, [email protected].