Meta Tag de Viewport
O que a meta tag de viewport faz, por que ela faz o design responsivo funcionar em dispositivos móveis, a configuração correta, a referência de atributos e erros comuns.
Idiomas
A meta tag de viewport — <meta name="viewport" content="width=device-width, initial-scale=1"> — indica ao navegador para dimensionar o viewport de layout para a largura do dispositivo em pixels CSS, em vez do fallback legado de ~980px que alguns navegadores móveis usam. Sem ela, os telefones podem renderizar a página nesse fallback mais largo e encolhê-la, produzindo texto minúsculo, rolagem horizontal e breakpoints responsivos que podem não se aplicar como pretendido. Não é um fator de ranqueamento em si, mas sua presença é uma das coisas que o Google documenta como indicativo de compatibilidade com dispositivos móveis, e sua ausência é uma falha clássica de usabilidade móvel. Nunca force user-scalable=no ou um maximum-scale restritivo — isso falha na regra de conformidade de acessibilidade do W3C para zoom e pode bloquear usuários com baixa visão, embora os navegadores possam substituir isso (iOS 10+ ignora por padrão). Teste com Lighthouse ou PageSpeed Insights: o relatório de Usabilidade Móvel do Search Console e o Teste de Compatibilidade com Dispositivos Móveis foram aposentados em 1º de dezembro de 2023.
Evidence for this claim The viewport meta tag lets authors control viewport width and scaling so responsive layouts render at device width. Scope: Browser viewport behavior. Confidence: high · Verified: MDN: Viewport meta tag Evidence for this claim Pages should not disable browser zoom because users must be able to enlarge content for accessibility. Scope: WCAG resize-text requirement and viewport guidance. Confidence: high · Verified: W3C WAI: Understanding Resize TextTL;DR — A meta tag de viewport é uma linha no
<head>da sua página que diz a celulares e tablets para renderizar sua página na largura real da tela, em vez de fingir que é um monitor de desktop. Sem ela, sua página aparece minúscula e você precisa dar zoom e rolar lateralmente para ler. A linha que você quer é<meta name="viewport" content="width=device-width, initial-scale=1">.
O que é a meta tag de viewport
Quando os smartphones ganharam navegadores, a maioria dos sites era feita para telas de desktop. Então muitos navegadores de celular trapaceavam: sem a tag de viewport, eles usavam um layout fixo de ~980 pixels de largura — quase desktop —, montavam a página nessa largura e depois encolhiam tudo para caber no celular. O resultado era uma página com formato legível, mas pequena demais para ler de verdade, com texto que exigia zoom e conteúdo que vazava pelas laterais.
A meta tag de viewport desativa isso. É uma única linha que você coloca no
<head> da sua página:
<meta name="viewport" content="width=device-width, initial-scale=1">width=device-width diz ao navegador “monte esta página na largura da tela deste
dispositivo, medida em pixels CSS” (não necessariamente o mesmo que a contagem bruta
de pixels de hardware em telas de alta densidade), e initial-scale=1 diz “e não dê
zoom para dentro ou para fora quando a página carregar pela primeira vez.” É só isso.
Copie essa linha, cole perto do topo do seu <head>, pronto.
Por que isso importa
Dois motivos:
- Deixa sua página legível no celular. Com a tag, o texto fica legível sem zoom e o conteúdo cabe na tela. Sem ela, você tem a experiência de texto encolhido, minúsculo e rolagem horizontal.
- É o que faz o “design responsivo” funcionar de verdade. Se o seu site usa CSS responsivo moderno (layouts que se adaptam ao tamanho da tela), essas regras foram feitas para entrar em ação com base na largura real da tela do navegador. A tag de viewport é o que informa essa largura. Sem ela, seus breakpoints responsivos podem não se aplicar do jeito que você planejou para mobile.
A maioria dos temas e construtores de sites modernos adiciona essa tag para você automaticamente. Mas modelos antigos, páginas feitas à mão e alguns construtores de páginas deixam de incluí-la — por isso “viewport não definido” ainda aparece em auditorias.
O erro a evitar
Você pode ver uma versão dessa tag com user-scalable=no no final — isso é
alguém tentando impedir que visitantes deem zoom para não “quebrarem” o layout.
Não faça isso. Isso impede pessoas com baixa visão de dar zoom para ler sua
página, e iPhones modernos ignoram essa configuração de qualquer forma, então ela só
prejudica a acessibilidade. Deixe o zoom em paz.
Como isso se encaixa no resto do SEO mobile
A tag de viewport é uma peça pequena do quadro mobile maior — ela é sobre como sua página renderiza no celular, o que é diferente da indexação mobile-first (sobre qual versão da sua página o Google lê). Se você está fazendo uma revisão mobile completa, o hub de SEO mobile, o checklist de SEO mobile e a indexação mobile-first cobrem o resto.
Quer a referência exata de atributos, os detalhes de acessibilidade e como testar a tag agora que o antigo teste de compatibilidade mobile do Google não existe mais? Mude para a aba Avançado.
Evidence for this claim The viewport meta tag lets authors control viewport width and scaling so responsive layouts render at device width. Scope: Browser viewport behavior. Confidence: high · Verified: MDN: Viewport meta tag Evidence for this claim Pages should not disable browser zoom because users must be able to enlarge content for accessibility. Scope: WCAG resize-text requirement and viewport guidance. Confidence: high · Verified: W3C WAI: Understanding Resize TextTL;DR — A meta tag de viewport —
<meta name="viewport" content="width=device-width, initial-scale=1">— indica ao navegador que dimensione o layout viewport para a largura do dispositivo em pixels CSS em vez de um fallback legado de ~980px que alguns navegadores móveis usam, o que é o que permite que as media queries CSS responsivas sejam avaliadas em relação à largura real do dispositivo no celular. Ausente ou mal configurada, é uma falha clássica de usabilidade móvel (texto minúsculo, rolagem horizontal). Não é um fator de ranqueamento — o Google documenta sua presença como uma das coisas que sua avaliação de compatibilidade com dispositivos móveis verifica, e nada mais do que isso. Nunca forceuser-scalable=no/maximum-scalerestritivo: isso falha na regra de acessibilidade ACT do W3C para zoom, embora existam overrides de navegador (iOS 10+ ignora isso por padrão). Google e Bing recomendam a tag idêntica. Teste com Lighthouse / PageSpeed Insights — o relatório de Usabilidade Mobile do Search Console e o Teste de Compatibilidade com Dispositivos Móveis foram aposentados em 1º de dezembro de 2023.
O problema que ela resolve: o viewport virtual de ~980px
Para entender a tag, você precisa entender o que ela está substituindo. Quando os navegadores móveis eram novos, a falta de uma tag de viewport significava que alguns deles recorreriam a uma largura de layout fixa de aproximadamente 980px e renderizariam nesse tamanho — uma acomodação deliberada para que sites desktop, pré-responsivos, não quebrassem completamente nos primeiros smartphones. O navegador então reduzia o resultado para caber na tela física. A própria estrutura do MDN: “Se o site não for projetado para funcionar bem em viewports pequenos e esta tag for omitida, alguns navegadores móveis renderizam o site usando uma largura fixa do bloco de contenção inicial, tipicamente 980px.” — é um fallback específico do navegador, não uma constante universal da especificação.
A consequência, nas próprias palavras do Google: “Sem uma meta tag de viewport, dispositivos móveis renderizam páginas em larguras típicas de tela de desktop e depois reduzem as páginas, dificultando a leitura.” Você obtém texto ilegível, zoom por pinça forçado e rolagem horizontal — os sintomas clássicos de uma página marcada como “não compatível com dispositivos móveis”.
Definir a tag “permite que você controle a largura e o dimensionamento do viewport para que ele seja dimensionado corretamente em todos os dispositivos.”
Layout viewport vs. visual viewport (por baixo dos panos)
Dois “viewports” estão em jogo, e vale a pena mantê-los distintos:
- O layout viewport é a área na qual a página é disposta e à qual elementos de posição fixa se anexam.
width=device-widthdefine isso para a largura da tela do dispositivo em pixels CSS. - O visual viewport é o que o usuário está vendo no momento — que muda quando ele dá zoom com pinça. O zoom altera o visual viewport sem alterar o layout viewport.
A razão pela qual isso importa para SEO e CSS: suas media queries responsivas (@media (max-width: 600px) e afins) são avaliadas em relação ao layout viewport. Se o layout viewport estiver preso a um fallback legado de ~980px porque não há tag de viewport, um telefone pode corresponder aos seus breakpoints de desktop em vez dos estreitos. O MDN coloca isso claramente: “Sem ela, seu design responsivo com breakpoints e media queries pode não funcionar como pretendido em navegadores móveis.” A tag é o que faz device-width ser o layout viewport para que seus breakpoints pretendidos sejam avaliados corretamente.
A tag correta e onde ela vai
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- ...the rest of your head... -->
</head>Coloque-a no início do <head>, perto de charset, antes de tags dependentes de conteúdo. Este é o valor que Google, Bing e Lighthouse recomendam — literalmente, é a correção que o próprio Lighthouse sugere. Não pense demais no valor: width=device-width, initial-scale=1 é a resposta para praticamente todo site responsivo.
Referência de atributos
O atributo content é uma lista de diretivas separadas por vírgula. O MDN é a referência canônica atributo por atributo; aqui está o que cada um faz:
| Diretiva | O que faz | Observações |
|---|---|---|
width | Controla a largura (mínima) em pixels da viewport | Um número inteiro de 1 a 10000, ou o valor especial device-width (a largura da tela em pixels CSS). Use device-width. |
initial-scale | A proporção de zoom entre a largura do dispositivo e a viewport no carregamento | Um número 0.0–10.0. Use 1. |
minimum-scale | O nível mínimo de zoom permitido | Deve ser ≤ maximum-scale. O iOS 10+ o ignora por padrão. |
maximum-scale | O zoom máximo permitido | Deve ser ≥ minimum-scale. O iOS 10+ o ignora por padrão. Não o restrinja. |
user-scalable | Se o usuário pode aplicar zoom (yes/no, padrão yes) | O iOS 10+ o ignora por padrão. Definir no é um antipadrão de acessibilidade — deixe como está. |
interactive-widget | Como a interface interativa (ex.: teclados virtuais) afeta a viewport | Valores: resizes-visual (padrão), resizes-content, overlays-content. Mais recente; a maioria do conteúdo de SEO o omite. |
viewport-fit | Como a viewport lida com recortes de exibição (notches) | Valores: auto (padrão), contain (cabe dentro do maior retângulo que evita o recorte), cover (preenche a tela — combine com as variáveis CSS env() de safe-area-inset para que o conteúdo não fique sob o recorte). |
viewport-fit e interactive-widget são ambos casos extremos de layout do navegador —
manipulação de recortes de exibição e teclados virtuais, respectivamente — não diretivas de SEO;
a maioria dos guias focados em SEO os omite completamente.
Uma pegadinha pequena, mas real, da própria documentação do Lighthouse: definir initial-scale abaixo
de 1 pode acionar um comportamento legado de toque duplo para zoom que adiciona atraso de interação —
outra razão para manter initial-scale=1 em vez de tentar ser esperto.
Nunca desative o zoom: user-scalable=no é um antipadrão
Você ainda encontrará user-scalable=no (ou maximum-scale=1) copiado e colado em modelos
antigos de temas, geralmente de um desenvolvedor que não queria que o pinch-zoom “estragasse”
seu layout. Está errado por dois motivos:
- Falha no próprio teste de conformidade de acessibilidade da web para zoom e vai
contra a intenção do WCAG. A regra ACT do W3C “Meta viewport allows for zoom”
(regra b4f0c3) se aplica a qualquer tag viewport que defina
user-scalableoumaximum-scale, e sua expectativa é explícita: a tag não deve definiruser-scalable=no, emaximum-scalenão deve ser definido abaixo de2. (A regra traz suposições declaradas — ela não se aplica se a página não tiver conteúdo visível, oferecer outra forma de redimensionar texto ou nunca precisar refluir além de uma área de 320×256 pixels CSS — mas uma página responsiva típica não atende a essas exceções.) Segundo o MDN: “Disabling zooming capabilities by settinguser-scalableto a value ofnoprevents people experiencing low vision conditions from being able to read and understand page content. Additionally, WCAG requires a minimum of 2× scaling; however, the best practice is to enable a 5× zoom.” (tradução) «Desabilitar os recursos de zoom definindouser-scalablecomonoimpede pessoas com condições de baixa visão de ler e entender o conteúdo da página. Além disso, o WCAG exige um mínimo de 2× de escala; no entanto, a melhor prática é habilitar um zoom de 5×.» Bloquear o zoom exclui exatamente os usuários que mais precisam dele. - Também é específico do navegador, não universal. O Safari do iOS 10 e versões posteriores ignoram
user-scalable=noemaximum-scalerestritivo por padrão — isso é uma substituição do iOS, não uma mudança na regra ACT ou na intenção do WCAG. Portanto, em uma grande parcela do tráfego móvel, a configuração não realiza nada, enquanto em navegadores que ainda a honram (WebViews Android mais antigas, alguns navegadores em aplicativos) ela falha ativamente no teste de acessibilidade acima. Zero benefício, desvantagem real — e não trate “o iOS ignora isso” como prova de que o markup é acessível em todos os lugares.
A regra é simples: não mexa no zoom. width=device-width, initial-scale=1 e
nada mais.
É um fator de ranqueamento?
Seja preciso aqui, porque muito conteúdo de SEO exagera nisso. Aqui está exatamente o que o Google documenta, e onde está a linha para a inferência do setor.
O que o Google documenta: a tag viewport não é um fator de ranqueamento direto. O próprio documento de meta tags suportadas do Google afirma claramente que “a presença dessa tag indica ao Google que a página é compatível com dispositivos móveis” — essa é toda a afirmação documentada: a presença sinaliza compatibilidade com dispositivos móveis. O Google não documenta a tag como pontuada, como garantia de renderização ou como prova de que o design responsivo de uma página é realmente bom.
Evidence for this claim Google documents that viewport-meta presence indicates a page is mobile friendly, but that statement does not establish that the tag itself is a ranking factor, a display guarantee or sufficient evidence of responsive quality. Scope: production HTML and HTTP responses Confidence: high · Verified: Meta tags and attributes that Google supportsOnde os profissionais conectam os pontos (inferência do setor, não uma citação do Google): uma tag viewport ausente ou mal configurada é uma causa raiz comum das falhas de usabilidade em dispositivos móveis (texto pequeno, rolagem horizontal, alvos de toque inutilizáveis) que os profissionais de SEO geralmente entendem como degradação da experiência de página em dispositivos móveis. Essa conexão é razoável e amplamente aceita no setor, mas é uma inferência de profissionais sobre por que a tag importa — não algo que os documentos do Google afirmam como uma cadeia de ranqueamento.
Portanto, o enquadramento honesto: a tag em si não é pontuada, e corrija-a porque uma página sem ela renderiza mal em celulares — não porque o Google a documenta como uma alavanca de ranqueamento, direta ou indireta. Mantenha isso separado também da indexação mobile-first: esse é um conceito distinto do Google Search sobre qual versão da sua página o Google usa principalmente para indexação e ranqueamento; a tag viewport é sobre como esse HTML móvel renderiza em um navegador, ponto final.
Evidence for this claim Mobile-first indexing means Google primarily uses the mobile content for indexing and ranking; it is a separate Google Search concept from the browser's viewport rendering contract. Scope: production HTML and HTTP responses Confidence: high · Verified: Mobile-first indexing best practicesComo testar — as ferramentas mudaram em 2023
É aqui que a maioria dos guias antigos está desatualizada. Em 1º de dezembro de 2023, o Google aposentou o relatório de Usabilidade em dispositivos móveis do Search Console, a ferramenta Mobile-Friendly Test e a API Mobile-Friendly Test (anunciado em abril de 2023, confirmado como concluído naquele dezembro). A justificativa do Google foi que outras ferramentas amadureceram — “muitos outros recursos robustos para avaliar a usabilidade em dispositivos móveis surgiram, incluindo o Lighthouse do Chrome.” Portanto, se um tutorial diz para você abrir Search Console → Usabilidade em dispositivos móveis para verificar sua viewport, esse relatório não existe mais.
Combine essas verificações em vez de confiar em uma única ferramenta: confirme se a tag existe no HTML bruto servido (não apenas após a execução do JavaScript), confirme se seus breakpoints responsivos realmente se aplicam em larguras de celular, teste o zoom para 200% sem que o layout quebre (o comportamento de redimensionamento em torno do qual a intenção do WCAG é construída) e faça uma verificação pontual em mais de um navegador — uma verificação apenas no Safari do iOS pode esconder um bug de restrição de zoom que o Android ou navegadores em aplicativos ainda aplicam.
Seu kit de ferramentas atual:
- Lighthouse (no Chrome DevTools). A auditoria relevante historicamente lia “Não
tem uma tag
<meta name="viewport">comwidthouinitial-scale” — ela falha a menos que o<head>tenha umameta name="viewport"cujocontentincluawidth=. A partir do Lighthouse 13, ela está incorporada ao insight “Otimizar viewport para dispositivos móveis”. - PageSpeed Insights — executa o Lighthouse mais dados de campo do Core Web Vitals.
- Barra de ferramentas de dispositivos do Chrome DevTools — emule dimensões de celular e avalie visualmente.
- Ferramenta de teste de compatibilidade com dispositivos móveis do Bing — o Bing verifica a configuração de viewport e controle de zoom também, e recomenda a mesma tag que o Google.
- Ver código-fonte / verificação em dispositivo real — às vezes o teste mais rápido é apenas olhar
o
<head>no seu celular.
Erros comuns
- Nenhuma tag (“viewport não definido”) — a página renderiza na largura legada semelhante à de desktop e encolhe.
- Uma largura de pixel fixa como
width=1024em vez dedevice-width— uma tag existe, mas ainda não corresponde a página ao dispositivo. O Lighthouse e a compatibilidade real com dispositivos móveis querem um valorwidth=utilizável, não apenas qualquer tag. initial-scaleabaixo de 1 — pode acionar o atraso legado de zoom com duplo toque.user-scalable=no/maximum-scalerestritivo — copiado de boilerplate antigo; antipadrão de acessibilidade, ignorado no iOS de qualquer forma.
Para saber onde isso se encaixa no trabalho mobile mais amplo — configuração, paridade de conteúdo, velocidade — veja o hub de SEO mobile, o checklist de SEO mobile e a indexação mobile-first. Para a tag em si como parte da família mais ampla de tags on-page, o cluster de meta tags é o mapa.
Resumo de IA
Uma visão condensada da versão Avançada:
- A meta tag viewport —
<meta name="viewport" content="width=device-width, initial-scale=1">— indica aos navegadores que dimensionem o layout viewport para a largura do dispositivo em pixels CSS em vez de um fallback legado de ~980px que alguns navegadores móveis usam. É isso que permite que as media queries CSS responsivas sejam avaliadas em relação à largura real do dispositivo no mobile. - Sem ela: alguns navegadores móveis renderizam a página nesse fallback mais largo e a encolhem — texto minúsculo, rolagem horizontal, breakpoints que podem não se aplicar como pretendido. Google: “Without a viewport meta tag, mobile devices render pages at typical desktop screen widths and then scale the pages down.” (tradução) «Sem uma meta tag viewport, dispositivos móveis renderizam páginas em larguras típicas de desktop e depois as reduzem.»
- Layout viewport vs. visual viewport:
width=device-widthdefine o viewport de layout (contra o qual as media queries são avaliadas) e atua como uma largura mínima; o pinch-zoom altera apenas o viewport visual. - Atributos:
width,initial-scale,minimum-scale,maximum-scale,user-scalablee os mais novosinteractive-widgeteviewport-fit(ambos casos extremos de layout do navegador, não diretrizes de SEO). Usewidth=device-width, initial-scale=1e nada mais. - Nunca desative o zoom:
user-scalable=no/ ummaximum-scaleabaixo de2falha na regra ACT do W3C para zoom (b4f0c3) e vai contra a intenção de redimensionamento do WCAG — e o iOS 10+ o substitui por padrão, então é uma desvantagem de acessibilidade sem nenhuma vantagem em qualquer lugar. - Ranqueamento: o Google documenta apenas que a presença “indicates to Google that the page is mobile friendly” — não que a tag seja pontuada, e não uma cadeia de ranqueamento declarada por meio de sinais de usabilidade (esse link é inferência do setor, não uma citação do Google). Distinto da indexação mobile-first (qual versão é indexada, não como ela renderiza).
- Testes alterados: o relatório de Usabilidade Mobile do Search Console, a ferramenta Mobile-Friendly Test e sua API foram aposentados em 1º de dezembro de 2023 — use Lighthouse, PageSpeed Insights, a barra de dispositivos do DevTools ou o Mobile Friendliness Test do Bing; adicione uma verificação de zoom de 200% e mais de um navegador.
- Erros comuns: sem tag,
width=1024codificado,initial-scale< 1,user-scalable=nocopiado e colado. Google e Bing recomendam o valor idêntico.
Documentação oficial
Documentação de fonte primária e referências de padrões.
- Meta tags e atributos que o Google suporta — lista a tag viewport e afirma que sua presença “indicates to Google that the page is mobile friendly.” A fonte atual e ativa (o documento dedicado mais antigo do Google,
configure-viewport, foi aposentado). - Não tem uma tag
<meta name="viewport">com width ou initial-scale (Lighthouse) — a definição da auditoria, a explicação do fallback de largura de desktop e o código de correção recomendado. - What the Viewport? — Chrome for Developers / web.dev sobre o padrão legado de ~980px e a diferença entre layout e visual viewport.
- O papel da experiência da página na criação de conteúdo útil (abr. 2023) — onde o Google anunciou a aposentadoria em 1º de dezembro de 2023 do relatório de Usabilidade Mobile e da ferramenta/API Mobile-Friendly Test, apontando para o Lighthouse.
Padrões / referência técnica
<meta name="viewport">(MDN Web Docs) — a principal referência atributo por atributo:width,initial-scale,minimum-scale,maximum-scale,user-scalable,interactive-widget,viewport-fit, o comportamento de substituição do iOS 10+ e o aviso de acessibilidade do WCAG.- MDN: Design responsivo — a meta tag viewport — a declaração simples de que breakpoints e media queries “podem não funcionar como esperado” sem a tag.
- MDN: Conceitos de viewport em CSS — qualifica o fallback de ~980px como “alguns navegadores móveis”, não um padrão universal.
- W3C WAI: Regra ACT “Meta viewport permite zoom” (b4f0c3) — o teste preciso de conformidade de acessibilidade:
user-scalable=noemaximum-scaleabaixo de2falham, com a aplicabilidade e as suposições da própria regra detalhadas.
Bing / Microsoft
- A Ferramenta de Teste de Compatibilidade com Dispositivos Móveis do Bing (no Bing Webmaster Tools) avalia a configuração de viewport e controle de zoom, largura do conteúdo, legibilidade do texto, espaçamento dos alvos de toque e plug-ins incompatíveis, e recomenda o mesmo valor
width=device-width, initial-scale=1que o Google. (As URLs dos documentos de ajuda do Bing mudam periodicamente; verifique o centro de ajuda atual do Bing Webmaster Tools para a página ao vivo.)
Citações da fonte
Declarações oficiais da documentação do Google e do MDN. Cada link salta para a passagem citada na página de origem, quando um link profundo está disponível.
Google — o que a tag faz e por quê
- “Without a viewport meta tag, mobile devices render pages at typical desktop screen widths and then scale the pages down, making them difficult to read. Setting the viewport meta tag lets you control the width and scaling of the viewport so that it’s sized correctly on all devices.” (tradução) «Sem uma meta tag viewport, os dispositivos móveis renderizam as páginas nas larguras típicas de tela de desktop e depois as reduzem, dificultando a leitura. Definir a meta tag viewport permite controlar a largura e o dimensionamento da viewport para que ela seja dimensionada corretamente em todos os dispositivos.» — Lighthouse / Chrome for Developers (Google). Ir para a citação
- “Presence of this tag indicates to Google that the page is mobile friendly.” (tradução) «A presença desta tag indica ao Google que a página é compatível com dispositivos móveis.» — Meta tags and attributes that Google supports, Google Search Central docs. Ler o documento
MDN — o aviso de acessibilidade
- “Disabling zooming capabilities by setting
user-scalableto a value ofnoprevents people experiencing low vision conditions from being able to read and understand page content.” (tradução) «Desabilitar os recursos de zoom definindouser-scalablecomonoimpede que pessoas com baixa visão consigam ler e entender o conteúdo da página.» — MDN Web Docs. Ler a referência - Em
user-scalable,minimum-scaleemaximum-scale: “Browser settings can ignore this rule, and iOS10+ ignores it by default.” (tradução) «As configurações do navegador podem ignorar esta regra, e o iOS10+ a ignora por padrão.» Ler a referência
W3C — o teste de conformidade de acessibilidade para zoom
- Aplicabilidade: “This rule applies to each
contentattribute on ametaelement with anameattribute value ofviewportfor which at least one of the following is true: thecontentattribute value has theuser-scalableproperty; or thecontentattribute value has themaximum-scaleproperty.” Expectation: the attribute value must not setuser-scalabletono, and must not setmaximum-scalebelow2. (tradução) «Esta regra se aplica a cada atributocontentem um elementometacom um valor de atributonameigual aviewportpara o qual pelo menos uma das seguintes condições é verdadeira: o valor do atributocontenttem a propriedadeuser-scalable; ou o valor do atributocontenttem a propriedademaximum-scale.» Expectativa: o valor do atributo não deve definiruser-scalablecomonoe não deve definirmaximum-scaleabaixo de2. — W3C WAI, regra ACT “Meta viewport allows for zoom” (b4f0c3). Ler a regra
MDN — qualificando o fallback legado e o comportamento de breakpoint
- “If the site isn’t designed to work well on small viewports and this tag is omitted, some mobile browsers render the site using a fixed initial containing block width, typically 980px.” (tradução) «Se o site não for projetado para funcionar bem em viewports pequenos e esta tag for omitida, alguns navegadores móveis renderizam o site usando uma largura fixa de bloco de contenção inicial, normalmente 980px.» Leia a referência
- “Without it, your responsive design with breakpoints and media queries may not work as intended on mobile browsers.” (tradução) «Sem ela, seu design responsivo com breakpoints e media queries pode não funcionar como esperado em navegadores móveis.» Leia a referência
Google — aposentando as ferramentas móveis (dez 2023) (via cobertura verbatim do Search Engine Land)
- “In the nearly ten years since we initially launched this report, many other robust resources for evaluating mobile usability have emerged, including Lighthouse from Chrome.” (tradução) «Nos quase dez anos desde que lançamos este relatório, muitos outros recursos robustos para avaliar a usabilidade móvel surgiram, incluindo o Lighthouse do Chrome.» Leia a cobertura
Qual configuração de viewport devo usar?
Para quase todos os sites, a resposta é a mesma linha — mas as pessoas se convencem de variantes “inteligentes” que causam problemas. Clique para chegar ao valor correto (e para descartar os anti-padrões).
Choosing your viewport meta tag value
Checklist da tag viewport
Uma verificação rápida para confirmar que a tag está presente e correta:
- Existe uma tag
<meta name="viewport">no<head>(veja o código-fonte ou verifique o partial de head do seu template/tema). - Ela está posicionada no início do
<head>, perto decharset, antes de tags dependentes de conteúdo. - O valor de
contentéwidth=device-width, initial-scale=1. -
widthédevice-width— não um número de pixels fixo como1024. -
initial-scaleé1— não abaixo de 1 (evita o atraso de zoom de toque duplo). - Sem
user-scalable=noe semmaximum-scalerestritivo (o zoom permanece habilitado — acessibilidade). - Verificado com Lighthouse ou PageSpeed Insights (não o teste Mobile-Friendly / relatório de usabilidade móvel aposentado).
- Verificado em um telefone real ou na barra de dispositivos do Chrome DevTools — o texto está legível, sem rolagem horizontal.
- Seus breakpoints de CSS responsivo realmente se aplicam em larguras de telefone (podem não se aplicar sem uma tag viewport correta).
- Ampliado para 200% e o layout ainda funciona sem conteúdo cortado.
- Verificado em mais de um navegador/mecanismo, não apenas no seu padrão — uma verificação apenas no iOS pode esconder uma restrição de zoom que outros navegadores ainda aplicam.
Tag meta viewport — folha de referência
A única linha que você quer
<meta name="viewport" content="width=device-width, initial-scale=1">Google, Bing e Lighthouse recomendam todos esse valor exato.
Referência de atributos
| Diretiva | Uso | Notas |
|---|---|---|
width | device-width | Ou 1–10000 px; use device-width. |
initial-scale | 1 | 0,0–10,0; abaixo de 1 aciona o atraso de zoom de toque duplo. |
minimum-scale | (omitir) | iOS 10+ ignora. |
maximum-scale | (omitir) | iOS 10+ ignora; não restrinja o zoom. |
user-scalable | (omitir; padrão yes) | no = falha na regra de acessibilidade de zoom; iOS 10+ o substitui. |
interactive-widget | (opcional) | resizes-visual (padrão) / resizes-content / overlays-content. |
Sintomas de uma tag ausente/quebrada
- Texto minúsculo e ilegível no celular.
- Rolagem horizontal / necessidade de pinça para zoom.
- Breakpoints responsivos não se aplicando como esperado em telefones.
- “Viewport not set” em uma auditoria.
Faça / Não faça
- ✅
width=device-width, initial-scale=1, no início do<head>. - ❌
width=1024fixo. - ❌
initial-scaleabaixo de 1. - ❌
user-scalable=no/maximum-scale=1.
Realidade sobre ranqueamento: não é um fator de ranqueamento direto. O Google documenta apenas que sua presença indica compatibilidade com dispositivos móveis — a cadeia usabilidade→experiência de página é uma inferência do setor, não um mecanismo de ranqueamento documentado pelo Google.
Teste com: Lighthouse · PageSpeed Insights · barra de dispositivos do Chrome DevTools · Bing Mobile Friendliness Test. Não use o Mobile-Friendly Test nem o relatório de usabilidade mobile do Search Console — ambos aposentados em 1º de dezembro de 2023.
Antipadrões de viewport
As quatro maneiras de errar essa tag e o que fazer em vez disso.
1. Desativar o zoom (user-scalable=no / maximum-scale=1).
A intenção geralmente é “impedir que o pinch-zoom quebre meu layout”. A realidade: isso falha na regra de conformidade de acessibilidade do W3C para zoom e impede usuários com baixa visão de ampliar o texto, e o iOS 10+ ignora isso por padrão — então não faz nada em uma grande parcela do tráfego, enquanto ainda falha nesse teste de acessibilidade nos navegadores que o respeitam. Correção: remova completamente; mantenha apenas width=device-width, initial-scale=1.
2. Fixar uma largura em pixels (width=1024).
Uma tag de viewport existe, então as auditorias às vezes passam parcialmente, mas a página ainda fica presa a uma largura fixa que não corresponde aos dispositivos reais. Correção: use width=device-width.
3. initial-scale abaixo de 1 para “caber mais na tela”.
Reduzir o zoom inicial pode ativar o comportamento legado de toque duplo para zoom, que adiciona atraso de interação, e deixa o texto menor para todos. Correção: initial-scale=1 e deixe seu CSS responsivo cuidar do layout.
4. Confiar no relatório aposentado de usabilidade mobile do GSC para detectar problemas. Esse relatório, a ferramenta Mobile-Friendly Test e sua API foram aposentados em 1º de dezembro de 2023. Se seu processo de QA ainda diz “verificar usabilidade mobile”, ele está silenciosamente não fazendo nada. Correção: audite com Lighthouse / PageSpeed Insights.
Bônus — tratar a tag como alavanca de ranqueamento. Não é. Adicioná-la não vai melhorar o ranqueamento; ela apenas faz a página renderizar corretamente para passar nas verificações de compatibilidade com dispositivos móveis que alimentam a experiência de página. Configure-a uma vez, corretamente, e siga em frente.
Verifique e audite sua tag de viewport
Maneiras de verificar a tag em uma página ou em um site inteiro, desde um snippet rápido no console até um rastreamento.
DevTools console — inspect the current page’s viewport tag
// Paste into the Chrome DevTools console on the page you're checking.
const vp = document.querySelector('meta[name="viewport"]');
if (!vp) {
console.warn('❌ No viewport meta tag — "viewport not set".');
} else {
const c = vp.getAttribute('content') || '';
console.log('viewport content:', c);
console.log(/width\s*=\s*device-width/i.test(c) ? '✅ width=device-width' : '⚠️ width is not device-width');
console.log(/user-scalable\s*=\s*no/i.test(c) || /maximum-scale\s*=\s*[01](\.0)?\b/i.test(c)
? '⚠️ zoom is restricted — accessibility anti-pattern' : '✅ zoom not restricted');
}Bookmarklet — verificação em um clique
javascript:(function(){var v=document.querySelector('meta[name=viewport]');alert(v?('viewport: '+v.content):'NO VIEWPORT TAG (viewport not set)');})();Shell — fetch a URL and grep the raw HTML head
# Prints the viewport tag from a page's server-rendered HTML (or nothing if absent).
curl -s https://example.com | grep -io '<meta[^>]*name=["'\'']*viewport[^>]*>'Shell — flag pages that restrict zoom across a list of URLs
# urls.txt = one URL per line. Prints any page whose viewport disables/limits zoom.
while read -r u; do
html=$(curl -s "$u")
echo "$html" | grep -iq 'name=["'\'']*viewport' || { echo "MISSING $u"; continue; }
echo "$html" | grep -io '<meta[^>]*viewport[^>]*>' | grep -Eiq 'user-scalable=no|maximum-scale=[01]' \
&& echo "ZOOM-OFF $u"
done < urls.txtRegex — corresponder à tag no código-fonte (para uma pesquisa de código / regra de linter)
<meta[^>]+name=["']?viewport["']?[^>]*>Para sinalizar especificamente o anti-padrão, pesquise por:
viewport[^>]*(user-scalable\s*=\s*no|maximum-scale\s*=\s*[01])Para uma varredura em todo o site, um crawler (Screaming Frog, Ahrefs Site Audit) é mais rápido do que scripting — veja a aba Ferramentas.
Ferramentas para verificar a tag viewport
- Lighthouse (Chrome DevTools → Lighthouse, ou a CLI) — o substituto direto do descontinuado Mobile-Friendly Test; executa a auditoria de viewport (“Otimizar viewport para mobile” no Lighthouse 13+) além do restante da usabilidade e desempenho mobile.
- PageSpeed Insights — Lighthouse no navegador, com dados de campo de Core Web Vitals junto com a auditoria de laboratório.
- Barra de dispositivos do Chrome DevTools — alterne a emulação de dispositivo e inspecione a página em dimensões de telefone; a maneira mais rápida de ver uma viewport quebrada.
- Bing Mobile Friendliness Test Tool (Bing Webmaster Tools) — verifica a configuração de viewport e de controle de zoom e recomenda a mesma tag.
- Screaming Frog SEO Spider / Ahrefs Site Audit — rastreie todo o site e identifique páginas sem a tag viewport (ou com restrição de zoom) em escala, em vez de verificar URLs uma a uma.
- Ver o código-fonte no seu telefone — a verificação mais simples: a tag está realmente no
<head>do HTML servido?
Observe as descontinuações: o relatório de Usabilidade Mobile do Search Console, a ferramenta Mobile-Friendly Test e a API Mobile-Friendly Test foram todos descontinuados em 1º de dezembro de 2023 — não recorra a eles.
A tag viewport está presente, mas a página ainda parece ter tamanho de desktop
Sintoma: o código-fonte contém uma tag viewport, mas os telefones mostram texto minúsculo ou um layout largo.
Causa provável: há tags viewport duplicadas, a tag é injetada tarde demais, ou
o CSS responsivo nunca carrega. Correção: mantenha uma tag no <head> renderizado pelo servidor,
remova cópias conflitantes e verifique se as media queries esperadas são aplicadas na
página renderizada.
O layout mobile funciona no início e depois fica mais largo
Sintoma: o layout inicial se ajusta, mas a rolagem horizontal aparece após o carregamento. Causa provável: o JavaScript adiciona um widget, tabela, banner ou iframe de largura fixa depois que a viewport é estabelecida. Correção: inspecione o DOM renderizado no momento em que o overflow começa e restrinja o elemento injetado. Alterar o valor da viewport não pode corrigir um elemento que é intrinsecamente mais largo que a tela.
O zoom por pinça está bloqueado
Sintoma: os usuários não conseguem dar zoom, mesmo que a página se ajuste de outra forma. Causa provável:
user-scalable=no ou um maximum-scale restritivo permanece no conteúdo da viewport.
Correção: remova essas restrições e teste novamente com zoom do navegador e redimensionamento de texto do SO.
Não trate uma substituição do iOS como prova de que o markup é acessível em todos os lugares.
Um crawler relata a tag ausente, mas o navegador a mostra
Sintoma: um navegador renderizado vê a tag, enquanto um crawler de HTML bruto não. Causa provável: o JavaScript do lado do cliente a insere. Correção: emita a tag no cabeçalho inicial do documento. Uma instrução fundamental de renderização não deve depender de um script ser executado com sucesso.
Validar uma alteração na tag viewport
| Teste a executar | Resultado esperado | Interpretação de falha | Janela de monitoramento | Gatilho de reversão |
|---|---|---|---|---|
Visualizar a resposta HTML inicial e inspecionar <head> | Exatamente uma tag viewport contém width=device-width, initial-scale=1 | A tag está ausente, duplicada ou dependente de JavaScript | A cada lançamento de template | Reverter se um template compartilhado remover ou duplicar a tag |
| Carregar a página em várias larguras de telefone no DevTools | As media queries CSS ativam nas larguras pretendidas e o conteúdo se ajusta | O viewport está correto, mas o CSS responsivo ou um filho de largura fixa está quebrado | Antes e imediatamente após a implantação | Reverter se o conteúdo principal ou a navegação se tornar inutilizável |
| Executar o Lighthouse com um perfil móvel | A auditoria de viewport passa | A configuração servida ou renderizada ainda impede um layout de tamanho móvel | Antes e depois da mudança | Reverter se a mudança introduzir outra falha móvel de alto impacto |
| Testar o zoom de pinça e o aumento do tamanho do texto em um telefone físico | Os usuários podem ampliar e o texto reflui sem cortes | Restrições de escala ou componentes de altura fixa permanecem | No dia do lançamento e após mudanças no design system | Reverter se controles essenciais não puderem ser alcançados com tamanhos de texto ampliados |
| Rastrear uma amostra de cada template de página usando HTML bruto | Cada amostra expõe a mesma tag válida no head | Um template ou caminho de renderização tem marcação inconsistente | Após a implantação e na QA programada de templates | Reverter o template afetado se as páginas voltarem ao viewport de desktop legado |
Recursos que valem seu tempo
Meus escritos relacionados
- The Beginner’s Guide to Technical SEO — onde a renderização móvel e a experiência de página se encaixam no panorama técnico maior.
- Core Web Vitals: What They Are & How to Improve Yours — o lado do desempenho da experiência móvel que fica ao lado da tag viewport.
Minhas palestras
- How Search Works (SlideShare) — minha explicação sobre rastreamento, renderização, indexação e ranqueamento, incluindo como o Googlebot rastreia e renderiza como um smartphone. (Aviso permanente: “This is my understanding of systems… not going to be 100% complete or accurate.”) (tradução) «Esta é minha compreensão dos sistemas… não será 100% completa ou precisa.»
Do setor
<meta name="viewport">(MDN Web Docs) — a referência precisa, atributo por atributo, o comportamento de substituição no iOS e o aviso de acessibilidade do WCAG.- Does not have a
<meta name="viewport">tag with width or initial-scale (Lighthouse) (Chrome for Developers) — a definição da auditoria, a explicação sobre o fallback de largura de desktop e a correção recomendada. - What the Viewport? (Chrome for Developers) — o padrão legado de ~980px e a diferença entre layout e visual viewport, explicados pelo Google.
- Meta tags and attributes that Google supports (Google Search Central) — o documento atual que nomeia a tag viewport como um sinal de compatibilidade com dispositivos móveis.
- Google Officially Drops Mobile Usability Report, Mobile-Friendly Test Tool and API (Search Engine Land) — as aposentadorias de dezembro de 2023 e a recomendação do Lighthouse.
- You can stop using user-scalable=no and maximum-scale=1 in viewport meta tags now (Luke Plant) — contexto sobre por que os atributos restritivos de zoom existiam e por que estão obsoletos e são substituídos no iOS.
- A Beginner’s Guide to Viewport Meta Tags (Semrush) — um guia completo de um concorrente cobrindo
interactive-widget, a substituição do iOS 10 e o aviso do WCAG.
Teste-se: Viewport Meta Tag
Cinco perguntas rápidas sobre a tag meta viewport. Escolha uma resposta para cada uma e depois confira.
Registro de alterações
Atualizado em 18 de jul. de 2026.
Resumo editorial e detalhes registrados da alteração.Detalhes da alteração
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
Não é possível fazer a comparação completa — nenhum instantâneo anterior foi arquivado para esta revisão.