O slug é a parte final legível de um endereço web — o my-first-post em example.com/blog/my-first-post. É a parte que uma pessoa pode ler antes de decidir se clica, e a parte que um mecanismo de busca lê como uma breve descrição do que a página contém, e por isso merece mais atenção do que um ID de banco de dados ou uma data. Este gerador gratuito transforma qualquer texto em um: cole um título em "Texto para converter", clique em "Gerar" e o resultado aparecerá com um botão de copiar ao lado. Os padrões são as configurações que a maioria dos sites deseja — letras minúsculas, hífens entre as palavras, palavras de preenchimento comuns removidas, letras não latinas transliteradas — para que um slug utilizável esteja a apenas um clique de distância, e cada uma dessas decisões é uma chave que você pode alterar.
Tudo acontece no seu próprio dispositivo. A página carrega um pequeno motor JavaScript e o executa localmente: seus títulos nunca são enviados (uploaded), nunca são registrados, e a ferramenta continua funcionando mesmo com a conexão desligada. É por isso também que o resultado é atualizado no momento em que você altera uma configuração. Vale a pena detalhar a ordem do processamento, pois é isso que torna a saída previsível: um link colado é primeiro reduzido ao seu último segmento de caminho, depois o texto é convertido em letras minúsculas, em seguida as stop words são removidas, os caracteres não latinos são transliterados, os números e caracteres especiais são removidos se você tiver solicitado, o que sobrar é unido com o seu separador, o resultado é cortado no comprimento máximo, e por fim uma repetição recebe um sufixo numérico. O "Texto para converter" aceita até 500.000 caracteres de uma vez, o que equivale a alguns milhares de títulos de artigos.
Uma linha entra, um slug sai. Cole uma lista inteira de títulos e cada linha se tornará seu próprio slug numerado, com o título original mostrado acima em cinza, de modo que, em um lote de cinquenta, você ainda possa saber qual slug pertence a qual título. Uma lista que já existe em um arquivo não precisa passar pela área de transferência: "Carregar do arquivo", o botão ao lado do campo de entrada, abre um arquivo de texto simples — .txt, .csv, .md, .json e afins — e joga o seu conteúdo no campo. Seu navegador lê esse arquivo exatamente da mesma maneira que lê o que você digita, e ele não é enviado a lugar nenhum. "Dividir entrada por" decide como a lista é cortada. "Automático" é o padrão: uma quebra de linha sempre separa os itens, enquanto uma vírgula só os separa quando a entrada for uma única linha cujas partes pareçam valores independentes — então "preço 3,5 milhões" e "Capítulo 5: resultados, conclusões" permanecem inteiros em vez de se despedaçarem em fragmentos. "Quebra de linha", "Vírgula" e "Espaço" forçam a escolha quando você já conhece o formato dos seus dados. O "Formato de saída" decide como um lote retorna quando você o pega — um por linha, separado por espaços ou separado por vírgulas — e tanto "Copiar tudo" quanto "Salvar em arquivo" seguem isso. O "Histórico" mantém os seus últimos 10 lotes no seu próprio navegador, para que uma lista que você converteu há uma hora ainda esteja lá.
O texto não latino é a parte que a maioria dos geradores de slug acerta mais ou menos e poucos acertam exatamente. Uma URL é mais segura em ASCII simples, então letras cirílicas, gregas, árabes, chinesas e europeias acentuadas precisam ser convertidas, e a única verdadeira questão é pela regra de quem. Esta página responde a isso em duas camadas. A camada geral cobre todos os alfabetos: uma biblioteca de transliteração com uma resposta ASCII sensata para quase qualquer caractere que você possa digitar, que é o que "Transliterar de" significa quando diz "Automático (qualquer idioma)". A camada específica é um conjunto de tabelas construídas manualmente para os idiomas onde a resposta genérica não é aquela que o país realmente usa; o menu "Transliterar de" cita os que têm uma tabela hoje, e o conjunto cresce à medida que a ferramenta alcança mais idiomas que precisem de uma. Escolher um deles carrega sua tabela em uma grade editável sob "Regras de transliteração", onde cada letra é um campo de texto que você pode mudar, e "Redefinir regras para o padrão" a coloca de volta. A tabela ucraniana segue a Resolução nº 55 de 2010 do Conselho de Ministros, o padrão impresso nos passaportes ucranianos, incluindo os detalhes que são fáceis de perder: зг se torna zgh em vez de zh para se manter distinto de ж; є, ї, й, ю e я tomam uma forma no início de uma palavra e outra dentro dela; e o apóstrofo e o sinal brando são descartados sem iniciar uma nova palavra, de modo que Знам'янка sai como znamianka e não znamyanka. O alemão usa por padrão a forma expandida ä → ae, ö → oe, ü → ue que os endereços alemães realmente utilizam, com uma variante simples ä → a se você preferir.
A opção "Remover stop words" vem ativada por padrão. Ela descarta as pequenas palavras de conexão — a, the, and, of, for — que alongam um slug sem adicionar significado a ele. A lista sob "Stop words" é totalmente editável e chega já preenchida: uma lista em inglês mais uma lista para o idioma da página em que você está, para que a página ucraniana conheça в, на, та e і, e a página alemã conheça der, die e das. Adicione suas próprias palavras, exclua as que deseja manter, ou desligue o recurso por completo, caso em que o campo ficará cinza em vez de fingir que ainda importa. Duas observações honestas sobre isso. Remover stop words é um pequeno ganho de organização em vez de uma alavanca de ranqueamento — você obtém um endereço mais curto e limpo, não uma posição melhor. E se todas as palavras em um título estiverem na lista, o resultado honesto não é nada, então a ferramenta te avisa isso em vez de te entregar uma caixa vazia.
Os demais interruptores decidem o formato. "Separador no slug" escolhe o que fica entre as palavras, e o padrão de hífen não é uma questão de gosto: o Google lê um hífen como um separador de palavras e um underline como um conector, de forma que my_first_post chega a um rastreador como uma única palavra longa enquanto my-first-post chega como três. O "Underline (_)" está lá para os sistemas que insistem nele. "Letras minúsculas" está ativado porque a maioria dos servidores trata endereços como sensíveis a maiúsculas e minúsculas (case-sensitive), e misturar tamanhos de caixa é uma maneira fácil de acabar com duas URLs para uma única página. "Remover caracteres especiais" remove tudo o que não for letra, dígito, espaço, hífen ou underline, que é o que mantém a pontuação, aspas e emojis fora de um endereço — emojis são removidos antes da transliteração especificamente para que um foguete não vire a palavra foguete. "Remover números" vem desativado, porque um número em um título geralmente é parte dele. O "Comprimento máximo" vai de 10 a 200 e o padrão é 80; quando um slug for mais longo do que isso, o motor faz o corte na última palavra inteira que couber, em vez de cortar no meio de uma. O número ao lado de cada resultado é o seu comprimento em caracteres, e ele fica vermelho depois de 60 — não é um limite rígido, mas o ponto onde um slug começa a ser truncado nos resultados de busca e se torna incômodo para colar em uma mensagem.
Mais duas opções existem porque transformam uma conversão em lote de volta para um trabalho de um clique. "Tornar slugs únicos" pega o caso em que dois títulos diferentes se reduzem ao mesmo slug — "Top 10 dicas" e "Top-10 dicas" ambos se tornam top-10-dicas — e dá ao segundo um -2, ao terceiro um -3, encurtando a base primeiro se o sufixo ultrapassar o comprimento máximo. Duas páginas em um único endereço é um problema muito mais barato de detectar nesta lista do que no seu CMS. "Pegar o slug de uma URL colada" funciona na outra direção: cole um link completo e a ferramenta pega a última parte do caminho, descarta a query string e qualquer finalização como .html ou .php, e decodifica a codificação com porcentagem (percent-encoding), de forma que um link da Wikipédia terminando em %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 volta como lviv em vez de uma sequência de dígitos hexadecimais. Isso só é disparado quando a linha inteira for um link, para que um endereço citado no meio de uma frase seja deixado onde está.
Por que escolher este gerador de slugs?
- Apenas no navegador: seus títulos nunca são enviados, e a página funciona offline
- Conversão em lote a partir de uma colagem ou arquivo de texto, com o título de origem acima de cada slug
- Padrões de transliteração reais por idioma, e não uma única tabela genérica para todos eles
- Ucraniano pela Resolução nº 55 de 2010 — a ortografia usada em passaportes
- Toda regra é editável letra por letra, com uma redefinição em um clique
- Sufixos -2 e -3 automáticos para que nenhum par de slugs em um lote colida
- Cole um link e pegue o slug contido nele, com o percent-encoding decodificado
- Uma lista de stop words editável que já vem preenchida para o seu idioma
- Truncamento seguro em uma palavra inteira, com contagem de caracteres ao lado de cada resultado
- Gratuito e ilimitado: sem cadastro, sem cotas, nada mantido nos nossos servidores
Slugs são necessários onde quer que uma página tenha que carregar um endereço legível. Um blog ou site de notícias transforma cada manchete em um, que é o caso em torno do qual esta ferramenta foi moldada: cole as manchetes da semana, obtenha as URLs da semana. Uma loja virtual faz o mesmo para nomes de produtos e categorias, geralmente em lote após uma importação, e geralmente em um idioma cujo alfabeto o endereço não pode suportar. Documentações e bases de conhecimento constroem âncoras e nomes de arquivos da mesma maneira. Além dos endereços web, essa mesma string limpa é o que você quer para um nome de arquivo que não quebre em outro sistema operacional, uma chave de banco de dados que uma pessoa consiga ler em um log, o nome de uma branch, um nome de imagem em uma biblioteca de mídia, ou o identificador de uma seção em um gerador de sites estáticos. Qualquer lugar em que um nome legível para humanos tenha que sobreviver ao ser colocado em um campo legível por máquinas é um lugar ao qual um slug pertence.
Vale a pena conhecer alguns limites antes de depender dele. Este é um gerador, não um validador: ele não vai verificar se um slug já está sendo usado no seu site, porque ele não tem ideia do que seu site contém — a exclusividade que ele garante é dentro do lote na sua frente. Redirecionamentos também são o seu trabalho; alterar o slug de uma página publicada quebra seu endereço antigo, e essa é uma decisão para o seu CMS, e não para esta ferramenta. "Salvar em arquivo" escreve em texto simples, não em CSV ou JSON. A divisão automática toma uma decisão de julgamento sobre vírgulas que está correta em quase todos os casos, mas não em todos eles, que é exatamente o motivo pelo qual "Dividir entrada por" permite que você a anule. E a transliteração é uma convenção em vez de uma tradução — München se torna muenchen, não Munich — portanto, quando uma página tem um nome estabelecido no idioma de destino, esse nome é um slug melhor do que qualquer conversão automática do original.