Gerador de Slug

Converta qualquer texto em um slug limpo e amigável para URLs

Experimente um exemplo
Separador

Texto de entrada

Slug

Roda localmente · Seguro para colar segredos
O slug aparecerá aqui…

O Que É um Slug de URL?

Um slug de URL é a parte de um endereço web que identifica uma página específica de forma legível para humanos. Na URL https://example.com/blog/meu-primeiro-post, o slug é meu-primeiro-post. Um gerador de slug transforma o título ou a descrição de uma página em uma string que contém apenas letras minúsculas, números e hifens (ou outro separador escolhido). Esse processo remove espaços, elimina acentos e diacríticos, descarta caracteres especiais e normaliza os espaços em branco em separadores únicos.

A geração de slugs é uma etapa padrão em sistemas de gerenciamento de conteúdo, geradores de sites estáticos, plataformas de blog e qualquer aplicação que derive URLs da entrada do usuário. WordPress, Ghost, Hugo, Next.js e Django incluem lógica de geração de slug porque URLs legíveis melhoram tanto a usabilidade quanto a otimização para motores de busca. Um slug bem formado informa ao usuário o que uma página contém antes mesmo de clicar no link.

O termo "slug" vem do jornalismo impresso, onde se referia a um rótulo curto usado para identificar uma matéria durante a produção. No desenvolvimento web, o slug desempenha a mesma função: é um identificador compacto, único e seguro para URL, derivado de um título ou nome mais longo. Como os slugs são gerados programaticamente, um gerador confiável garante consistência em todas as páginas e localidades.

Por Que Usar Este Gerador de Slug?

Criar slugs de URL manualmente é propenso a erros. Esquecer de remover um acento, deixar um hífen duplo ou não tratar um caso especial com entrada Unicode pode produzir URLs quebradas ou feias. Esta ferramenta resolve esses problemas automaticamente.

Conversão Instantânea
Cole ou digite qualquer texto e veja o slug atualizar em tempo real. Sem envio de formulário, sem recarregamento de página. Útil quando você precisa de slugs para um lote de títulos de artigos ou nomes de produtos.
🔒
Processamento Privado
Toda a geração de slugs ocorre no seu navegador. Seu texto nunca sai da página, então você pode converter com segurança rascunhos de títulos, nomes de projetos internos ou nomes de produtos ainda não lançados.
⚙️
Saída Configurável
Escolha entre separadores de hífen, sublinhado ou ponto. Ative ou desative as minúsculas. Isso cobre as convenções de slug mais comuns entre diferentes frameworks e CMSes.
🌐
Tratamento de Unicode e Acentos
O gerador aplica normalização NFD para remover diacríticos de caracteres acentuados. Café se torna cafe, naïve se torna naive. Caracteres não-latinos que não podem ser transliterados são removidos de forma limpa.

Casos de Uso do Gerador de Slug

Desenvolvedor Frontend — Planejamento de Rotas
Gere slugs consistentes para rotas de página em React Router, Next.js ou Nuxt antes de configurar os segmentos de rota dinâmicos. Verifique que títulos com caracteres especiais produzem caminhos limpos.
Engenheiro Backend — Identificadores de Banco de Dados
Crie slugs seguros para URL em registros de banco de dados que precisam de identificadores legíveis. Slugs funcionam bem como chaves secundárias junto a IDs numéricos para endpoints de API REST como /api/products/fones-sem-fio.
DevOps — Nomenclatura de Arquivos de Configuração
Converta nomes de serviços ou rótulos de ambiente em strings seguras para o sistema de arquivos, para uso em arquivos de configuração, tags de imagem Docker ou nomes de recursos Kubernetes onde caracteres especiais não são permitidos.
Engenheiro de QA — Geração de Dados de Teste
Gere rapidamente variantes de slug a partir de títulos de casos de teste para verificar roteamento de URL, regras de redirecionamento e comportamento de canonical tags em ambientes de homologação.
Engenheiro de Dados — Normalização de Colunas
Normalize cabeçalhos de colunas bagunçados de importações CSV ou Excel em identificadores consistentes em snake_case ou kebab-case para uso em esquemas de banco de dados ou pipelines de dados.
Estudante — Projetos com CMS e Blog
Aprenda como a geração de slugs funciona ao construir um blog com WordPress, Jekyll ou um CMS personalizado. Use esta ferramenta para comparar seus slugs manuais com uma implementação de referência.

