All tools

Client Hints (Sec-CH-*) Header Builder

Network

Build an Accept-CH (and optional Critical-CH) response header from a list of Client Hints your server wants the browser to send, with a plain-English note on what each hint reveals, or decode raw Sec-CH-* request headers into their real values

Pick which Client Hints your server wants the browser to send on future requests, things like the browser platform, dark-mode preference, viewport width, or device memory, and get back the assembled Accept-CH header value with a plain-English note on what each hint actually reveals. Mark a subset as critical to also generate a Critical-CH value for hints your server needs on the very first request of a session, not just subsequent ones. It also decodes raw Client Hints request headers you paste in, turning structured-field values like Sec-CH-UA's brand list or a boolean ?1/?0 flag into readable JSON, useful when you're auditing what a browser actually sent.

client-hintshttpheadersaccept-chuser-agentsec-ch-ua

How to use Client Hints (Sec-CH-*) Header Builder

  • 1.Toggle the client hints your server wants the browser to send, then copy the generated Accept-CH header.
  • 2.Click "critical" on any selected hint to also generate a Critical-CH header value for hints you need on the first request of a session.
  • 3.Paste raw Sec-CH-* request headers into the bottom field to decode their structured-field values into readable JSON.

Frequently asked questions

What's the difference between Accept-CH and Critical-CH?
Accept-CH tells the browser which hints to include on subsequent requests to your origin. Critical-CH additionally tells the browser to retry the current request with those hints included immediately, useful when a hint changes what you'd render on the very first page load.
What does "low-entropy" mean for a hint?
Low-entropy hints like Sec-CH-UA, Sec-CH-UA-Mobile, and Sec-CH-UA-Platform reveal little enough that browsers send them automatically on every request without any Accept-CH opt-in. Every other hint is high-entropy and only sent once your server explicitly requests it.
Why does Sec-CH-UA-Mobile decode to true or false instead of ?1/?0?
?1 and ?0 are the raw wire format for a structured-field boolean per the HTTP Structured Field Values spec. The parser decodes them into plain true/false so you don't have to remember the wire encoding.
Does this make a network request or read your actual browser's headers?
No, it only builds or decodes header values from the text you provide. It doesn't inspect your current browser's real Client Hints or contact any server.

Use via API, SDK, or MCP

cURL# Free: 1,000 req/day · Pro: 10,000 req/day
curl -X POST https://api.utilix.tech/v1/tools/client-hints-header-builder \
  -H "Authorization: Bearer utx_live_..." \
  -H "Content-Type: application/json" \
  -d '{"hintNames":["Sec-CH-UA-Platform","Sec-CH-UA-Model"],"criticalHintNames":[],"headers":"Sec-CH-UA-Mobile: ?0\nSec-CH-UA-Platform: \"Windows\""}'

Get an API key from your dashboard · Full API docs →