Contrast, A design audit tool built for designers, not developers.
A free, public web tool that audits any live URL for design quality and accessibility compliance — returning a scored, shareable report in under 15 seconds.

Any designer should be able to paste a URL and know — in 10 seconds — whether their product is accessible.
Manual WCAG reviews are slow, require expertise, and are rarely done pre-launch. Enterprise tools like Siteimprove and Deque are priced out of reach for most teams. Free tools like axe and Lighthouse output raw JSON or developer dashboards — unusable by most designers.
AI-generated UIs are everywhere in 2025. Most of them fail basic accessibility checks. There is a real, growing need for a tool that catches this fast — and presents findings in a way designers can actually act on.
Paid tools cost $500+/month
Free tools output raw JSON, not designer-readable reports
AI-generated UIs routinely fail basic WCAG checks
No one runs accessibility checks pre-launch
Paste a URL. Get a score. Know exactly what to fix.
Contrast audits any publicly accessible URL across four dimensions: color contrast ratios (WCAG AA), alt text coverage, typography consistency, and spacing grid alignment. The entire audit completes in under 15 seconds, powered by a Playwright headless browser injecting axe-core directly into the page DOM.
The output is a scored, shareable report — not a wall of error codes. Each result gets a unique URL that can be shared on LinkedIn or downloaded as a PDF. The tool also generates a social card (OG image) so audit scores can be embedded directly in posts.
Scoring Logic
- Overall = (Contrast × 0.4) + (Alt Text × 0.3) + (Typography × 0.15) + (Spacing × 0.15). Contrast is weighted highest — it has the greatest direct impact on users with low vision or color blindness.
A full backend pipeline — from headless browser to scored, stored, shareable result.
The audit pipeline runs as a Next.js API route. When a URL is submitted, the backend calls Browserless.io (a hosted Playwright service) which visits the page in a real Chromium instance. A custom DOM evaluation script extracts text color pairs, image alt attributes, font families, and spacing values. axe-core is injected into the page for WCAG violation detection.
Four custom detector modules process the raw DOM data: typographyDrift.ts, spacingDrift.ts, colorDrift.ts, and buttonDrift.ts. A scoring engine applies weighted averages to produce the overall score. Results are stored in Vercel KV (Redis) with a 30-day TTL, enabling persistent shareable URLs. A Google Gemini 1.5 Flash integration generates plain-English fix suggestions for each finding.
Playwright via Browserless.io — real browser, real DOM
axe-core injected for WCAG AA violation detection
Gemini 1.5 Flash for plain-English fix suggestions
Vercel KV (Redis) for persistent shareable result URLs

350MB of Playwright can't run in a 50MB serverless function. So it doesn't.
Vercel serverless functions have a 50MB bundle limit. Playwright + Chromium weighs ~350MB. The solution: offload the browser to Browserless.io's free tier (1,000 sessions/month). The Next.js API route stays thin — it orchestrates, stores, and scores. The browser work happens remotely.
Stack
- Next.js 14 (App Router) · TypeScript · Playwright via Browserless.io · axe-core · color.js for WCAG math · Google Gemini 1.5 Flash (free tier) · Vercel KV (Redis) · @vercel/og for OG image generation · Vercel for deployment
Rate limiting is applied at 10 audits per IP per hour (stored in Vercel KV to survive cold starts). URL results are cached for 24 hours to avoid burning Browserless sessions on repeated audits of the same URL. The tool itself is required to score 90+ on its own audit — enforced as a pre-launch checklist item.
V1 shipped in two weeks: URL input with validation, full Playwright audit pipeline, scored results page, shareable URLs, OG image generation, and PDF report via browser print. The Gemini integration generates human-readable fix suggestions for each finding — no accessibility jargon, just instructions.
Scored results page at /audit/[id] — persistent, shareable
OG image generation via @vercel/og for social sharing
Gemini 1.5 Flash: plain-English fixes for every finding
PDF report via print-optimised /audit/[id]/report route
The 50MB Vercel function limit forced a smarter architecture. Offloading the browser to Browserless.io kept the API thin and the user experience fast.
Most audit tools fail at presentation. Contrast's differentiator is that the results page is as carefully designed as the products it audits.
24-hour URL result caching prevents redundant browser sessions — but it also means repeated visits to the same URL feel instant. Performance and cost optimization overlapped.
The tool must score 90+ on its own homepage before launch. If the accessibility audit tool fails accessibility checks, nothing else matters.