sRGB vs P3 Color Spaces

8 min readUpdated 2026-06-10

Here's a question that's been bugging front-end developers since 2016: why do the colors on your MacBook Pro look richer than the exact same hex code on your office monitor? The answer is color gamuts — specifically, the difference between sRGB (the web's default since 1996) and Display P3 (Apple's wider gamut that covers 25% more visible colors).

This isn't academic trivia. As of 2026, 87% of smartphones and 64% of laptops ship with P3-capable displays (DisplayMate, 2025). If you're still designing exclusively in sRGB, you're leaving a quarter of the color spectrum on the table — delivering washed-out reds, muted greens, and lifeless oranges to the majority of your users.

The good news: CSS now supports wide-gamut colors natively through the color() function and oklch(). The bad news: most designers don't know how to use them without breaking the experience for sRGB displays. This guide covers what P3 actually is, when to use it, how to implement fallbacks, and the real-world performance data from companies already shipping wide-gamut designs.

How It Works

Apple's entire ecosystem has been P3-native since 2016. The iPhone's camera captures in P3, Photos edits in P3, and Safari renders P3 CSS colors. When Apple redesigned their marketing pages in 2022, they reported that P3 hero images increased visual impact scores by 32% compared to sRGB equivalents — particularly for product shots of red/orange iPhones and the green MacBook Air.

Netflix's UI team conducted a 2024 study on thumbnail color vibrancy: P3-gamut thumbnails had a 12% higher click-through rate on P3 displays compared to the same thumbnails clamped to sRGB. Their implementation uses the picture element with srcset to serve P3 WebP images to capable displays and sRGB JPEG fallbacks to others.

Figma added P3 color support in 2023 after years of user requests. They store all colors internally as P3 values and convert to sRGB only at export time when the user selects sRGB as the target. This means designs stay in the wider gamut throughout the workflow, preserving vibrancy until the last possible moment.

Stripe's identity refresh (2025) specifically chose their signature purple because it sits right at the boundary of sRGB gamut — meaning P3 displays render it with noticeably more depth and saturation than sRGB monitors. It's a deliberate choice that makes their brand look premium on modern hardware.

The Guardian's web team published a case study showing that their editorial photography displayed in P3 on supported browsers resulted in 8% longer average time-on-page for image-heavy articles. They implemented progressive enhancement: serve P3 to capable browsers, sRGB to everything else.

How It Works

Apple's entire ecosystem has been P3-native since 2016. The iPhone's camera captures in P3, Photos edits in P3, and Safari renders P3 CSS colors. When Apple redesigned their marketing pages in 2022, they reported that P3 hero images increased visual impact scores by 32% compared to sRGB equivalents — particularly for product shots of red/orange iPhones and the green MacBook Air.

Netflix's UI team conducted a 2024 study on thumbnail color vibrancy: P3-gamut thumbnails had a 12% higher click-through rate on P3 displays compared to the same thumbnails clamped to sRGB. Their implementation uses the picture element with srcset to serve P3 WebP images to capable displays and sRGB JPEG fallbacks to others.

Figma added P3 color support in 2023 after years of user requests. They store all colors internally as P3 values and convert to sRGB only at export time when the user selects sRGB as the target. This means designs stay in the wider gamut throughout the workflow, preserving vibrancy until the last possible moment.

Stripe's identity refresh (2025) specifically chose their signature purple because it sits right at the boundary of sRGB gamut — meaning P3 displays render it with noticeably more depth and saturation than sRGB monitors. It's a deliberate choice that makes their brand look premium on modern hardware.

The Guardian's web team published a case study showing that their editorial photography displayed in P3 on supported browsers resulted in 8% longer average time-on-page for image-heavy articles. They implemented progressive enhancement: serve P3 to capable browsers, sRGB to everything else.

Developer Perspective

Apple's entire ecosystem has been P3-native since 2016. The iPhone's camera captures in P3, Photos edits in P3, and Safari renders P3 CSS colors. When Apple redesigned their marketing pages in 2022, they reported that P3 hero images increased visual impact scores by 32% compared to sRGB equivalents — particularly for product shots of red/orange iPhones and the green MacBook Air.

Netflix's UI team conducted a 2024 study on thumbnail color vibrancy: P3-gamut thumbnails had a 12% higher click-through rate on P3 displays compared to the same thumbnails clamped to sRGB. Their implementation uses the picture element with srcset to serve P3 WebP images to capable displays and sRGB JPEG fallbacks to others.

Figma added P3 color support in 2023 after years of user requests. They store all colors internally as P3 values and convert to sRGB only at export time when the user selects sRGB as the target. This means designs stay in the wider gamut throughout the workflow, preserving vibrancy until the last possible moment.

Stripe's identity refresh (2025) specifically chose their signature purple because it sits right at the boundary of sRGB gamut — meaning P3 displays render it with noticeably more depth and saturation than sRGB monitors. It's a deliberate choice that makes their brand look premium on modern hardware.

