1001Ferramentas
🔗Validadores

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/slug tradicional; /categoria/slug ou /slug moderno.
    • Ghost: /slug chapado; 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