O que o 2.4.2 exige
As páginas web têm títulos que descrevem o tópico ou a finalidade.
Texto original, em inglês (WCAG 2.1)
Web pages have titles that describe topic or purpose.
O título diz onde a pessoa está sem que ela precise ler a página: numa fileira de abas, no histórico e nos favoritos, numa lista de resultados de busca e quando o leitor de tela abre a página. Ele descreve o assunto ou a finalidade; o nome de um documento ou de uma aplicação basta quando é isso que a página é.
Cada página precisa do seu. Quando uma aplicação de página única troca de tela, o Understanding 2.4.2 (em inglês) diz que o título deve mudar junto.
Um título que não identifica o conteúdo da página é a falha F25 da WCAG. Título ausente também é falha, e essa uma regra consegue achar.
Falhas comuns
Abaixo de cada exemplo: o que o axe-core e o Rampa relataram sobre a marcação de antes da correção, numa execução com o Gemma 4 12B em 8 de outubro de 2026.
Um título que sobrou do template
Templates iniciais vêm com título próprio. Toda tela do app fica com o mesmo nome de aba, e ele não diz nada sobre nenhuma delas.
Antes, reprova no 2.4.2
<title>Vite + React + TS</title>
…
<h1>Seus pedidos</h1>
<p>Pedidos feitos nos últimos 12 meses.</p>Depois, aprova
<title>Seus pedidos | Torrefação Aurora</title>- axe-core
Aprova: a
document-titleencontra um título não vazio.- Rampa
✗ html O título da página "Vite + React + TS" fala de outro assunto que não o da página. Evidência: "Vite + React + TS" Patch: - <title>Vite + React + TS</title> + <title>Seus pedidos - Histórico de Pedidos</title> confiança alta · 1/1 rodadas · evidência verificada · id 95c905ad780c
Um título copiado de outra página
A receita nasceu de uma cópia do guia de espresso e ficou com o título dele. A aba, o favorito e o resultado de busca dizem “Guia do espresso” em cima de uma receita de cold brew.
Antes, reprova no 2.4.2
<title>Guia do espresso | Torrefação Aurora</title>
…
<h1>Cold brew em casa</h1>Depois, aprova
<title>Cold brew em casa | Torrefação Aurora</title>- axe-core
Aprova: a
document-titleencontra um título não vazio.- Rampa
✗ html O título da página "Guia do espresso | Torrefação Aurora" fala de outro assunto que não o da página. Evidência: "Guia do espresso | Torrefação Aurora" Patch: - <title>Guia do espresso | Torrefação Aurora</title> + <title>Guia de Cold Brew | Torrefação Aurora</title> confiança alta · 1/1 rodadas · evidência verificada · id 7711150bcc2e
Um nome de arquivo como título
Alguns editores e exportações põem o nome do arquivo no título quando ninguém escreve um. “contato.html” não diz nada de útil para uma pessoa.
Antes, reprova no 2.4.2
<title>contato.html</title>
…
<h1>Fale conosco</h1>Depois, aprova
<title>Fale conosco | Torrefação Aurora</title>- axe-core
Aprova: a
document-titleencontra um título não vazio.- Rampa
✗ html O título da página "contato.html" é um nome de arquivo ou endereço, não um assunto. Evidência: "contato.html" Patch: - <title>contato.html</title> + <title>Fale Conosco - Contato</title> confiança alta · 1/1 rodadas · evidência verificada · id 758d3d2abe07Aqui a sugestão deixou de fora o nome do site. Um título sugerido é para uma pessoa ajustar ao padrão do próprio site.
O que o axe-core verifica
O axe-core 4.14.0 mapeia uma regra para o 2.4.2: a document-title, que reprova página sem <title> ou com título vazio. O Rampa relata essa falha como está, e aí não sobra nada para o modelo julgar.
| Regra | O que verifica | Mapeada para | Numa execução do Rampa |
|---|---|---|---|
document-title, página da regra na Deque University, em inglês | Documentos devem ter um elemento <title> para ajudar na navegação | 2.4.2 | roda |
A regra não lê o título. “Untitled document”, “Vite + React + TS” e o título de outra página passam.
Cada regra leva à página dela na Deque University, a empresa que mantém o axe-core (em inglês).
O que o Rampa julga, e como
O que vai para o modelo
A página, uma vez: quando o título não está vazio e a document-title não o reprovou.
O que o modelo vê
- O título, como o navegador o lê.
- O endereço da página: host e caminho, ou o nome do arquivo.
- Até oito cabeçalhos visíveis.
- Os primeiros 700 caracteres do texto da página.
- O idioma da página, para a sugestão.
O que ele precisa responder
Um veredito, o título copiado como evidência, o problema (genérico, nome de arquivo ou endereço, ou outro assunto que não o da página), um título sugerido com menos de 70 caracteres no idioma da página e um grau de confiança.
O que derruba uma alegação
- A evidência não é o título atual: as mesmas palavras, no máximo um pouco aparadas.
- Uma aprovação aponta problema, ou uma reprovação não aponta nenhum.
- Uma reprovação vem sem título sugerido, com sugestão acima de 140 caracteres ou igual ao título atual.
O patch
O título sugerido substitui o texto do <title>.
Em todo critério
- O conteúdo da página chega ao modelo marcado como dado, e o prompt manda ignorar qualquer instrução que esteja nele.
- As respostas ficam em cache por um hash do prompt, da imagem, do modelo e das configurações, então a mesma entrada nunca chama um modelo duas vezes.
- Com
--runs 3, o Rampa pergunta três vezes e fica com a maioria; quando as rodadas discordam, a confiança cai. Achados abaixo de--min-confidence(média por padrão) ficam ocultos, e o--verboselista todos. - Alegações derrubadas pela verificação são contadas em todo relatório, nunca mostradas como achados.
Como o Rampa foi medido nele
| Conjunto | Testa | Casos | axe-core, precisão / recall | Rampa, precisão / recall / F1 |
|---|---|---|---|---|
| 2.4.2, página tem título (ACT 2779a5) | sintaxe | 12 | 1,00 / 1,00 | 0,50 / 1,00 / 0,67 |
| 2.4.2, título descreve a página (ACT c4a8a4) | significado | 6 | não definida, nada apontado / 0,00 | 1,00 / 1,00 / 1,00 |
Pares corrompidos: o Rampa separou 3 de 3 (título da página), o axe-core 0. Um par é uma página de teste que passa e uma cópia quebrada de propósito; quem dá o mesmo veredito às duas não está julgando.
Rodada em 9 de outubro de 2026: axe-core 4.14.0, Gemma 4 12B numa GPU local, raciocínio desligado, uma rodada, casos de teste ACT a9a1483e. Amostras pequenas e uma rodada só: leia os números como um pipeline que funciona, não como resultado.
Leia com estas ressalvas
- Os prompts e o contexto de 2.4.2, 2.4.4 e 2.4.6 foram ajustados depois de ler os erros desta rodada, sem copiar as páginas de teste para os prompts. Precisam de páginas novas antes que os números signifiquem mais do que “o pipeline funciona”.
- A precisão baixa no 2779a5 é da contagem, não do julgamento. Essa regra só verifica se o título existe, e as páginas que passam nela se chamam “Title of the page.” e “This page has a title”; o Rampa diz que esses títulos não descrevem nada, o que é certo para o 2.4.2.
Limitações
- Julga o título que a página tem ao carregar. Numa aplicação de página única, rode no endereço de cada tela.
- Lê até oito cabeçalhos e os primeiros 700 caracteres do texto, então um título que combina com conteúdo mais abaixo é julgado sem ele.
- Julga uma página por vez e não compara títulos entre as páginas de um site.
- Só páginas web: um snapshot de app não tem título de página para julgar.
Perguntas sobre o 2.4.2
Só o nome do site passa no 2.4.2?
Na página inicial, pode passar. Em qualquer outra, um título só com o nome do site não diferencia aquela página das demais. Um padrão comum é o assunto da página primeiro e depois o site: “Fale conosco | Torrefação Aurora”.
O axe-core verifica se o título é descritivo?
Não. A regra document-title verifica se existe um título não vazio, e o Lighthouse relata a mesma verificação como “Document has a <title> element”. O WAVE acrescenta uma verificação de palavras que aponta título começando com “untitled”. Nenhum deles compara o título com a página.
E aplicações de página única?
O título deve mudar junto com a tela, como diz o Understanding 2.4.2. O Rampa verifica o título que a página tem ao carregar, então rode no endereço de cada tela.
Verifique suas páginas
O Rampa ainda não está no npm. Clone e rode a partir do código, com Node.js 22.12 ou mais novo e Chrome ou Edge. O --criteria 2.4.2 julga só este critério; sem ele, rodam os oito que rodam por padrão.
Com o Ollama rodando, o Rampa escolhe um modelo local sozinho; o node dist/cli.mjs doctor diz o que falta.
git clone https://github.com/guilhermebsantiago/rampa-cli.git
cd rampa-cli
pnpm install && pnpm build
node dist/cli.mjs check https://example.com --criteria 2.4.2Conferido com o rampa-cli (commit 0459809) e as fontes do W3C em 9 de outubro de 2026.