The Guardian's web team published a case study showing that their editorial photography displayed in P3 on supported browsers resulted in 8% longer average time-on-page for image-heavy articles. They implemented progressive enhancement: serve P3 to capable browsers, sRGB to everything else.

Always provide an sRGB fallback. The @supports + @media (color-gamut: p3) combo ensures P3 colors only apply when both the browser and the display support them. Never ship P3-only colors.

Use oklch() instead of color(display-p3) for design tokens. OKLCH is gamut-agnostic and perceptually uniform, so you can define a color once and let the browser clip it to the display's capability.

Real-World Examples

Apple's entire ecosystem has been P3-native since 2016. The iPhone's camera captures in P3, Photos edits in P3, and Safari renders P3 CSS colors. When Apple redesigned their marketing pages in 2022, they reported that P3 hero images increased visual impact scores by 32% compared to sRGB equivalents — particularly for product shots of red/orange iPhones and the green MacBook Air.

Netflix's UI team conducted a 2024 study on thumbnail color vibrancy: P3-gamut thumbnails had a 12% higher click-through rate on P3 displays compared to the same thumbnails clamped to sRGB. Their implementation uses the picture element with srcset to serve P3 WebP images to capable displays and sRGB JPEG fallbacks to others.

Figma added P3 color support in 2023 after years of user requests. They store all colors internally as P3 values and convert to sRGB only at export time when the user selects sRGB as the target. This means designs stay in the wider gamut throughout the workflow, preserving vibrancy until the last possible moment.

Stripe's identity refresh (2025) specifically chose their signature purple because it sits right at the boundary of sRGB gamut — meaning P3 displays render it with noticeably more depth and saturation than sRGB monitors. It's a deliberate choice that makes their brand look premium on modern hardware.

The Guardian's web team published a case study showing that their editorial photography displayed in P3 on supported browsers resulted in 8% longer average time-on-page for image-heavy articles. They implemented progressive enhancement: serve P3 to capable browsers, sRGB to everything else.

P3 colors with sRGB fallback in CSS

/* Progressive enhancement: sRGB fallback + P3 upgrade */
:root {
  /* sRGB fallback (all browsers) */
  --brand-red: #e63946;
  --brand-green: #2a9d8f;
  --brand-orange: #e76f51;
}

/* P3 upgrade for capable displays */
@supports (color: color(display-p3 1 0 0)) {
  @media (color-gamut: p3) {
    :root {
      --brand-red: color(display-p3 0.96 0.18 0.22);
      --brand-green: color(display-p3 0.12 0.65 0.55);
      --brand-orange: color(display-p3 0.95 0.42 0.28);
    }
  }
}

/* Or use oklch for perceptual uniformity */
:root {
  --accent: oklch(65% 0.25 15); /* vivid red in oklch */
}

/* Detect gamut support in JavaScript */
const supportsP3 = window.matchMedia('(color-gamut: p3)').matches;
const supportsHDR = window.matchMedia('(dynamic-range: high)').matches;
console.log(\`P3: \$\{supportsP3\}, HDR: \$\{supportsHDR\}\`);

Copy and paste into your project — free to use.

Pro Tips

Developer Perspective

Apple's entire ecosystem has been P3-native since 2016. The iPhone's camera captures in P3, Photos edits in P3, and Safari renders P3 CSS colors. When Apple redesigned their marketing pages in 2022, they reported that P3 hero images increased visual impact scores by 32% compared to sRGB equivalents — particularly for product shots of red/orange iPhones and the green MacBook Air.

Netflix's UI team conducted a 2024 study on thumbnail color vibrancy: P3-gamut thumbnails had a 12% higher click-through rate on P3 displays compared to the same thumbnails clamped to sRGB. Their implementation uses the picture element with srcset to serve P3 WebP images to capable displays and sRGB JPEG fallbacks to others.

Figma added P3 color support in 2023 after years of user requests. They store all colors internally as P3 values and convert to sRGB only at export time when the user selects sRGB as the target. This means designs stay in the wider gamut throughout the workflow, preserving vibrancy until the last possible moment.

Stripe's identity refresh (2025) specifically chose their signature purple because it sits right at the boundary of sRGB gamut — meaning P3 displays render it with noticeably more depth and saturation than sRGB monitors. It's a deliberate choice that makes their brand look premium on modern hardware.

The Guardian's web team published a case study showing that their editorial photography displayed in P3 on supported browsers resulted in 8% longer average time-on-page for image-heavy articles. They implemented progressive enhancement: serve P3 to capable browsers, sRGB to everything else.

Always provide an sRGB fallback. The @supports + @media (color-gamut: p3) combo ensures P3 colors only apply when both the browser and the display support them. Never ship P3-only colors.

Use oklch() instead of color(display-p3) for design tokens. OKLCH is gamut-agnostic and perceptually uniform, so you can define a color once and let the browser clip it to the display's capability.

Try It Yourself

Use these free tools to apply what you learned: