TL;DR, Resposta rápida
10 min de leituraOs User-Agent Client Hints são o substituto do Chromium para a string User-Agent completa. Toda requisição leva três cabeçalhos de baixa entropia, Sec-CH-UA, Sec-CH-UA-Mobile e Sec-CH-UA-Platform, com a marca do navegador, a versão principal, um indicador de celular e o nome do sistema operacional. Um servidor pede mais, como a versão do sistema operacional ou o modelo do aparelho, com um cabeçalho de resposta Accept-CH, ou um script chama navigator.userAgentData.getHighEntropyValues(). Desde o Chrome 110, a própria string UA fica congelada em valores fixos de plataforma. Firefox e Safari não têm suporte a client hints.
O que são User-Agent Client Hints?
Navegadores Chromium enviam os User-Agent Client Hints como um conjunto de cabeçalhos de requisição Sec-CH-UA que levam detalhes do navegador e da plataforma em campos separados, e enviam os campos detalhados só quando um servidor pede. A documentação para desenvolvedores do Chrome descreve o modelo como um "where the server must ask the browser for a set of data about the client (the hints) and the browser applies its own policies or user configuration to determine what data is returned." Os hints estão ativados por padrão desde o Chrome 89.
O antigo cabeçalho User-Agent juntava tudo em uma única string em cada requisição: navegador, versão completa, sistema operacional e versão e, no Android, o modelo do aparelho. O artigo do Google sobre a mudança diz que essa combinação "could contain enough information to allow individual users to be uniquely identified." Os client hints separam essas informações para que a requisição padrão leve menos, e qualquer dado extra precisa ser pedido de um jeito que o navegador consiga ver.
Se você cuida de analytics de site, isso importa para dois relatórios: as divisões por navegador e por sistema operacional, e o tipo de dispositivo. Os dois continuam funcionando no Chrome, mas alguns detalhes que antes chegavam de graça agora dependem de um opt-in.
- Navegador e versão completa
- Sistema operacional e versão
- Modelo do aparelho no Android
- Tudo isso em cada requisição
- Marca do navegador e versão principal
- Indicador de dispositivo móvel
- Nome do sistema operacional
- O resto espera até o servidor pedir
Quais cabeçalhos Sec-CH-UA o Chrome envia?
O Chrome envia três cabeçalhos Sec-CH-UA em toda requisição HTTPS e segura o resto até que o servidor os peça. A especificação do WICG define onze cabeçalhos. Os que importam para o analytics:
| Cabeçalho | Exemplo de valor | Entropia | Enviado por padrão? |
|---|---|---|---|
Sec-CH-UA | "Chromium";v="93", "Google Chrome";v="93" | Baixa | Sim |
Sec-CH-UA-Mobile | ?0 para desktop, ?1 para celular | Baixa | Sim |
Sec-CH-UA-Platform | "macOS" | Baixa | Sim |
Sec-CH-UA-Platform-Version | "10.0.0" | Alta | Não, precisa de Accept-CH |
Sec-CH-UA-Full-Version-List | "Google Chrome";v="98.0.4738.0" | Alta | Não, precisa de Accept-CH |
Sec-CH-UA-Model | "Pixel 3" | Alta | Não, precisa de Accept-CH |
Sec-CH-UA-Arch | "arm" | Alta | Não, precisa de Accept-CH |
Sec-CH-UA-Bitness | "64" | Alta | Não, precisa de Accept-CH |
A especificação também define Sec-CH-UA-WoW64, Sec-CH-UA-Form-Factors e o descontinuado Sec-CH-UA-Full-Version. Os client hints só trafegam em conexões seguras, então uma página servida em HTTP simples não recebe nenhum deles.
A lista de marcas traz uma esquisitice proposital. Ela inclui uma marca falsa como " Not;A Brand";v="99", que a documentação do Chrome chama de GREASE e que pode aparecer em qualquer posição e com qualquer nome. O MDN explica que ela existe para impedir que os servidores fiquem "rejecting unknown user agents outright." Qualquer parser que você escrever precisa ignorar as marcas que não reconhece, em vez de depender da posição.
Qual é a diferença entre hints de baixa e de alta entropia?
Hints de baixa entropia são os campos que um navegador envia a todos os sites porque revelam pouco além do que outros cabeçalhos já mostram, e hints de alta entropia são os campos que restringem um navegador o suficiente para ajudar a identificá-lo. A especificação do WICG diz que os hints padrão expõem "only the user agent's branding information, and the significant version number," e os dois são "fairly clearly sniffable" a partir de outros cabeçalhos e dos recursos que o navegador suporta.
"Alta entropia" vem da teoria da informação. A documentação do Chrome descreve o termo como uma referência a "the amount of information that these values reveal about the user's browser." Um nome de modelo como Pixel 3 ou uma build exata como 98.0.4738.0 divide a população de usuários do Chrome em grupos muito menores do que "Chrome 98 no Android". O guia de browser fingerprinting explica como esses campos se somam quando combinados.

