Sobre este problema HTML
Os URLs devem estar em conformidade com o URL Living Standard, que proíbe caracteres tab (U+0009) na parte do host/domínio de um URL. Embora alguns browsers possam silenciosamente remover tabs e ainda navegar para o destino pretendido, este comportamento não é garantido e não deve ser utilizado como base.
Este problema surge tipicamente de um dos seguintes cenários:
- Erros de copiar-colar: Copiar um URL de um documento, email ou folha de cálculo que inclui inadvertidamente caracteres tab.
- Formatação de template ou ferramenta de build: Um motor de templating ou gerador de código a inserir espaços em branco (incluindo tabs) numa string de URL, especialmente quando o URL é construído ao longo de várias linhas.
-
Erros manuais: Pressionar acidentalmente a tecla Tab enquanto edita um valor
href, particularmente em editores que não visualizam espaços em branco.
Os caracteres tab são invisíveis na maioria dos editores de código por padrão, o que torna este erro frustrante de rastrear. Ativar “mostrar espaços em branco” ou “mostrar caracteres invisíveis” no seu editor pode ajudá-lo a identificar o carácter problemático.
Porque isto é importante
-
Conformidade com padrões: A especificação HTML requer que os valores
hrefcontenham URLs válidos. Um tab no domínio torna o URL sintaticamente inválido. -
Acessibilidade: Leitores de ecrã e tecnologias assistivas analisam valores
hrefpara anunciar destinos de links. Um URL inválido pode levar a anúncios confusos ou quebrados. - Fiabilidade: Embora os principais browsers tendam a ser tolerantes e removam tabs antes de resolver URLs, alguns clientes HTTP, crawlers ou browsers mais antigos podem não o fazer. Isto pode causar links quebrados em contextos inesperados como leitores RSS, clientes de email ou web scrapers.
Como corrigir
- Ativar espaços em branco visíveis no seu editor para localizar caracteres tab.
-
Procurar caracteres tab nos seus valores
href. Em muitos editores, pode usar uma pesquisa regex por\tdentro de valores de atributos. - Remover os caracteres tab para que o URL seja uma string limpa e contínua sem espaços em branco incorporados.
- Se os URLs são gerados dinamicamente, inspecione o código que os constrói para garantir que não há tabs ou outros espaços em branco concatenados no domínio.
Exemplos
❌ Incorreto: Carácter tab no domínio
No exemplo abaixo, um carácter tab está incorporado no nome do domínio (representado aqui como 	 para visibilidade, embora no código fonte seria um tab invisível real):
<!-- O tab entre "example" e ".com" causa o erro -->
<a href="https://example .com/page">Visitar Example</a>
Nota: O carácter tab entre example e .com é invisível na maioria dos editores mas desencadeia o erro de validação.
✅ Correto: URL limpo sem espaços em branco
<a href="https://example.com/page">Visitar Example</a>
❌ Incorreto: Tab introduzido por construção de URL multi-linha num template
Isto pode acontecer quando um URL é quebrado ao longo de linhas num template e tabs são usados para indentação:
<a href="https://
example.com/page">Visitar Example</a>
✅ Correto: URL numa única linha sem espaços em branco incorporados
<a href="https://example.com/page">Visitar Example</a>
Dica: Encontrar tabs ocultos
Se está a ter dificuldade em localizar o carácter tab, tente colar o seu valor href numa ferramenta que revela códigos de caracteres, ou faça uma verificação rápida na consola de desenvolvimento do seu browser:
// Verificar tabs numa string de URL
const url = document.querySelector('a').getAttribute('href');
console.log(url.includes('\t')); // true se um tab estiver presente
console.log(JSON.stringify(url)); // mostra \t explicitamente na saída
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.