Contrast Checker Pro
Compare palette, image, and code colors with a contrast checker made for readability reports and exports.
Compare palette, image, and code colors with a contrast checker made for readability reports and exports.
Contrast Checker Pro reviews more than one color pair at a time. Instead of checking a single foreground and background combination, it can compare a palette, extract colors from an image, or analyze pasted HTML and CSS for text contrast issues. That makes it useful when a design system, landing screen, theme, or brand palette needs broader contrast review before individual pairs are tuned.
The main view is organized into Palette, Image, and Code tabs. Palette mode starts with editable color rows and builds a contrast matrix once at least two colors are available. Image mode accepts an uploaded image, extracts a small set of colors, supports direct picking from the canvas, and can send the extracted set into the palette matrix. Code mode reads pasted markup and styles, then reports visible text combinations with ratios below the normal text AA target.
Contrast Checker Pro is still a contrast checker, but its value is triage. A palette can contain dozens of possible foreground and background relationships, and many of those relationships are unsafe even when each color looks useful alone. The matrix exposes those relationships quickly. The report modal then shows the exact foreground, background, ratio, and pass or fail rows for the pair you choose.
Use Contrast Checker Pro before refining a single pair in Color Contrast Checker. The Pro review identifies which combinations deserve attention. The focused checker is better when one pair needs lightness, opacity, Smart Advisor suggestions, and a live text preview.
Each mode answers a different accessibility question. Palette mode checks relationships between known colors. Image mode turns visual source material into testable colors. Code mode inspects a small markup or style snippet for text contrast problems that may already exist in a component example.
| Mode | Visible input | Visible result | Best use |
|---|---|---|---|
| Palette | Editable color rows with color pickers and HEX fields. | A contrast matrix with ratio values for each color pair. | Reviewing a brand palette, theme palette, component palette, or token set. |
| Image | An uploaded image or a picked canvas color. | Extracted HEX colors that can be copied, removed, or sent to the matrix. | Testing whether screenshot, artwork, or photo colors can become interface colors. |
| Code | Pasted HTML or CSS in the Source Code area. | An Analysis Report with issue count, tag, text snippet, ratio, foreground, and background. | Checking a small component snippet before its colors are reused. |
Palette mode is the most direct route when the color set is already known. Image mode is better when colors are being collected from an asset. Code mode is useful when the visual decision has already moved into markup and needs a quick text contrast check before deeper manual review.
Choosing the right mode keeps the review accurate. A palette review should not be based on image extraction when the real product colors are already defined as tokens. An image review should not assume that all extracted colors deserve interface roles. A code review should not be treated as a complete audit when the pasted snippet lacks external CSS, interaction states, or the surrounding layout.
The matrix compares every available color against the others. The row color acts as the foreground text color and the column color acts as the background color in the visible cell preview. Same-color cells are marked as self matches and are not useful text pairs because the foreground and background have no separation.
Each active cell displays a rounded ratio preview. The foreground color is used for the number, and the background color is used behind it, so weak pairs often look weak before the report modal is opened. The cell ring gives a fast signal: stronger pairs appear safer, borderline pairs need context, and failing pairs should not be used for normal text without adjustment.
The matrix is directional. Color A as text on Color B as background can feel different from Color B as text on Color A as background, even when the numeric ratio is identical. The report modal keeps the roles explicit by naming the foreground and background swatches. Use the swap control when both directions are possible in the design system.
| Ratio range | Meaning in the matrix | Next decision |
|---|---|---|
| 7:1 or higher | Strong contrast for normal text and a useful candidate for important interface copy. | Open the cell to confirm the AAA rows, then assign the pair to text roles if the visual style fits. |
| 4.5:1 to 6.99:1 | Generally suitable for normal body text. | Use for body text and labels when the pair fits the intended hierarchy. |
| 3:1 to 4.49:1 | May work for large text but is not enough for normal text. | Reserve for large display text or adjust one color before using it for smaller copy. |
| Below 3:1 | Too weak for text contrast decisions in the visible checker. | Avoid as a text pair or move it to decorative, border, or non-text roles after separate review. |
Image colors often need extra caution because the colors that look best inside artwork are not always readable as interface colors. Contrast Checker Pro extracts colors from an uploaded image and shows them as HEX rows. You can copy a color, remove a color that is not useful, or use Pick when a specific pixel area matters more than the automatically extracted set.
After the extracted colors are sent to the palette, the matrix helps decide which image colors can become text, background, accent, or decorative roles. A color sampled from a photo may work well as a background only when paired with a much darker or lighter text color. A mid-tone color may be better as a border, icon, or chart accent than as a text surface.
When the image itself is the main source of the palette, Color Picker From Image is useful for choosing exact image colors before a broader matrix review. Once those colors are selected, Contrast Checker Pro can compare them against other candidates and reveal which combinations are safe for text.
Image-derived palettes often need pruning. Very similar colors can clutter the matrix, and highly detailed photos can produce mid-tones that are attractive but weak for text. Remove colors that will not be used in interface roles before sending the set to the palette. A smaller matrix with realistic candidates is easier to interpret than a larger matrix filled with decorative colors.
Code mode is designed for small snippets, not for a full production audit. It creates a hidden preview frame, reads visible text elements, finds their computed text color and effective background color, and reports pairs that fall below the normal text AA threshold. The result includes the element tag, a short text snippet, the ratio, and both colors converted to HEX chips.
This is helpful when a button, alert, card, or small content block has already been written and the color problem may be buried in inline styles or CSS. A clean report means the checked snippet did not show a normal text contrast issue through the visible code analyzer. An issue report means the pair should be reviewed and adjusted before the snippet is copied into a larger project.
Code mode is most reliable when the snippet contains the text and the styles that actually create the visual pair. If a class depends on a missing stylesheet, the browser may compute a different color or background than the real component uses. For that reason, treat Code mode as a fast inspection aid and use a full accessibility audit for final product verification.
The Export control in Palette mode opens a modal with two copyable formats. CSS Variables are useful when the palette needs to move into a stylesheet, design token file, or component prototype. JSON Array output is useful when the same colors need to be stored, shared, imported, or passed into another color utility.
| Export format | Visible output | Use when |
|---|---|---|
| CSS Variables | A :root block with numbered color variables. | The palette is moving into CSS, a prototype, or a design token discussion. |
| JSON Array | A formatted array of HEX color strings. | The colors need to be copied into data, documentation, another tool, or a review note. |
Exporting does not prove that every color pair is accessible. It only packages the current palette values. Review the matrix and modal reports first, then export the colors that have clear roles. For example, a palette may export six colors, but only two of them may be suitable for normal text on light surfaces.
A successful matrix review should end with role assignments, not just pass and fail notes. Mark which colors are safe for normal text, which colors are safe only for large text, which colors work better as backgrounds, and which colors should remain decorative. This prevents a passed accent pair from being reused in a smaller context where it no longer works.
For a design system, keep high contrast pairs close to common UI jobs such as body text, input labels, help text, button labels, and navigation. Reserve lower contrast or borderline combinations for large display text only when the matrix confirms the large text rows. When a palette contains both light and dark surfaces, run the matrix before naming semantic roles so the token names reflect real contrast behavior.