Como um site pede hints de alta entropia com Accept-CH?
Um site pede hints de alta entropia retornando um cabeçalho de resposta Accept-CH com os nomes dos hints que quer, e depois disso o navegador decide se vai enviá-los nas próximas requisições para aquela origem. A troca acontece em quatro etapas:
- O navegador pede uma página e envia apenas
Sec-CH-UA,Sec-CH-UA-MobileeSec-CH-UA-Platform. - O servidor responde com um cabeçalho como
Accept-CH: Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, ou a página inclui a mesma lista em uma tag<meta http-equiv="Accept-CH">. - As próximas requisições para aquela origem levam os hints pedidos, se a política do navegador permitir.
- Um novo cabeçalho
Accept-CHsubstitui todo o conjunto anterior, e um cabeçalho vazio o apaga.
Três regras da documentação do Chrome costumam confundir as pessoas. Os hints pedidos por Accept-CH duram "for the duration of the browser session or until a different set of hints are specified." Eles são enviados apenas em requisições da mesma origem, então uma requisição para cdn.example.net não recebe nada, a menos que a página delegue cada hint com um cabeçalho Permissions-Policy. E a primeira visita leva apenas os hints padrão, porque o servidor ainda não pediu nada. O Chromium documenta um mecanismo separado para os hints de que um site precisa já na primeira requisição.
Os scripts têm um segundo caminho. navigator.userAgentData expõe os valores de baixa entropia como brands, mobile e platform, e navigator.userAgentData.getHighEntropyValues() retorna uma promise com campos como model, platformVersion e fullVersionList. Assim como nos cabeçalhos, o Chrome diz que "it's down to the browser what values, if any, are returned."
O que a redução do User-Agent mudou no Chrome?
A redução do User-Agent congelou a maior parte da string User-Agent do Chrome em valores fixos, então o cabeçalho antigo agora leva só a versão principal do navegador, uma string fixa de plataforma e um marcador de celular. O projeto Chromium fez a mudança em fases:
| Versão do Chrome | Lançamento | Mudança na string UA |
|---|---|---|
| Chrome 101 | 26 de abril de 2022 | Números minor, build e patch congelados em 0.0.0 |
| Chrome 107 | 25 de outubro de 2022 | Plataforma e versão do sistema no desktop substituídas por valores fixos |
| Chrome 110 | 7 de fevereiro de 2023 | Versão do Android fixada em 10 e modelo do aparelho substituído por K |
| Chrome 113 | 2023 | Fim do reverse origin trial, então todos os carregamentos de página recebem a string reduzida |
Os valores fixos de plataforma no desktop são strings literais. O Chromium os lista como Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7, X11; Linux x86_64 e X11; CrOS x86_64 14541.0.0, e todo celular Android informa Linux; Android 10; K. O Chromium observa que esses valores "will not update even if a user is on an updated operating system or device." A redução vale para Windows, macOS, Linux, ChromeOS e Chrome no Android. O Chromium não tem planos atuais para iOS nem para o Android WebView.
A página do Chromium é explícita sobre para onde foi o detalhe antigo: "All of the information that was contained in the User-Agent string prior to reduction is available through the high entropy client hints."
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies
Quais navegadores suportam User-Agent Client Hints?
Os navegadores Chromium suportam User-Agent Client Hints, e Firefox e Safari não. Os dados de compatibilidade do MDN listam Sec-CH-UA como suportado no Chrome e no Edge a partir da versão 89 e no Opera a partir da versão 75, e listam tanto Sec-CH-UA quanto Accept-CH como não suportados no Firefox e no Safari. navigator.userAgentData segue a mesma divisão.
Isso deixa o analytics com dois caminhos de parsing. No Chrome e no Edge, a string UA reduzida mais os hints de baixa entropia dão navegador, versão principal, nome do sistema operacional e um indicador de celular. No Firefox e no Safari, o cabeçalho User-Agent continua sendo a única fonte, e o WebKit também congelou a própria string. A página de tracking prevention do WebKit lista, entre as mudanças contra fingerprinting, que o WebKit "altered the user agent string to not change with minor software updates."

