norito
PDF
Merge PDFCombine multiple PDFs into one
Split PDFPull out pages or split into files
Rotate PDFFix sideways or upside-down pages
PDF to JPG/PNGTurn pages into images
JPG/PNG to PDFCombine images into one PDF
Delete & Reorder PagesDelete or rearrange pages
Add Page NumbersNumber every page
Add WatermarkStamp text across every page
Extract TextPull text out of a PDF
Compress PDFShrink a large PDF's file size
Sign PDFDraw or type a signature
Images
Compress ImageShrink to a target file size
Placeholder GeneratorCustom-size placeholder images
Remove BackgroundCut a person out of a photo
Resize ImageChange width and height, exact or by percentage
Image ConverterConvert between JPG, PNG, and WebP
Crop ImageDrag a box to crop, free-form or locked ratio
Remove MetadataStrip EXIF, GPS, and camera info
Watermark ImageAdd a text watermark with live preview
Developer
Test File GeneratorByte-exact dummy files, any size
JSON FormatterFormat, validate, minify
Markdown EditorLive preview, export as .md/.html
UUID GeneratorBulk random UUID v4 identifiers
Base64 Encode / DecodeText to and from Base64, UTF-8 safe
Hash GeneratorMD5, SHA-1, SHA-256, SHA-512
Timestamp ConverterUnix time to date, both ways
JSON DiffCompare two JSON documents
JWT DecoderDecode a JWT's header and payload
Regex TesterTest a regex with live match highlighting
CSV to JSONConvert a CSV file into JSON
CSV ViewerView and edit a CSV as a table
Text
SEO Slug GeneratorClean URL slugs from titles
Limited Text GeneratorPlaceholder text, exact length
Word CounterLive word, sentence, and paragraph counts
Character CounterCharacter count, with platform limits
Remove Duplicate LinesDeduplicate a list of lines
Sort LinesSort alphabetically, numerically, or shuffle
Case ConverterUPPERCASE, camelCase, snake_case, and more
Utilities
Password GeneratorRandom passwords & passphrases
QR Code GeneratorCustom colors, error correction
SEO
Meta Tag GeneratorTitle, description, OG, Twitter tags
UTM BuilderBuild campaign tracking URLs
Robots.txt GeneratorAllow/disallow rules, sitemap ref
Sitemap GeneratorURLs in, sitemap.xml out
Design
CSS Gradient GeneratorLinear or radial, copy the CSS
Box Shadow GeneratorSingle or layered shadows
Border Radius GeneratorPer-corner radius, copy the CSS
Favicon GeneratorEvery favicon size you need
Color Palette ExtractorPull dominant colors from an image
Contrast CheckerWCAG contrast ratio, AA/AAA pass
Color ConverterHEX, RGB, HSL, CMYK, live
Blog

norito / Blog / WCAG Contrast Checking: A Practical Guide

WCAG Contrast Checking: A Practical Guide

Published 2026-07-15

Contrast ratio isn't just a compliance checkbox, it's the difference between text people can read and text they can't. Here's how it's calculated and what the thresholds actually mean.

Why contrast matters

Text that doesn't contrast enough with its background is hard to read for everyone, and can be completely unreadable for people with low vision or color blindness. The Web Content Accessibility Guidelines (WCAG) set minimum contrast ratios specifically so that text remains legible for the widest possible range of visual abilities, and meeting them is both a genuine usability improvement and, in many jurisdictions, a legal requirement for public- facing websites.

How contrast ratio is actually calculated

Contrast ratio is a comparison between the relative luminance (perceived brightness) of the text color and the background color, expressed as a ratio from 1:1 (identical, no contrast at all) to 21:1 (pure black on pure white, maximum possible contrast). It isn't a simple brightness comparison, luminance is calculated using a formula that weights red, green, and blue differently, since the human eye perceives green as brighter than red or blue at the same intensity, and it applies a gamma correction to account for how monitors actually display color. You don't need to calculate this by hand, but knowing that it's about perceived brightness (not just raw RGB values) helps explain some genuinely counterintuitive results, like why certain mid-tone colors that look reasonably distinct can still fail.

The actual thresholds

WCAG 2.1 defines two conformance levels. AA, the standard most organizations target, requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text (defined as 18pt regular or 14pt bold and larger). AAA, a stricter level, requires 7:1 for normal text and 4.5:1 for large text. Most legal accessibility requirements (like the ADA in the US, as interpreted through WCAG, or the EN 301 549 standard in the EU) reference AA as the baseline, AAA is generally treated as a stretch goal rather than a strict requirement.

Common contrast mistakes

Light gray text on a white background is the single most common failure, it often looks "clean" and "modern" in a design mockup but fails AA badly and is genuinely hard to read for many users. Placeholder text inside form fields is frequently too low-contrast, and since it disappears once you start typing, designers often don't notice it's a problem. Text overlaid on photos or gradients is risky because the contrast ratio can pass in one area of the image and fail in another, adding a solid-color overlay or text shadow behind the text is a common fix. Brand colors, especially pastel or mid-saturation brand palettes, frequently fail contrast requirements when used as text color and need a darker or lighter variant reserved specifically for text.

How to check your own colors

Pick your foreground (text) color and background color, then check the resulting ratio against both the AA and AAA thresholds for the text size you're using. If a combination fails, the most reliable fix is usually to darken the text color (for light backgrounds) or lighten it (for dark backgrounds) until it clears the threshold, rather than changing the background, since the background color is often more tied to brand identity than the text color is.

Try it yourself: Contrast Checker, to check any two colors against the WCAG AA and AAA thresholds instantly.
norito

Small utilities that solve one annoying problem each. Everything runs in your browser, nothing is uploaded.

PDF

Merge PDF Split PDF Rotate PDF PDF to JPG/PNG JPG/PNG to PDF Delete & Reorder Add Page Numbers Add Watermark Extract Text Compress PDF Sign PDF

Images

Compress Image Resize Image Image Converter Crop Image Remove Metadata Watermark Image Placeholder Remove BG

Developer

Test Files JSON Formatter Markdown Editor UUID Generator Base64 Hash Generator Timestamp JSON Diff JWT Decoder Regex Tester CSV to JSON CSV Viewer

Text

Slug Generator Text Limit Word Counter Character Counter Dedupe Lines Sort Lines Case Converter

Utilities

Password QR Code

SEO

Meta Tags UTM Builder Robots.txt Sitemap

Design

Gradient Box Shadow Border Radius Favicon Color Palette Contrast Checker Color Converter
© 2026 norito. All tools run locally in your browser. Privacy Policy Buy me a coffee
Esc