Stockio

Display P3 vs sRGB: Choosing Color Spaces for the Web

Build a reliable sRGB foundation, add Display P3 accents with safe CSS fallbacks, and check that wider color never compromises readability or brand consistency.

By Arjun Raman

Type & Brand Designer ·

On this page

A vivid orange can look electric on a designer's monitor and ordinary on a client's laptop. Neither screen is necessarily broken. They may simply reproduce different ranges of color, and your stylesheet may not describe the intended color space.

Choosing between sRGB and Display P3 is not a sitewide switch. It is a delivery decision made across tokens, assets, browser support, and hardware. This guide builds a dependable baseline and adds wider color only where it improves the interface.

Start with the color your users can actually see

A color gamut is the range of colors a system can represent. sRGB is the established baseline for web content. Display P3 uses different primaries and can represent some more saturated reds, greens, and related colors that fall outside sRGB. It does not make every color brighter or improve every photograph.

Use the Color Converter (HEX, RGB, HSL, CMYK) below to inspect your existing palette before adding anything new. Record the exact values for your primary action, background, foreground, and error state. The color conversion tool is useful for normalizing those baseline values, not for certifying a monitor's gamut or automatically producing equivalent P3 coordinates.

Keep color space separate from notation. Hex, RGB, and HSL commonly describe sRGB colors in CSS; converting hex to HSL does not increase the gamut. Likewise, adding more digits creates precision, not a larger palette. A documented baseline prevents a cosmetic experiment from becoming an accidental redesign.

Understand what P3 changes and what it cannot fix

Display P3 combines P3 primaries with the sRGB transfer function and a D65 white point. Its coordinates are not interchangeable with sRGB coordinates. The same three numbers in each space can describe visibly different colors, so copying channel values is not a conversion.

The output pipeline matters as much as CSS. Browser color management, operating system settings, display capabilities, and image profiles all affect the result. A wide-gamut declaration cannot make an sRGB-only display reproduce an out-of-gamut color. Browsers must map unsupported colors into what the output can show.

The MDN CSS color reference explains the available syntaxes, including the explicit color-space form. Start with that distinction before evaluating perceptual spaces or more elaborate interpolation strategies.

Decide where richer color earns its cost

Reserve wide-gamut accents for a few intentional surfaces: a campaign illustration, a large decorative gradient, or a brand highlight. Body text, focus rings, and status indicators usually benefit more from predictable contrast than extra saturation.

For example, a product dashboard could keep all functional tokens in sRGB while allowing a promotional banner to use P3. That limits the review surface. The dashboard remains legible on office monitors, while capable displays receive an enhancement rather than a different interface.

Ship an explicit fallback before the enhancement

Write the sRGB version first, then override it only when the browser supports the syntax and the output advertises a suitable gamut. Syntax support and display capability are separate questions. A browser can parse P3 colors even when its current screen cannot display the entire gamut.

The following pattern uses explicit tokens so the fallback remains easy to review:

:root {
--promo-surface: #f2f5ff;
--promo-accent: #b83c18;
--promo-ink: #172033;
}

@supports (color: color(display-p3 1 0 0)) {
@media (color-gamut: p3) {
  :root {
    --promo-accent: color(display-p3 0.72 0.22 0.08);
  }
}
}

.promo {
background: var(--promo-surface);
color: var(--promo-ink);
border-inline-start: 0.3rem solid var(--promo-accent);
}

These accent values are illustrative, not a mathematically matched pair. Review both against the brand target and replace them with approved values. Treat the two presentations as related outputs, not evidence that identical channel numbers mean identical appearance.

The MDN color-gamut documentation describes the media query. Keep the enhancement in one token layer rather than scattering alternate values through dozens of components. Centralization makes rollback and visual comparison straightforward.

Protect contrast and semantic meaning

A saturated color is not automatically an accessible color. Relative luminance determines contrast, and perceived vividness is not a substitute for measurement. A bright accent can disappear against white even while looking unusually intense on a wide-gamut display.

Check normal text against the WCAG AA threshold of 4.5:1, and qualifying large text against 3:1. Relevant non-text interface components and state indicators generally need 3:1 against adjacent colors. The WAI contrast guidance explains the text requirements and their boundaries.