O que uma ferramenta de analytics ainda consegue ler para relatórios de navegador, sistema e dispositivo?
Uma ferramenta de analytics ainda lê o nome do navegador, a versão principal, a família do sistema operacional e se é celular ou desktop em toda visita do Chrome sem pedir nada, mas a versão do sistema e o modelo do aparelho precisam de hints de alta entropia. A divisão prática para um visitante do Chrome:
| Campo do relatório | Pela string UA reduzida | Pelos hints padrão de baixa entropia | Precisa de hint de alta entropia |
|---|---|---|---|
| Nome do navegador | Sim | Sim, Sec-CH-UA | Não |
| Versão principal do navegador | Sim | Sim, Sec-CH-UA | Não |
| Versão completa do navegador | Não, mostra .0.0.0 | Não | Sec-CH-UA-Full-Version-List |
| Nome do sistema operacional | Sim | Sim, Sec-CH-UA-Platform | Não |
| Versão do sistema operacional | Não, valor fixo | Não | Sec-CH-UA-Platform-Version |
| Celular ou desktop | Sim, token Mobile | Sim, Sec-CH-UA-Mobile | Não |
| Modelo do celular | Não, mostra K | Não | Sec-CH-UA-Model |
Todo visitante com Windows 11 no Chrome informa Windows NT 10.0 na string UA, então uma divisão entre Windows 10 e 11 feita a partir da string UA está errada. As visitas do Chrome no Android afirmam todas estar na versão 10. Se um gráfico de versões de sistema no seu analytics mostra uma única versão dominando entre o fim de 2022 e meados de 2023, isso é a redução, e não o seu público. A detecção de bots também fica mais difícil, já que um cliente automatizado copia uma string atual do Chrome em uma linha de código. O guia sobre filtragem de tráfego de bots cobre verificações que não dependem só do UA.
Os User-Agent Client Hints reduzem o fingerprinting?
Os User-Agent Client Hints reduzem o fingerprinting passivo, porque um site não recebe mais a versão completa, a versão do sistema e o modelo do aparelho em toda requisição, mas não impedem um script que pede valores de alta entropia de propósito. A especificação do WICG diz as duas coisas: o objetivo é "reduce the amount of default entropy exposed to the web at large," mas "it will still be possible for some, or all, hints to be requested and used for active fingerprinting purposes."
A diferença está na visibilidade. Um pedido de Sec-CH-UA-Model aparece no cabeçalho Accept-CH do site ou em uma chamada getHighEntropyValues(), que ferramentas de privacidade e auditores conseguem detectar. A string antiga entregava os mesmos dados em silêncio. Para o dono de um site, a regra é simples: peça um hint de alta entropia só quando um recurso precisar dele, como escolher o download certo para uma arquitetura de CPU, e não para enriquecer perfis de analytics.
O que o Flowsery informa sobre navegadores e dispositivos?
O Flowsery informa dados de dispositivo, navegador e sistema operacional no analytics, e faz isso sem browser fingerprinting, sem cookies no modo sem cookies e sem guardar dados pessoais. A API do Flowsery retorna divisões por navegador com contagem de visitantes e receita por navegador, filtra por nome de navegador como Chrome, Safari, Firefox e Edge, com "Safari includes Mobile Safari automatically", e agrupa visitantes por dimensões que incluem browser_version e os_version. O endpoint de visitantes retorna tipo de dispositivo, navegador, sistema operacional e dimensões do viewport a partir da visualização de página mais recente. No modo sem cookies, o Flowsery usa um hash de visitante que muda todo dia, então esses campos descrevem sessões no seu site sem montar um perfil de um dispositivo ao longo de vários dias, um dos motivos pelos quais visitantes únicos significam coisas diferentes em ferramentas diferentes. A página do recurso de analytics com foco em privacidade lista o que o tracker coleta.
Perguntas frequentes
Os User-Agent Client Hints estão substituindo o cabeçalho User-Agent?
Não, o Chrome ainda envia o cabeçalho User-Agent, mas em uma forma reduzida, com a versão minor congelada e valores fixos de plataforma. O detalhe removido dele está disponível nos client hints de alta entropia, que o site precisa pedir.
O Firefox envia cabeçalhos Sec-CH-UA?
Não. Os dados de compatibilidade do MDN listam Sec-CH-UA e Accept-CH como não suportados no Firefox e no Safari. Esses navegadores continuam se descrevendo apenas pelo cabeçalho User-Agent.
Por que o meu analytics mostra todo usuário de Android no Android 10?
O Chrome 110 fixou a versão do Android na string UA em 10 e substituiu o modelo do aparelho por K. Qualquer ferramenta que analisa só a string UA informa Android 10 para toda visita do Chrome no Android. A versão real precisa do hint Sec-CH-UA-Platform-Version.
O analytics consegue distinguir Windows 11 de Windows 10 no Chrome?
Não pela string UA, que informa Windows NT 10.0 para os dois. Um site que pede Sec-CH-UA-Platform-Version por meio de Accept-CH, ou que chama getHighEntropyValues(), recebe a versão da plataforma que o Chrome decide compartilhar.
Preciso de HTTPS para os client hints?
Sim. O Chrome envia client hints apenas em conexões seguras, então um site em HTTP simples não recebe nenhum cabeçalho Sec-CH-UA.
Client hints de alta entropia são dados pessoais?
Sozinhos, um modelo de aparelho ou um número de build do sistema não identificam uma pessoa. Combinados com outros sinais em um identificador estável, eles passam a fazer parte de uma impressão digital, e uma impressão digital que distingue um dispositivo conta como dado pessoal pelo GDPR, e é por isso que um analytics com foco em privacidade evita montar uma.
Qual é a marca falsa no cabeçalho Sec-CH-UA?
É uma entrada GREASE como " Not;A Brand";v="99", que pode aparecer em qualquer posição e com qualquer nome. Ela existe para impedir que servidores rejeitem user agents desconhecidos de cara. Um parser deve ignorar as marcas que não reconhece em vez de se basear na posição.
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies
Como obter a versão completa do Chrome ou o modelo do aparelho no analytics?
Devolva um cabeçalho Accept-CH que nomeie os hints desejados, como Sec-CH-UA-Full-Version-List e Sec-CH-UA-Model. Um script também pode chamar navigator.userAgentData.getHighEntropyValues(). Nos dois casos, o navegador decide o que devolve, se é que devolve algo.
Os client hints chegam às requisições para outros domínios?
Os hints pedidos via Accept-CH só vão em requisições de mesma origem. Uma requisição para cdn.example.net não recebe nada, a menos que a página delegue cada hint com um cabeçalho Permissions-Policy.
O Chrome envia hints de alta entropia na primeira visita?
A primeira visita leva apenas os três hints padrão, porque o servidor ainda não pediu mais nada. Depois que o servidor envia Accept-CH, as requisições seguintes incluem os hints pedidos durante a sessão do navegador ou até que outro conjunto seja definido. O Chromium documenta um mecanismo separado para hints de que um site precisa já na primeira requisição.
Este artigo foi útil?
Diga-nos o que pensa!
Veja-nos mais no Google
Um clique marca a Flowsery como fonte preferida e nossos artigos passam a aparecer mais acima nas suas Principais notícias, no modo IA e nas visões gerais com IA.
Antes de ir...
Flowsery
Analytics orientado para receitas para o seu site
Rastreie cada visitante, fonte e conversão em tempo real. Simples, poderoso e sem cookies.
Painel em tempo real
Rastreamento de metas
Rastreamento sem cookies
Termos relacionados do glossário