Regras de Geração de Slug e Tratamento de Caracteres

A geração de slugs segue uma sequência previsível de transformações. Entender cada etapa ajuda a depurar saídas inesperadas ou criar sua própria função slugify.

  1. 1. Normalização Unicode (NFD)
    Decompõe caracteres combinados em caractere base + marca de combinação. Por exemplo, é (U+00E9) se torna e + acento agudo combinado (U+0301). Isso torna os diacríticos removíveis na próxima etapa.
  2. 2. Remoção de Diacríticos
    Remove todos os caracteres no bloco Unicode de Marcas Diacríticas Combinadas (U+0300–U+036F). Após esta etapa, café se torna cafe e Ñ se torna N.
  3. 3. Remoção de Caracteres Especiais
    Substitui qualquer caractere que não seja letra, dígito, espaço em branco ou hífen por um espaço. Isso elimina pontuação, símbolos e caracteres sem equivalente ASCII.
  4. 4. Redução de Espaços em Branco
    Remove espaços em branco no início e no fim, depois colapsa todas as sequências consecutivas de espaços, sublinhados ou hifens em um único separador escolhido.
  5. 5. Aplicar Capitalização e Separador
    Converte para minúsculas (opcional) e une as palavras com o separador escolhido: hífen (-), sublinhado (_) ou ponto (.).

Referência de Transformação de Caracteres

A tabela abaixo mostra como os caracteres mais comuns são tratados durante a geração do slug:

EntradaSaídaRegra Aplicada
Hello Worldhello-worldLowercase + space → hyphen
Café au Laitcafe-au-laitNFD normalization strips é → e
naïve résuménaive-resumeMultiple diacritics removed
Price: $9.99!price-9-99Symbols ($, !, :) removed
too many too-manyWhitespace trimmed and collapsed
one--two___threeone-two-threeMixed separators collapsed
Привет мирprivet-mirCyrillic (if transliteration) or removed
file_name.txtfile-name-txtDots and underscores replaced
React & Vuereact-vueAmpersand removed
2026-03-302026-03-30Digits and hyphens preserved

Exemplos de Código

Geração de slugs em linguagens e frameworks populares. Cada exemplo trata normalização Unicode, remoção de diacríticos e inserção de separadores.

JavaScript
function slugify(text, separator = '-') {
  return text
    .normalize('NFD')                   // decompose accented chars
    .replace(/[\u0300-\u036f]/g, '')    // strip diacritics
    .toLowerCase()
    .replace(/[^\w\s-]/g, ' ')          // drop special chars
    .trim()
    .replace(/[\s_-]+/g, separator)     // collapse whitespace → separator

  // slugify('Café au Lait')      → "cafe-au-lait"
  // slugify('Hello World', '_')  → "hello_world"
}

// Node.js alternative using the `slugify` npm package:
// npm install slugify
// const slugify = require('slugify')
// slugify('Hello World', { lower: true, strict: true }) → "hello-world"
Python
import re
import unicodedata

def slugify(text: str, separator: str = '-') -> str:
    """Convert text to a URL-safe slug."""
    text = unicodedata.normalize('NFD', text)
    text = text.encode('ascii', 'ignore').decode('ascii')  # strip non-ASCII
    text = text.lower()
    text = re.sub(r'[^\w\s-]', ' ', text)
    text = text.strip()
    text = re.sub(r'[\s_-]+', separator, text)
    return text

# slugify('Café au Lait')      → "cafe-au-lait"
# slugify('Hello World', '_')  → "hello_world"

# Alternative: python-slugify (pip install python-slugify)
# from slugify import slugify
# slugify('Café au Lait')  → "cafe-au-lait"
Go
package main

import (
	"regexp"
	"strings"
	"unicode"

	"golang.org/x/text/unicode/norm"
	"golang.org/x/text/transform"
	"golang.org/x/text/runes"
)

