← Todas as verificações
AcessibilidadeSeveridade típica: Baixo

Análise de acessibilidade web

Verifica idioma, alt das imagens, etiquetas de formulário, viewport e IDs duplicados segundo a WCAG.

O que verifica

Este scanner verifica aspetos básicos de acessibilidade da tua página segundo as regras WCAG: o idioma declarado, o texto alternativo das imagens, as etiquetas dos formulários, a etiqueta viewport e os IDs duplicados. Assinala os pontos onde o teu site dificulta o uso a pessoas com deficiência.

Porque importa

Um site pouco acessível deixa de fora pessoas que usam leitores de ecrã ou outras ajudas técnicas, e em muitos países é também uma obrigação legal. Descurá-lo reduz a tua audiência real e pode expor-te a reclamações por incumprimento.

Como se corrige

Adiciona texto alternativo descritivo às imagens, associa cada campo de formulário à sua etiqueta e declara o idioma da página na etiqueta html. Corrige os IDs duplicados e garante que tens uma etiqueta viewport para que o site funcione bem no telemóvel.

Como funciona esta verificação

O Scanaris analisa o HTML que a tua página serve, sem executar JavaScript nem abrir um browser, e faz oito testes de acessibilidade que se podem decidir com certeza sobre o código. Três são de severidade média: que a etiqueta <html> declare o idioma com lang, que exista a <meta name="viewport">, e que nenhum campo de formulário (input, select, textarea, excluídos os ocultos e os botões) fique sem etiqueta acessível, ou seja, que tenha um <label for>, esteja dentro de um <label>, ou leve aria-label, aria-labelledby ou title. Os outros cinco são de severidade baixa: imagens sem atributo alt (um alt="" vazio é válido para as decorativas; o que falha é o atributo não existir), ligações com href e botões sem texto, sem aria-label e sem uma imagem com alt lá dentro, atributos id repetidos, elementos com tabindex maior que zero, e cabeçalhos h1 a h6 vazios. Cada teste que falha abre o seu próprio achado com a contagem.

Porque importa

Cerca de 15 % da população tem alguma deficiência, e muitas mais pessoas usam a web com um leitor de ecrã, só com teclado ou com o zoom no máximo em momentos concretos. Para elas, uma imagem sem alt é um buraco, um campo sem etiqueta é uma caixa de que não se sabe o que esperar e um botão que é só um ícone é anunciado como "botão" sem mais. Além de ética, é lei: a Diretiva europeia de acessibilidade aplica-se desde junho de 2025 à maioria dos serviços digitais de empresas, e nos Estados Unidos os processos por sites inacessíveis contam-se aos milhares por ano. E é SEO: o alt, o idioma e a estrutura de cabeçalhos são exatamente o que a Google lê.

Como corrigir

  • Idioma: <html lang="pt">. No Nuxt configura-se em app.head.htmlAttrs ou é o módulo i18n que o põe; no Next.js, no <html> do layout raiz; no WordPress escreve-o language_attributes() no tema.
  • Viewport: <meta name="viewport" content="width=device-width, initial-scale=1">. Sem maximum-scale=1 nem user-scalable=no, que bloqueiam o zoom.
  • Etiquetas de formulário: um <label for="email"> por cada campo com o seu id, ou o campo dentro do <label>. Se o design não mostra etiqueta visível, aria-label="Endereço de e-mail". O placeholder não conta: desaparece ao escrever.
  • Imagens: alt descritivo nas informativas ("Gráfico de vendas do terceiro trimestre"), alt="" nas decorativas. Os componentes de imagem do Nuxt e do Next.js exigem o atributo.
  • Ligações e botões de ícone: aria-label="Abrir menu", ou um texto visualmente oculto com uma classe sr-only. Os ícones SVG inline levam aria-hidden="true".
  • Ids duplicados: costumam vir de componentes repetidos com o id fixado à mão. Gera o id a partir de uma prop ou usa useId().
  • Tabindex positivos: muda-os para 0 e ordena os elementos no HTML na ordem em que devem ser percorridos.
  • Cabeçalhos vazios: se estavam para maquetar, troca-os por um div; se têm um ícone, dá-lhes texto.

Confirma que está corrigido

curl -s https://teudominio.com | grep -oE '<html[^>]*>|<meta name="viewport"[^>]*>'
curl -s https://teudominio.com | grep -oE '<img[^>]*>' | grep -vc 'alt='

O primeiro deve mostrar o lang e o viewport; o segundo deve dar 0. Para o resto, o painel Lighthouse do Chrome (separador Acessibilidade) ou a extensão axe DevTools listam-te cada elemento com o seu seletor.

Perguntas frequentes

Passar estes oito testes significa que o meu site é acessível?

Não. São os oito que se podem verificar com certeza sem browser. O contraste de cores, o foco visível, a ordem de leitura real e os componentes construídos com JavaScript precisam de uma revisão com ferramentas de browser e, para algo sério, de uma auditoria humana. Passá-los significa, sim, que não cometes os erros mais frequentes e mais fáceis de evitar.

A minha app é uma SPA e o HTML inicial está quase vazio.

Então a verificação vê pouco, e a Google também. É mais uma razão para renderizar no servidor pelo menos o conteúdo principal; explica-o conteúdo sem JavaScript.

Porque é que o alt vazio está certo e a ausência de alt não?

Porque alt="" diz ao leitor de ecrã "salta esta imagem, é decorativa", enquanto sem atributo o leitor lê o nome do ficheiro, que costuma ser algo como IMG_4821.jpg. A estrutura de cabeçalhos, que afeta a navegação por leitor de ecrã, é revista também por cabeçalhos.

Verifica-o no teu site

Analisa o teu site grátis e vê se esta e outras 44 verificações passam, com um fix prompt por cada problema.

Analisar o meu site grátis