Text Slugify (URL)

Uma ferramenta profissional de slugify que normaliza o texto em slugs amigáveis para URL, suportando conversão para minúsculas, separadores personalizados e remoção de stopwords em inglês. Utiliza normalização Unicode para lidar com caracteres da maioria dos idiomas, garantindo que os slugs gerados sigam as melhores práticas de SEO. Ideal para URLs de posts de blog, nomeação de arquivos, identificadores de banco de dados e outros cenários. Processado totalmente localmente para proteger sua privacidade—sem necessidade de registro. Fornece diretrizes detalhadas de uso e recomendações de boas práticas para ajudá-lo a gerar slugs de alta qualidade.

Parâmetros & Entrada

Recomendado: use - ou _, com 1 a 3 caracteres

Resultado

Por que usar Slugify?

🔍 Otimização de SEO

Palavras-chave nas URLs ajudam os mecanismos de busca a entender o conteúdo da página e melhorar o ranking. Por exemplo, example.com/blog/how-to-learn-javascript é mais eficaz do que example.com/blog/123.

👁️ Legibilidade e Compartilhamento

Os usuários entendem instantaneamente o conteúdo pela URL. Os slugs são mais fáceis de compartilhar em redes sociais e de lembrar ou digitar manualmente.

💻 Compatibilidade de Sistemas

Evite erros causados por caracteres especiais em nomes de arquivos ou URLs. Garante compatibilidade entre plataformas (Windows/Linux/macOS) e previne problemas de codificação.

🗄️ Amigável para Bancos de Dados

Use como identificadores únicos (ex.: nomes de usuário, tags) para reduzir riscos de SQL injection e melhorar o desempenho de indexação e consultas.

O que é Slugify?

Um slug é uma versão abreviada e padronizada do texto usada como URL, nome de arquivo ou identificador. Os processamentos comuns incluem padronização de maiúsculas/minúsculas, remoção de pontuação e junção de palavras com separadores.

  • Prioridade ASCII: Remove acentos e símbolos, mantendo apenas caracteres alfanuméricos e espaços
  • Compatível com Unicode: Normaliza caracteres da maioria dos idiomas usando NFKD antes do processamento
  • Seguro para URL: A saída contém apenas letras, números e separadores—pronto para uso direto em caminhos

Casos de Uso

URLs de Posts de Blog

Como Aprender JavaScript?

como-aprender-javascript

Nomenclatura de Arquivos

Documento de Requisitos de Produto v2.0.docx

documento-requisitos-produto-v2-0.docx

Identificador de Banco de Dados

用户-张三

user-zhang-san

Perguntas Frequentes

P: Como os caracteres chineses são tratados?

R: Por padrão, diacríticos são removidos e letras pinyin são mantidas. Texto puramente chinês pode resultar em vazio; recomenda-se converter manualmente para pinyin antes de gerar o slug, ou usar uma ferramenta de conversão de pinyin chinês.

P: Por que meu resultado está vazio?

R: Sua entrada pode consistir inteiramente de pontuação, símbolos ou espaços, ou todas as palavras podem ter sido removidas pelo filtro de stopwords. Tente desativar a opção de stopwords ou ajustar sua entrada.

P: Devo usar - ou _ como separador?

R: Para SEO, use - (hífen), pois o Google o trata como um espaço; _ (sublinhado) é tratado como símbolo de concatenação, o que prejudica a separação das palavras. Para nomes de arquivos, ambos são aceitáveis.

P: Há um limite de comprimento para slugs?

R: Não há limite técnico, mas recomenda-se manter slugs com menos de 50 caracteres para melhor exibição da URL e SEO. Slugs excessivamente longos podem ser truncados pelos mecanismos de busca.

Melhores Práticas

Práticas Recomendadas

  • ✓ Mantenha-o curto (recomendado < 50 caracteres)
  • ✓ Evite caracteres especiais; use apenas letras, números e separadores
  • ✓ Use minúsculas para evitar problemas de sensibilidade a maiúsculas/minúsculas
  • ✓ Remova palavras vazias para melhorar a densidade semântica

Evite Estas Práticas

  • ✗ Não inclua informações confidenciais (ex.: IDs, e-mails, senhas)
  • ✗ Não utilize caracteres especiais (ex.: @#$%^&*)
  • ✗ Não mantenha espaços ou separadores consecutivos
  • ✗ Não repita a mesma palavra

Detalhes Técnicos

Normalização Unicode:

Usa decomposição NFKD + remoção de diacríticos combinantes (\p{M}), convertendo Café em Cafe. Suporta a maioria dos caracteres baseados no alfabeto latino.

Lista de Palavras Vazias:

Baseada em palavras comuns do inglês (a/an/the/and/or/of/to/in/on/for/at/by/with); personalizável. As palavras vazias em chinês requerem tratamento separado.

Compatibilidade com Navegadores:

Requer suporte a ES6+ e regex Unicode (\p{...}). Compatível com navegadores modernos: Chrome 64+, Firefox 78+, Safari 11.1+.

Como gerar um slug através de uma linguagem de programação?

JavaScript

function slugify(text) {
  return text
    .toLowerCase()
    .normalize("NFKD")
    .replace(/[\u0300-\u036f]/g, "")
    .replace(/[^\w\s-]/g, "")
    .trim()
    .replace(/[\s_-]+/g, "-")
    .replace(/^-+|-+$/g, "");
}

PHP

function slugify($text) {
  $text = mb_strtolower($text);
  $text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
  $text = preg_replace("/[^\w\s-]/", "", $text);
  $text = preg_replace("/[\s_-]+/", "-", $text);
  return trim($text, "-");
}

Python

import re
import unicodedata

def slugify(text):
    text = text.lower()
    text = unicodedata.normalize("NFKD", text)
    text = text.encode("ascii", "ignore").decode("ascii")
    text = re.sub(r"[^\w\s-]", "", text)
    text = re.sub(r"[\s_-]+", "-", text)
    return text.strip("-")

Go

import (
    "regexp"
    "strings"
    "golang.org/x/text/unicode/norm"
)

func Slugify(text string) string {
    text = strings.ToLower(text)
    text = norm.NFKD.String(text)
    re := regexp.MustCompile(`[^\w\s-]`)
    text = re.ReplaceAllString(text, "")
    re = regexp.MustCompile(`[\s_-]+`)
    text = re.ReplaceAllString(text, "-")
    return strings.Trim(text, "-")
}

Ruby

require "unicode"

def slugify(text)
  text = text.downcase
  text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
  text = text.gsub(/[^\w\s-]/, "")
  text = text.gsub(/[\s_-]+/, "-")
  text.strip.gsub(/^-+|-+$/, "")
end

Java

import java.text.Normalizer;

public static String slugify(String text) {
    text = text.toLowerCase();
    text = Normalizer.normalize(text, Normalizer.Form.NFKD);
    text = text.replaceAll("[^\\w\\s-]", "");
    text = text.replaceAll("[\\s_-]+", "-");
    return text.replaceAll("^-+|-+$", "");
}