func slugify(text string) string {
	// NFD normalize and strip diacritics
	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
	result, _, _ := transform.String(t, text)

	result = strings.ToLower(result)
	re := regexp.MustCompile(`[^\w\s-]+`)
	result = re.ReplaceAllString(result, " ")
	result = strings.TrimSpace(result)
	re = regexp.MustCompile(`[\s_-]+`)
	result = re.ReplaceAllString(result, "-")
	return result
}

// slugify("Café au Lait") → "cafe-au-lait"
// slugify("Hello World")  → "hello-world"
PHP
function slugify(string $text, string $separator = '-'): string {
    // Transliterate non-ASCII characters
    $text = transliterator_transliterate(
        'Any-Latin; Latin-ASCII; Lower()', $text
    );
    // Remove anything that is not a word char, space, or hyphen
    $text = preg_replace('/[^\w\s-]/', ' ', $text);
    $text = trim($text);
    $text = preg_replace('/[\s_-]+/', $separator, $text);
    return $text;
}

// slugify('Café au Lait')      → "cafe-au-lait"
// slugify('Hello World', '_')  → "hello_world"

Perguntas Frequentes

Qual é a diferença entre um slug e um caminho de URL?
Um caminho de URL é o segmento completo após o domínio, como /blog/2026/meu-post. Um slug é a parte legível que identifica um recurso específico dentro desse caminho, tipicamente o último segmento: meu-post. Slugs geralmente são derivados de títulos, enquanto o restante do caminho reflete a estrutura de roteamento do site.
Como a geração de slugs trata scripts não-latinos como chinês ou árabe?
Geradores de slug padrão que usam normalização NFD e remoção de diacríticos não conseguem transliterar scripts não-latinos. Caracteres como hanzi chinês ou letras árabes não têm equivalente ASCII, por isso são removidos durante a etapa de limpeza de caracteres especiais. Para preservar conteúdo não-latino em slugs, você precisa de uma biblioteca de transliteração como limax (JavaScript), python-slugify com o backend unidecode, ou uma tabela de mapeamento personalizada.
Devo usar hifens ou sublinhados em slugs de URL?
O Google trata hifens como separadores de palavras, mas trata sublinhados como conectores. O slug meu-primeiro-post é lido como três palavras (meu, primeiro, post), enquanto meu_primeiro_post é lido como um único token. Para fins de SEO, hifens são a escolha padrão para slugs de URL. Sublinhados são comuns em nomes de arquivos, colunas de banco de dados e identificadores de programação, onde funcionam como conectores seguros para variáveis.
Qual deve ser o tamanho de um slug de URL?
O Google exibe aproximadamente 60 caracteres de uma URL nos resultados de busca antes de truncar. Slugs mais curtos são mais fáceis de ler, compartilhar e digitar. Tente usar entre 3 e 6 palavras. Remova palavras de parada (o, a, os, as, um, uma, de, em, e, ou) quando não alterarem o significado: como-construir-app-nextjs é melhor do que como-construir-um-app-de-nextjs-em-2026.
Geração de slug é o mesmo que codificação de URL?
Não. A codificação de URL (percent-encoding) substitui caracteres inseguros por sequências com sinal de porcentagem, como %20 para um espaço. A geração de slug remove ou substitui caracteres inseguros por completo, produzindo uma string limpa sem artefatos de codificação. Um slug nunca contém sinais de porcentagem, espaços ou caracteres especiais. A codificação de URL preserva o conteúdo original; a geração de slug o transforma em algo novo.
Dois títulos diferentes podem produzir o mesmo slug?
Sim. Títulos que diferem apenas em pontuação, acentos ou capitalização frequentemente colapsam para o mesmo slug. Por exemplo, Résumé Tips e Resume Tips ambos produzem resume-tips. Em contextos de CMS ou banco de dados, você precisa de uma verificação de unicidade que adicione um sufixo numérico (resume-tips-2) quando ocorrer uma colisão.
Como gerar slugs no WordPress ou Django?
O WordPress gera slugs automaticamente a partir do título do post usando sanitize_title(). Você pode editar o slug no editor de posts. O Django disponibiliza a função slugify() em django.utils.text, que trata bem entradas ASCII. Para suporte a Unicode, passe allow_unicode=True. Ambas as plataformas armazenam os slugs no banco de dados junto ao título completo.