Validador de Slug
Verifique se um slug está em formato válido (a-z, 0-9, hífens, sem acentos, sem espaços, sem hífens duplicados nas pontas). Sugere correção. Tudo no navegador.
Sugestão:
Validação de slug: do título bruto à URL limpa
Um slug é a versão amigável para URL de uma string. Ele remove acentos, força minúsculas, troca espaços por hifens e mantém apenas caracteres ASCII que sobrevivem de forma transparente em URLs sem precisar de percent-encoding. O exemplo canônico é o permalink do WordPress: um post intitulado "Minha Primeira Postagem" vira minha-primeira-postagem, nunca Minha%20Primeira%20Postagem. Validar um slug é confirmar que ele segue a convenção combinada para que roteamento, SEO e sistemas a jusante permaneçam consistentes.
Slugs estão em toda parte: URLs de posts no WordPress e no Ghost, IDs de clientes do Stripe, URLs de categorias e produtos em e-commerce, nomes de repositórios do GitHub, nomes de pacotes do npm, nomes de recursos do Kubernetes. Cada plataforma tem regras ligeiramente diferentes, mas todas convergem para a mesma ideia: identificadores previsíveis, legíveis e inequívocos que funcionam em URLs, nomes de arquivo, labels DNS e CLIs.
Regex estrita vs permissiva
O padrão estrito é ^[a-z0-9]+(-[a-z0-9]+)*$: letras e dígitos ASCII em minúsculas, hifens isolados como separadores, nunca no início, no fim ou duplicados. O padrão permissivo ^[a-z0-9_-]+$ permite underscores e é comum em gerenciadores de pacotes (npm, PyPI). Use o estrito para URLs públicas e o permissivo para IDs internos em que legibilidade importa mais que SEO.
// JavaScript
const ESTRITA = /^[a-z0-9]+(-[a-z0-9]+)*$/
const PERMISSIVA = /^[a-z0-9_-]+$/
ESTRITA.test('minha-primeira-postagem') // true
ESTRITA.test('Minha-Primeira') // false (maiúsculas)
ESTRITA.test('hello--world') // false (hífen duplo)
Remoção de acentos e transliteração
Bibliotecas de slug normalizam para Unicode NFD e removem as marcas combinantes, então José vira jose, Açaí vira acai e São Paulo vira sao-paulo. Para escritas não latinas (cirílico, árabe, chinês) a escolha é entre tabelas de transliteração (Москва → moskva) e punycode para URLs internacionais. As libs populares slugify, slug (npm) e python-slugify trazem tabelas por idioma (alemão ß → ss, ä → ae; francês œ → oe).
Limites de comprimento e SEO
A maioria dos CMSs limita slugs a 200 caracteres (WordPress), mas a boa prática de SEO os mantém abaixo de 60 porque o Google trunca URLs longas nos resultados e slugs curtos concentram melhor o sinal de ranking. Algumas equipes removem stop words (a, o, de, da, do, e) para enxugar a URL; outras mantêm para soar natural. O Google analisa palavras individuais do slug, então palavras-chave significativas batem slugs com GUID puro do tipo post-3f8a7e1c, que o Search Console reporta como mal posicionados.
Colisões, geração automática e edição manual
A maioria dos CMSs gera o slug automaticamente a partir do título no primeiro salvamento e deixa o editor sobrescrever. Em caso de colisão (dois posts com o mesmo título) a plataforma adiciona contador (post-2, post-3) ou hash curto. Rails usa friendly_id com tabelas de histórico para que slugs antigos façam 301 redirect para o atual — crítico quando um post é renomeado mas backlinks externos já existem.
Estruturas de permalink e convenções por plataforma
- WordPress:
/ano/mes/dia/slugtradicional;/categoria/slugou/slugmoderno. - Ghost:
/slugchapado; respeita os tipos de conteúdo. - GitHub repos:
^[a-z0-9._-]+$, máx. 100 caracteres; case-insensitive mas armazenado como digitado. - Pacotes npm: minúsculas, sem espaços, podem ter
@scope/, máx. 214 caracteres. - IDs do Stripe:
cus_*,sub_*— slugs opacos com prefixo de tipo.
Perguntas frequentes
Devo usar underscore ou hífen? Hífen. O Google explicitamente trata hifens como separadores de palavra e underscores como junção (meu_post é lido como uma só palavra). Use hifens em URLs de SEO e reserve underscores para identificadores de código.
Qual é o tamanho ideal de slug? Abaixo de 60 caracteres para SEO, abaixo de 200 para atender a maioria dos CMSs, e razoável o bastante para um humano ler em e-mail ou chat sem rolar.
Como tratar sites multilíngues? Slugify por locale: armazene um slug por idioma e roteie por prefixo de locale (/en/my-post, /pt/minha-postagem). Nunca reuse o slug em inglês para conteúdo traduzido — derruba o SEO local.
E emojis no slug? A maioria dos validadores rejeita; mesmo se a plataforma aceitar, a codificação de URL transforma em blobs longos com percent-encoding. Remova emojis no slugify.
Posso mudar um slug depois de publicar? Sim, mas configure um 301 redirect do slug antigo para o novo. Pular o redirect quebra backlinks e perde o ranking conquistado pela URL original.
Ferramentas Relacionadas
Validador de UUID
Valide UUIDs (v1, v3, v4, v5, v7) e identifique a versão. Aceita com ou sem hífens, maiúsculas ou minúsculas. Tudo no navegador.
Validador de MAC Address
Valide endereços MAC nos formatos com dois pontos (xx:xx:xx:xx:xx:xx), hífen, Cisco (xxxx.xxxx.xxxx) ou sem separador. Identifica unicast/multicast e local/universal. Tudo no navegador.
Validador de URL
Verifique se uma URL é válida e analise suas partes: protocolo, domínio, caminho, parâmetros e hash. Processado no navegador.