Adds support for a new HTTP response header, Critical-CH to indicate that if a particular Client Hint header was not received and could have been sent, a new request should be made that includes the particular Client Hint header.


With the current Client Hint spec and implementation, a client hint could be not sent to a server for any one of a few reasons: 1. The client does not support that particular client hint, or client hints in general 2. The client was unaware of the site’s most recent preferences, either because the client has never been to this site or because the preferences have been changed since the last visit 3. The client opts to not send a particular set of client hints for whatever reason Situation 2 can simply be fixed by waiting for the next request or triggering it via a redirect when a hint is not received. However, doing so in situations 1 and 3 would lead to an infinite loop. Fixing this would require adding an inordinate amount of state and extra logic. Instead, it would be better for the developer for this logic to be maintained client-side. The basic algorithm client-side is this: If, after processing the Accept-CH response header, the client would have sent a critical hint (listed in the Critical-CH response header) not sent with the request, it stores the new client hint preferences how it normally would and retries the request. Otherwise, it uses the response as-is.



Specification link

Unknown standards status - check spec link for status

Status in Chromium


In development (tracking bug)

Consensus & Standardization

After a feature ships in Chrome, the values listed here are not guaranteed to be up to date.


Intent to Prototype url

Intent to Prototype thread

Search tags

Client Hints,

Last updated on 2022-01-21