Free Tool
Contrast And Ramp Checker
Test a single colour pair, or a whole brand ramp against your light and dark backgrounds, using the WCAG 2.x contrast formula. Every step gets a job: body text, large text and icons, or fills only.
Single Pair
Colour Ramp
Page Backgrounds
Free, no signup. Runs in your browser, nothing you type leaves this page.
Every result has a shareable link.
What A Contrast Ratio Measures
A contrast ratio compares how much light two colours reflect. It runs from 1:1, where the colours are identical, to 21:1, which is black on white. The Web Content Accessibility Guidelines (WCAG) use it to set a floor for readable text and visible interface parts, because low contrast is the barrier that affects the most people: anyone with low vision, anyone over forty, and anyone reading a phone in daylight.
Most contrast checkers test one pair at a time. That is fine for a single button, but a brand palette is a ramp of ten or eleven tints and shades, and it has to work on a light page and a dark one. This tool tests the whole ramp in one pass and tells you what each step is allowed to do.
How The Tool Calculates Contrast
It uses the WCAG 2.x formula exactly as published:
- Linearise each channel. Each red, green and blue value is divided by 255. Values at or below 0.04045 are divided by 12.92; the rest become
((c + 0.055) / 1.055) ^ 2.4. (Older copies of WCAG print 0.03928 as the cut off. At 8 bit colour the two never produce a different result.) - Weight the channels. Relative luminance is
0.2126 R + 0.7152 G + 0.0722 B, because the eye is far more sensitive to green than to blue. - Compare. The ratio is
(L1 + 0.05) / (L2 + 0.05), with the lighter colour as L1.
Ratios are truncated to two decimals, never rounded up. A pair at 4.49:1 fails the 4.5:1 test, and the tool shows it as failing.
The Thresholds It Tests
- 4.5:1 for normal text at Level AA (Success Criterion 1.4.3, Contrast Minimum).
- 3:1 for large text at Level AA. Large means at least 18 point (24px) regular, or 14 point (about 18.66px) bold.
- 3:1 for user interface components and meaningful graphics, such as input borders, focus rings, icons and chart lines (Success Criterion 1.4.11, Non-text Contrast).
- 7:1 for normal text at Level AAA (Success Criterion 1.4.6, Contrast Enhanced).
How Each Step Gets A Job
For every step, the tool takes the ratio against your light background and your dark background and assigns a job from the thresholds above:
- Body text, AAA at 7:1 or more, and Body text, AA at 4.5:1 or more. Use these for paragraphs, labels, links and small print.
- Large text, icons, UI borders from 3:1 to just under 4.5:1. Headings at large sizes, icons that carry meaning, input outlines and focus indicators.
- Fills and decorative only under 3:1. Tinted backgrounds, card fills, dividers and hover washes. Never text, never the only border on a form field.
The As a fill column flips the question: if the step is a button or badge background, can your light or dark page colour sit on it as text? That is how you find which steps can carry a white label.
When you generate a ramp from one colour, the tool works in OKLCH, a colour space where equal lightness steps look like equal steps to the eye. It sets ten lightness targets from 50 to 900, keeps your hue, eases chroma down toward the ends, pulls any colour that falls outside sRGB back inside it, and places your exact brand colour at the step nearest its own lightness.
Reading The Matrix
The step against step matrix shows every combination inside the ramp. It answers questions the background table cannot: can the 800 sit on the 100 for a tinted callout, or is the 600 visible as a border on the 200? Green cells pass for any text, amber cells pass only for large text and interface parts, red cells fail both.
Common Mistakes
- Testing the brand colour against white and stopping. Most mid tone brand colours fail 4.5:1 on white. The fix is to use a darker step for text and keep the brand colour for fills and large display type.
- Forgetting the dark theme. A step that is perfect body text on white is often unreadable on near black. Test both backgrounds.
- Ignoring states. Hover, focus, visited and disabled colours need their own checks. Disabled controls are exempt from 1.4.3, but focus indicators are not exempt from 1.4.11.
- Text on photos and gradients. The ratio has to hold at the lightest point behind the text. Add an overlay and test the worst spot.
- Opacity. Text at 60 percent opacity is a new colour. Test the colour it renders as, not the token it came from.
What To Do With The Result
Write the jobs into the brand guidelines next to each swatch, so a developer or a designer joining later knows that the 500 is a fill and the 700 is for links. Then put the same rules into your design tokens. Export the report for the handover pack; the share link keeps a live copy you can send for sign off.
For agencies, this is the step that separates a palette from a colour system. Wise Media runs this check on every brand ramp before it reaches a client, because a colour that fails accessibility at launch gets quietly replaced later, and the brand drifts with it.
Fix What This Measured
Brand Identity Design Business Course
The Brand Identity Design Business Course shows how to turn a ramp like this into a colour system clients can actually use: step jobs, usage rules, accessible pairings and the guideline pages that stop a brand drifting after handover.
Rather Not DIY It?
Let Wise Media Build It.
The tool shows the gap. The studio closes it: brand, site, app and AI, then the ads, email, content and search that turn them into revenue.
Website Development
Custom sites with one job per page, built fast for phones, search and AI answers.
From $3,000CAD one timeSee Website DevelopmentApp Development
Web apps, portals and dashboards on Next.js, Supabase and Stripe, installable on any phone.
From $5,000CAD one timeSee App DevelopmentPaid Advertising
Meta, Google and TikTok campaigns built on the offer and page first, reported as one number.
From $750CAD per monthSee Paid AdvertisingSEO & AI Search
Rank in Google, get named by ChatGPT and Gemini, and convert the visit after the click.
From $350CAD per monthSee SEO & AI SearchBrand Identity
Positioning, logo suite, colour, type and the guide that keeps it consistent.
From $750CAD one timeSee Brand IdentityAI Agents & Automation
Custom AI agents, LLM features and n8n automation connected to the tools you already use.
From $1,000CAD one timeSee AI Agents & AutomationContent Production
Short form video, carousels and AI clone content produced on a weekly calendar.
From $750CAD per monthSee Content ProductionEmail Marketing
Campaigns written and sent, lifecycle flows and SMS, every send tied to revenue.
From $350CAD per monthSee Email MarketingWebsite Care
Updates, daily backups, monitoring, edits and search maintenance handled every month after launch.
From $100CAD per monthSee Website CareCyber Security
Email, accounts, staff devices and company data protected, with the documents your insurer asks for.
From $250CAD per monthSee Cyber SecurityContrast And Ramp Checker Questions
Straight answers on using it and acting on the result.
Quick Answer
What Contrast Ratio Does WCAG Require?
WCAG 2.x Level AA requires 4.5:1 for normal text and 3:1 for large text, which is 24px regular or about 18.66px bold. User interface components and meaningful graphics need 3:1 under Success Criterion 1.4.11. Level AAA raises normal text to 7:1. Ratios must meet the threshold without rounding up.
- Normal text. 4.5:1 at AA, 7:1 at AAA
- Large text and UI parts. 3:1
- Formula. WCAG 2.x relative luminance, (L1 + 0.05) / (L2 + 0.05)
FAQ
Frequently Asked Questions
At least 4.5:1 for body text, which is WCAG 2.x Level AA. Aim for 7:1 on long reading text if your palette allows it. Large headings can drop to 3:1, but small text, labels and links should never go below 4.5:1.
Only where it carries text or meaningful interface parts. A mid tone brand colour that fails on white can still be a button fill, a badge or a large headline. Use a darker step of the same ramp for links and small text.
Text at least 18 point, which is 24px, at regular weight, or at least 14 point, about 18.66px, in bold. Large text needs 3:1 at Level AA and 4.5:1 at Level AAA.
Yes, when they are needed to understand or operate the page. Success Criterion 1.4.11 requires 3:1 for input borders, focus indicators, meaningful icons and chart elements against adjacent colours. Purely decorative lines are exempt.
WCAG thresholds are minimums, so a ratio cannot be rounded up to pass. This tool truncates to two decimals and compares the raw value, so 4.49:1 is a fail for normal text even though it looks close.
OKLCH is a colour space built so that equal steps in lightness look equal to the eye. Generating a ramp in OKLCH gives evenly spaced tints and shades, where HSL often makes yellows look too light and blues look too dark at the same value.
Drafts of WCAG 3 have explored a different method, the Advanced Perceptual Contrast Algorithm. It is not a published standard. WCAG 2.x is what accessibility laws and procurement standards reference today, so this tool tests against WCAG 2.x.
No. Everything runs in your browser. If you export the report we ask for your email and save it with your ramp mode and step count. The share link stores your colours in the URL itself.
More Free Tools
Built from the same toolkits Wise Media runs client work on.
Design Token Generator
Colour ramp, type scale and spacing scale as CSS or JSON.
Use The ToolWebsite Health Checker
SSL, security headers, platform, speed and email auth, with a risk score.
Use The ToolEmail Deliverability Checker
SPF, DKIM and DMARC for any domain, explained in plain English.
Use The ToolAnswer Block Checker
Does the page answer its question in the first 60 words?
Use The ToolTitle And Meta Description Preview
See your search snippet, its truncation and its click reason.
Use The ToolPWA Readiness Checker
Manifest, service worker, icons and what the worker caches.
Use The ToolRather Have It
Done For You?
Wise Media builds and runs this for clients. Thirty minutes with Cody: the bottleneck named, the fix scoped, the price on the table.