#1194: WG New Spec: HDR on the web (CSS, Canvas, WebGL, WebGPU)

Visit on Github

Opened Feb 12, 2026

Explainer

https://github.com/w3c/ColorWeb-CG/blob/main/hdr-big-picture.md

Links

The ColorWeb CG would like a TAG review of the "HDR on the web, the big picture" constellation of explainers.

This is an evolution of work previously reviewed by the TAG in https://github.com/w3ctag/design-reviews/issues/917.

  • Many of the topics from that review have been completed (e.g, high bit depth support for 2D canvas, WebGL, and ImageData, ergonomic color spaces for HDR canvases, etc).
  • Some features have been abandoned due to security and privacy concerns that arose in TAG review

The specification document includes:

  • Background to topic of HDR on the web
  • Example user applications
  • Alternatives considered for some API surfaces
  • Privacy and security discussion
  • Testing strategy

The specification

Where and by whom is the work is being done?

  • GitHub repo: https://github.com/w3c/ColorWeb-CG
  • Primary contacts:
    • Christopher Cameron @ccameron-chromium, ColorWeb CG chair
    • Chris Lilley @svgeesus, ColorWeb CG chair
  • Primary standards group developing this feature: Color on the web Community Group
  • Incubation and standards groups that have discussed the design: WebGL and WebGPU working groups

Feedback so far

You should also know that...

This is an overarching proposal that has the goal of covering HDR for 2D canvas, WebGL, and WebGPU in a coherent way. The "big picture" document linked above has much of the background. The individual features for each API are discussed the overarching document, and then the API-specific explainers are linked to. Below is a reproduction of the individual feature explainer links.

<!-- Content below this is maintained by @w3c-tag-bot -->

Track conversations at https://tag-github-bot.w3.org/gh/w3ctag/design-reviews/1194

Discussions

Log in to see TAG-private discussions.

Comment by @svgeesus Feb 27, 2026 (See Github)

The Security and Privacy considerations

Discussed Mar 16, 2026 (See Github)

Skipping for now.

Discussed Mar 30, 2026 (See Github)

Jeffrey: I posted a comment to private brainstorming; they are addressing HDR in a coherent way, which is what we'd asked for in the past. I'm not an expert in the area, though. They have asked a question about how to express headroom. HDR is the idea of being able to show a color brighter than white. Most CSS colors operate in linear space. Camera shutters and image specs operate in the log 2 of that. They seem to be saying that when they do linear things, they will put linear in the name. They aren't clear if they don't have linear if that means it will always be log 2. We should suggest put either linear or log2 in the name to avoid confusion. I do have one worry about whether they need a more complicated CSS thing to match CSS colors with image colors.

Marcos: I've only dealt with this a tiny bit when discussing a brightness lock.

Jeffrey: This is a very detailed space, and Chris's the intro explanation in a bunch of forums was great. If there are no other thoughts, I'll draft a comment and check in with people this week.

Discussed Apr 6, 2026 (See Github)

Jeffrey: I have a draft comment. See https://github.com/w3ctag/design-reviews-private-brainstorming/issues/249#issuecomment-4180738881. Please read and see if we have consensus to post. Will ping xiaochengh over Slack as well before posting.

Heather: If they've got the right experts in the room, all I'm looking for is consistency. Good with the text.

Jeffrey:

Discussed Apr 27, 2026 (See Github)

jyasskin: I will go ahead and post what is drafted there unless someone hollers, because I was supposed to post it before... no objections, sorry for the delay.

Comment by @jyasskin Apr 29, 2026 (See Github)

We greatly appreciate your effort to come up with a coherent design for adding HDR across the whole web platform! Overall, we think you've assembled a good set of experts in the Color on the Web CG, and that we shouldn't try to second-guess your technical details. We have two remaining comments:

We think https://github.com/w3c/ColorWeb-CG/issues/129#issuecomment-3883959470 is correct that every headroom-related property should include whether it's linear or log2 in its name, to prevent incorrect assumptions. For example, we noticed that https://github.com/w3c/ColorWeb-CG/blob/main/canvas-smpte-st-2094-50.md uses baselineHdrHeadroom without specifying which it is, and that's probably a mistake. Ideally, you'll make the whole platform consistent in the choice of linear vs log2. However, it's possible that the correct design is, for example, to use linear in most places for consistency with color values, but to use log2 in places that are closely tied to image formats that already use log2. As long as you're trying for as much consistency as possible with surrounding platform features, we think you'll make reasonable choices.

We noticed that https://github.com/w3c/ColorWeb-CG/blob/main/hdr-big-picture.md#css-hdr-colors says "The hdr-color functional ... allows an CSS color to color match a pixel in an HDR image at all HDR headrooms." However, color-hdr() appears to only allow geometric-mean interpolation (or whatever the right term is) between specified headrooms, while the SMPTE ST 2086 tone mapping seems more flexible. Have we misread the specs, is there a feature missing from the CSS function, or does the CSS function do a "good enough" job that websites are unlikely to care about the difference?