Uma tabela de dados simples, com uma única linha de cabeçalhos de coluna na parte superior, é relativamente simples de tornar acessível. A verdadeira dor começa com tabelas complexas – aquelas com cabeçalhos em colunas e linhas, células mescladas ou linhas de resumo. Este artigo explica como marcar cabeçalhos de tabela para que um leitor de tela "entenda", para cada célula, quais cabeçalhos se aplicam a ela, sem perder o contexto.
Resumindo – o que este guia cobre
Por que TH é diferente de TD
Em uma tabela HTML ou PDF marcado, cada célula tem um de dois tipos de função: TH (cabeçalho da tabela) ou TD (dados da tabela — uma célula de dados regular). A diferença não é necessariamente visual - uma célula de cabeçalho e uma célula de dados podem ter estilos idênticos - é semântica: TH diz ao leitor de tela "este é um cabeçalho que explica o que significam os dados abaixo ou ao lado dele". Sem a marcação correta, um leitor de tela se move pela tabela linha por linha como se todas as células fossem iguais, e é fácil perder completamente o controle de quais dados pertencem a qual categoria.
Quando o escopo é suficiente e quando você precisa de mais
Para a maioria das tabelas, você adiciona umescopoatributo a cada célula TH para indicar se é um cabeçalho de coluna (scope="col") ou um cabeçalho de linha (scope="row"). Quando um leitor de tela chega a uma célula de dados, ele anuncia automaticamente o cabeçalho da coluna e o cabeçalho da linha relevantes. Assim, o usuário ouve, por exemplo, "1.200 — Vendas, primeiro trimestre" em vez de apenas um "1.200" isolado.
Para tabelas especialmente complexas, com mais de dois níveis de cabeçalhos (por exemplo, um supercabeçalho que agrupa várias subcolunas), o escopo por si só nem sempre é suficiente. Nesses casos, use o par de atributos id e headers : dê a cada célula de cabeçalho um id exclusivo e, em cada lista de células de dados, no atributo headers, todos os ids de cabeçalho relevantes para ela. Este método é mais flexível, mas também mais complexo e sujeito a erros – reserve-o para casos que realmente necessitem dele.
scope="col"e os cabeçalhos de linha ("Q1," "Q2," "Q3") comscope="row"— portanto, cada célula de dados está vinculada aos dois cabeçalhos relevantes a ela.Linhas de resumo e vários cabeçalhos
Uma linha de resumo na parte inferior de uma tabela ("Total", "Média") é em si um tipo de cabeçalho - geralmente é apropriado marcar a própria célula total como TH com escopo = "linha", para que um leitor de tela a diferencie de uma linha de dados normal. Da mesma forma, uma tabela com um supercabeçalho que agrupa várias colunas (por exemplo, "Vendas de 2026" abrangendo "Q1", "Q2") requer o uso correto docolspanatributo junto com o escopo, para que o agrupamento hierárquico também seja preservado quando for lido em voz alta.
💡 Dica prática
Se uma tabela parecer muito complicada para ser marcada corretamente (mais de dois níveis de cabeçalhos, múltiplas mesclagens), às vezes a solução mais simples e acessível é dividi-la em várias tabelas mais simples ou adicionar um resumo em texto simples ao lado dela.
Como isso fica na prática em Word e PDF
No Word, usar a ferramenta padrão "Inserir ▸ Tabela" e marcar "Linha de cabeçalho" em Design de tabela cria a base correta, que exporta para PDF como TH automaticamente na maioria dos casos. No Acrobat, depois de exportar do Word e executar uma verificação de acessibilidade, vale a pena abrir a árvore de tags e confirmar se as células do cabeçalho foram realmente marcadas como TH e não como TD normal — esse é um erro de exportação comum e fácil de passar despercebido.
Existem tabelas de dados em documentos que nunca foram testados?
Nossa ferramenta identifica tabelas com cabeçalhos ausentes ou incorretos em todos os arquivos PDF do seu site.
Examine seu site gratuitamente ←