Por que o CNAME cloaking não esconde mais rastreadores do Safari ou do Brave
Rastreadores usavam o CNAME cloaking para se passar por um subdomínio seu. Veja o truque de DNS, o limite de 7 dias do Safari e como Brave e uBlock o revelam.


Como a sincronização de cookies cruza IDs de anúncios entre sites
Empresas de ad tech usam a sincronização de cookies para trocar IDs por redirecionamentos e pixels. Veja o que Safari, Firefox e Chrome fazem contra ela.


Como criar métricas calculadas do GA4 dentro de uma cota de cinco vagas
O Google limita as métricas calculadas do GA4 a 5 por propriedade padrão. Veja a sintaxe da fórmula, as unidades, onde aparecem e o que ela não aceita.


Como configurar o agrupamento de conteúdo do GA4 com um parâmetro
Configure o agrupamento de conteúdo do GA4 com o parâmetro content_group no gtag ou no Tag Manager, leia a dimensão Content group e evite o (not set).


Por que o significado de visitantes únicos muda de ferramenta para ferramenta
O significado de visitantes únicos depende da ferramenta: o GA4 estima, o Matomo não calcula em períodos longos e a Adobe deduplica no relatório inteiro.


O Google lista sete causas distintas de not set no GA4
O Google dá a not set no GA4 uma causa diferente por dimensão, de um session_start ausente a um content_group vazio. Veja cada causa e a correção.
Artigos relacionados


Como os cookies particionados CHIPS dão a cada site seu próprio pote
Definir cookies particionados CHIPS exige Secure, SameSite=None e mais um atributo, e o navegador guarda uma cópia por site de nível superior.


Sob o GDPR, a reversibilidade decide pseudonimização vs anonimização
A reversibilidade decide pseudonimização vs anonimização. Os dados do Article 4(5) continuam pessoais; os dados anônimos saem do GDPR de vez.
O que o server-side tracking corrige e o que ele deixa intocado
O que o server-side tracking leva para o seu servidor, quais limites de cookies do Safari ele evita, como deduplicar eventos e por que o consentimento continua.

