Gerador de Slug/ Nomes amigaveis para URL
Converta titulos em slugs amigaveis para URL — processa acentos, caracteres CJK, separadores personalizados e comprimento maximo.
Separador
Comprimento máx.
Texto / título
Slug
0 car.
O slug aparecerá aqui…
Experimentar um exemplo
Esta ferramenta resolveu o seu problema?
O que é um slug de URL
Um slug de URL é a parte legível de uma URL que identifica uma página específica,通常 composta por letras minúsculas, números e hífens. Em `example.com/posts/how-to-seo`, o slug é `how-to-seo`. Bons slugs são curtos, legíveis e contêm palavras-chave — importantes para SEO e experiência do usuário.
Como gerar bons slugs
Converter para minúsculas,替换 espaços e caracteres especiais por hífens, remover palavras de parada e保留 palavras-chave principais. URLs mais curtas são melhores,但 mantenha a legibilidade. Evite datas e IDs nos slugs a menos que necessário.
Exemplos de codigo
JavaScript / Node.js
// npm install slugify
import slugify from 'slugify';
slugify('Hello World!', { lower: true })
// 'hello-world'
slugify('Cafe au Lait', { lower: true })
// 'cafe-au-lait'
// npm install limax (CJK support)
import limax from 'limax';
limax('你好世界') // 'ni-hao-shi-jie' (pinyin)
limax('東京') // 'dong-jing'
// Manual (no deps)
const slugify = (s) => s
.toLowerCase()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-|-$/g, '');Python
# pip install python-slugify
from slugify import slugify
slugify('Hello World!')
# 'hello-world'
slugify('Cafe au Lait')
# 'cafe-au-lait'
slugify('你好世界', allow_unicode=True)
# '你好世界'
# With max length
slugify('A very long title that should be truncated',
max_length=30, word_boundary=True)
# 'a-very-long-title-that-should'Go
// go get github.com/gosimple/slug
import "github.com/gosimple/slug"
slug.Make("Hello World!")
// "hello-world"
slug.Make("Cafe au Lait")
// "cafe-au-lait"
// Custom separator
slug.CustomMake("Hello World", "_")
// "hello_world"
// Truncate
s := slug.Make("A very long title here")
if len(s) > 50 {
s = s[:50]
}PHP / WordPress
<?php
// WordPress built-in
$slug = sanitize_title('Hello World! Cafe');
// 'hello-world-cafe'
// PHP custom
function to_slug(string $s): string {
$s = mb_strtolower($s, 'UTF-8');
$s = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
$s = preg_replace('/[^a-z0-9]+/', '-', $s);
return trim($s, '-');
}
// Laravel
use Illuminate\Support\Str;
Str::slug('Hello World!'); // 'hello-world'
Str::slug('Hello World', '_'); // 'hello_world'Perguntas frequentes
O que e um slug de URL?
Um slug e a parte legivel de uma URL que identifica uma pagina especifica — composto por letras minusculas, numeros e hifens, como /blog/my-first-post. Bons slugs sao concisos, legiveis e favoraveis ao SEO. Eles evitam caracteres especiais, espacos, letras maiusculas e caracteres nao ASCII (a menos que se usem URLs em idioma nativo).
Por que usar hifens em vez de underscores nos slugs?
O Google trata hifens (-) como separadores de palavras, reconhecendo my-blog-post como tres palavras distintas. Underscores (_) sao tratados como conectores, fazendo my_blog_post parecer uma unica palavra. Portanto, hifens sao melhores para SEO. WordPress, GitHub e Shopify usam hifens por padrao pela mesma razao.
Como devo tratar caracteres CJK nos slugs?
Duas abordagens principais: 1) Transliterar para pinyin/romaji (ex.: 你好世界 → ni-hao-shi-jie) — melhor para SEO em alfabeto latino. 2) Usar os caracteres nativos diretamente (ex.: /blog/你好世界) — navegadores e motores de busca modernos suportam isso, mas os links aparecerao codificados em porcentagem ao compartilhar. Esta ferramenta suporta ambos os modos.
Qual e o comprimento ideal de um slug?
A melhor pratica de SEO recomenda manter os slugs abaixo de 60-75 caracteres para evitar truncamento nos resultados de busca. Inclua sua palavra-chave alvo, remova palavras vazias (a, the, of, etc.). Exemplo: 'how-to-optimize-nextjs-performance' e um slug eficaz. Slugs muito longos diluem o peso das palavras-chave.
Quais caracteres devem ser removidos ao criar um slug?
Remover ou substituir: espacos (→ separador), simbolos especiais (!@#$%^&*()+=[]{}|;:',.<>?/\`~), caracteres acentuados (e→e, u→u) e caracteres de controle. Manter: letras (a-z), digitos (0-9), separadores (-._). Se deve manter caracteres CJK depende do seu caso de uso.
Como gero slugs no Next.js ou Node.js?
No Node.js: npm install slugify ou limax (suporte CJK/pinyin). Implementacao manual basica: str.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''). No roteamento baseado em arquivos do Next.js, o slug normalmente vem do nome do arquivo ou de um campo do banco de dados. O WordPress tem sanitize_title() integrado.