Use the UI contrast checker for supported input formats. If a checker accepts only sRGB values, it cannot independently certify your P3 declaration. Validate the actual wide-gamut output with appropriate tooling, and avoid assuming that a passing fallback proves the enhancement passes too.

Test states, not just a palette sheet

Review functional states together: default, hover, focus, pressed, disabled, success, and error. A more saturated hover state may reduce contrast or obscure a focus outline. Inspect those combinations on both light and dark surfaces.

Give errors text or an icon as well as color. Keep links recognizable without depending solely on a hue difference. These choices preserve meaning when displays differ, users enable forced colors, or a screenshot loses its original profile.

Keep assets and handoff specifications consistent

CSS colors and exported images can disagree even when they appeared identical in a design file. Embedded profiles tell color-managed software how image values should be interpreted. Exporting a P3 image without an appropriate profile can change its appearance downstream.

Ask for a deliberate export policy: sRGB assets for general-purpose UI imagery, with tagged wide-gamut assets only where the pipeline has been tested. Optimization should preserve the intended profile or perform a deliberate conversion, not silently discard metadata that affects interpretation.

Document a token contract with the sRGB fallback, optional P3 enhancement, intended surfaces, and approved text pairings. Return to the Color Converter when translating baseline values for implementation, but keep P3 coordinates explicitly labeled in the specification.

A useful review includes one standard-gamut monitor, one wide-gamut device, and the same browser on both where possible. Move the browser window between displays and reload if necessary. Compare real components rather than isolated swatches because neighboring colors change perception.

Record screenshots for regression review, but do not treat them as universal ground truth. Capture and viewing software may alter profiles. For more palette-system context, use the UI design articles to connect color decisions with tokens, contrast, and component behavior.

Key takeaways

  • Establish an sRGB baseline before introducing wider-gamut values. It is the dependable reference for implementation, reviews, and fallback behavior.
  • Treat Display P3 as progressive enhancement, not a replacement for accessible components or a cure for inconsistent monitors.
  • Separate browser parsing from display capability, and centralize alternate values in tokens instead of component-specific exceptions.
  • Measure contrast for actual color pairs and states. A more vivid accent can still create a less readable interface.
  • Preserve asset profiles intentionally, document both outputs, and validate on real displays before declaring the color system finished.
Featured sponsor

Reach designers & developers at work

Put your product next to the tools people use every day. One sponsor per placement, no tracking pixels.

Become a sponsor

Keep reading

Related articles

More in Typography & Colour
Typography & Colour

15 Best Website Color Palettes and Collections

Find dependable colour collections for websites, from curated inspiration and ready-made schemes to accessible design-system palettes, plus practical advice for choosing and testing colours.

Includes: Color converterArjun RamanArjun Raman
Typography & Colour

8 Best Color Picker Apps and Browser Extensions

Compare practical colour picker apps and browser extensions for sampling screens, inspecting web pages, and saving colour values, with advice on accuracy, formats, and workflow.

Includes: Color converterNoor HaddadNoor Haddad
Typography & Colour

Chart Color Palette: Colors for Charts and Dashboards

Choose categorical chart colours that stay distinct at realistic sizes, avoid false ordering, and work alongside product accents and status colours.

Includes: Color converterJonah WeissJonah Weiss
Typography & Colour

Neutral Color Palette: Choosing Warm and Cool Neutrals

Choose warm or cool greys, off-whites, and near-blacks that support your accent colours, with practical checks for undertones and large surface areas.

Includes: Color converterMateo FernándezMateo Fernández
Typography & Colour

The 60-30-10 Rule in Web Design: Adapting the Color Rule

Use the 60-30-10 colour rule as a flexible starting point for website palettes, then adapt coverage, visual weight, and accents to real content.

Includes: Color converterArjun RamanArjun Raman
Typography & Colour

Monochromatic Color Palette: How to Avoid a Flat Result

Turn a single hue into a useful monochromatic palette with distinct surfaces, strong foregrounds, controlled chroma, and a clear hierarchy in CSS.

Includes: Color converterMateo FernándezMateo Fernández