GitHub

WCAG Color Constrast

A zero dependency library to check for WCAG compliant color contrasts.

Usage

Prerequisites

Node.js >= 22.x: This project leverages modern ESM features and ReScript generated patterns that perform best on recent V8 engines.

PNPM >= 9: PNPM is a fast, disk space efficient package manager.

This package is emitted as ES Modules (ESM) using the .mjs extension. Ensure your environment supports ESM or use a dynamic import() if calling from a CommonJS file.

Installation

pnpm add wcag-color-contrast

Basic example

import * as WCAG from "wcag-color-contrast";
// Get the raw contrast ratio
const ratio = WCAG.getContrastRatio("#ffffff", "#000000");
console.log(ratio); // 21.0
// Check compliance for normal text
const report = WCAG.isCompliant(ratio);
console.log(report);
/*
 { "WCAG 2.x": 
    {
        "AA": true,
        "AAA": true
    }
}
*/

Advanced Usage

// isCompliant(ratio, fontSize, bold)
const results = WCAG.isCompliant(3.5, 18, true);
/*
 { "WCAG 2.x": 
    {
        "AA": true,
        "AAA": true
    }
}
*/

Utility functions

WCAG.toRgba("#f00"); // "rgba(255, 0, 0, 1)"
WCAG.toRgba("#00000080"); // "rgba(0, 0, 0, 0.5)"

API Reference

Function Parameters Returns Description
getContrastRatio (color1: string, color2: string) number Calculates ratio between 1.0 and 21.0
isCompliant (ratio: number, fontSize?, bold?: bool) object Returns { WCAG 2.x: { AAA: bool, AA: bool } }
toRgba (hex: string) string Converts hex to rgba() format.

Development Installation

pnpm install

Build

It is recommended to use the build and test on change scripts in two separate terminal windows.

  • Build on change: pnpm run res:dev
  • Test on change: pnpm run test:watch
  • Build: pnpm run res:build

Read the original on github.com ↗