Gerador de Slugs de URL

Converta qualquer título num slug de URL limpo no navegador — um de cada vez ou uma lista inteira de uma só vez. Normas reais de transliteração para cirílico e acentos, regras editáveis e privacidade total.

Introduza o texto para conversão
Opções avançadas

O slug é a cauda 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 ou não, e a parte que um motor de busca lê como uma breve descrição do conteúdo da página, razão pela qual merece mais atenção do que uma identificação de base de dados ou uma data. Este gerador gratuito converte qualquer texto num slug: cole um título em "Texto a converter", prima "Gerar", e o resultado aparece com um botão de cópia ao lado. As predefinições são aquelas que a maioria dos sites pretende — letras minúsculas, traços entre palavras, palavras comuns de preenchimento removidas e letras não-latinas transliteradas — pelo que um slug utilizável está à distância de um clique, e cada uma destas decisões é um interruptor que pode alterar.

Tudo acontece no seu próprio dispositivo. A página carrega um pequeno motor JavaScript e executa-o localmente: os seus títulos nunca são enviados, nunca são registados, e a ferramenta continua a funcionar mesmo com a ligação desligada. Esta é também a razão pela qual o resultado é atualizado no momento em que altera uma definição. Vale a pena referir a ordem do trabalho, pois é o que torna o resultado previsível: um link colado é primeiro reduzido ao seu último segmento de caminho, de seguida o texto passa a minúsculas, as palavras vazias são removidas, os carateres não latinos são transliterados, os números e carateres especiais são removidos se assim o tiver solicitado, o que sobrar é unido com o seu separador, o resultado é cortado ao comprimento máximo e, por fim, uma repetição recebe um sufixo numérico. "Texto a converter" aceita até 500.000 carateres de uma só 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 torna-se o seu próprio slug numerado, com o título de onde surgiu exibido acima a cinzento, para que, num lote de cinquenta, ainda consiga distinguir a que cabeçalho pertence cada slug. Uma lista que já exista num ficheiro não tem de passar pela área de transferência: "Carregar do ficheiro", o botão ao lado da caixa de entrada, abre um ficheiro de texto simples — .txt, .csv, .md, .json e semelhantes — e coloca o seu conteúdo no campo. O seu navegador lê esse ficheiro exatamente da mesma forma que lê o que escreve, e este não é enviado para lado nenhum. "Dividir entrada por" decide como a lista é cortada. "Automático" é a predefinição: uma quebra de linha separa sempre os itens, enquanto que uma vírgula apenas os separa quando a entrada é uma única linha cujas partes se parecem com valores isolados — logo, "preço 3,5 EUR" e "Capítulo 5: resultados, conclusões" permanecem inteiros em vez de se estilhaçarem em fragmentos. "Quebra de linha", "Vírgula" e "Espaço" forçam a escolha quando já conhece o formato dos seus dados. O "Formato de saída" dita como um lote é devolvido ao ser copiado — um por linha, separado por espaços ou separado por vírgulas — e tanto "Copiar tudo" como "Guardar em ficheiro" seguem esta preferência. O "Histórico" preserva os seus últimos 10 lotes no seu próprio navegador, pelo que uma lista que converteu há uma hora continuará lá.

O texto não latino é a parte que a maioria dos geradores de slugs faz mais ou menos bem, mas que poucos acertam por completo. Um URL é mais seguro em ASCII simples, logo carateres cirílicos, gregos, árabes, chineses e letras europeias com acentos têm de ser convertidos, e a única verdadeira questão é através de que regra. Esta página responde em duas camadas. A camada geral cobre qualquer escrita: uma biblioteca de transliteração que oferece uma resposta ASCII sensata para quase qualquer caráter que consiga escrever, que é o que "Transliterar de" significa quando está em "Automático (qualquer idioma)". A camada específica é um conjunto de tabelas criadas manualmente para as línguas em que a resposta genérica não é aquela que o país realmente utiliza; o menu "Transliterar de" enumera as que dispõem de tabela hoje, e o conjunto cresce à medida que a ferramenta chega a mais línguas que necessitem de uma. Escolher uma carrega a sua tabela numa grelha editável em "Regras de transliteração", onde cada letra é um campo de texto que pode alterar, e "Repor regras" repõe-na. A tabela ucraniana segue a Resolução do Conselho de Ministros n.º 55 de 2010, a norma impressa nos passaportes ucranianos, incluindo os pormenores em que é fácil errar: зг passa a zgh e não a zh para se distinguir de ж; є, ї, й, ю e я ganham uma forma no início de uma palavra e outra no seu interior; e o apóstrofo e o sinal brando são omitidos sem iniciar uma nova palavra, logo Знам'янка surge como znamianka e não znamyanka. O alemão assume por defeito a variante alargada ä → ae, ö → oe, ü → ue que as moradas alemãs utilizam efetivamente, havendo a opção mais simples ä → a se a preferir.

"Remover palavras vazias" está ligado por defeito. Omite as pequenas palavras de ligação — a, o, e, de, para — que prolongam um slug sem lhe acrescentar sentido. A lista em "Palavras vazias" é totalmente editável e chega já preenchida: uma lista em inglês mais uma lista da língua da página onde se encontra, logo a página portuguesa conhece o, a, os, as e de. Adicione palavras suas, elimine as que pretende manter, ou desligue a funcionalidade por completo, caso em que o campo fica a cinzento em vez de fingir que ainda tem impacto. Duas notas honestas sobre o assunto. A remoção de palavras vazias é um pequeno ganho na arrumação mais do que um motor para subir nos rankings — obtém um endereço mais curto e limpo, não uma posição melhor nas pesquisas. E se todas as palavras de um título estiverem na lista, o resultado honesto é não obter absolutamente nada, e a ferramenta avisa-o disso mesmo em vez de lhe entregar uma caixa vazia.

Os restantes interruptores definem a forma. "Separador no slug" escolhe o que fica entre as palavras, e a predefinição do traço não é uma questão de gosto: o Google lê um traço como um separador de palavras e um sublinhado como uma junção de palavras, logo my_first_post chega a um rastreador como uma longa palavra, enquanto que my-first-post chega como três palavras. O "Sublinhado (_)" está ali para os sistemas que assim o exigem. "Minúsculas" está ativado pois a maioria dos servidores considera que os endereços são sensíveis a maiúsculas e minúsculas, e usar ambas é uma forma fácil de acabar com dois URLs para uma só página. "Remover carateres especiais" apaga tudo o que não seja uma letra, um dígito, um espaço, um traço ou um sublinhado, que é o que mantém a pontuação, as aspas e os emojis fora do endereço — os emojis são eliminados antes da transliteração de forma específica, para que um foguetão não se converta na palavra rocket. "Remover números" está desligado, pois um número num título faz, habitualmente, parte desse mesmo título. "Comprimento máximo" vai de 10 a 200, com a predefinição em 80; quando um slug excede esse comprimento, o motor corta com segurança na última palavra inteira que couber, em vez de o cortar a meio de uma. O número junto a cada resultado é a sua extensão em carateres, ficando a vermelho para lá dos 60 — não é um limite imposto, mas o ponto em que um slug começa a ser truncado nos resultados de pesquisa e se torna pouco prático de colar numa mensagem.

Existem dois interruptores extra por voltarem a converter tarefas em massa num trabalho à distância de um clique. "Tornar slugs únicos" capta o cenário em que dois títulos diferentes se reduzem ao mesmo slug — "Top 10 dicas" e "Top-10 dicas" tornam-se ambos top-10-dicas — e dá ao segundo um -2 e ao terceiro um -3, encurtando primeiro a base se o sufixo o fizesse exceder o seu comprimento máximo. Ter duas páginas num único endereço é um problema muito mais fácil de resolver nesta lista do que no seu CMS. "Extrair slug de um URL colado" atua no sentido inverso: cole um link completo e a ferramenta apanha a última parte do caminho, omite a cadeia de consulta (query string) e eventuais finais em .html ou .php, e descodifica a codificação por percentagem, logo um endereço da Wikipédia que acabe em %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 retorna lviv e não uma sequência de dígitos hexadecimais. Só dispara quando a linha inteira for um link, pelo que um URL citado no meio de uma frase fica onde está.

Porquê escolher este gerador de slugs?

Os slugs são necessários em qualquer lugar em que uma página deva exibir um endereço legível. Um blogue ou site de notícias converte cada cabeçalho num slug, que é o cenário no qual esta ferramenta foi desenhada: cole as manchetes da semana e obtenha os URLs da semana. Uma loja online faz o mesmo com produtos e categorias, frequentemente em massa e numa língua cujo alfabeto não cabe no endereço. Documentação e bases de conhecimento constroem links âncora e nomes de ficheiros da mesma forma. Para lá de endereços web, essa mesma cadeia de carateres limpa é tudo o que se pretende para criar nomes de ficheiros que não se partem num outro sistema operativo, a chave de uma base de dados legível por um humano num registo, um nome de ramo (branch), o nome de uma imagem ou o identificador para secções num gerador de sites estáticos. Qualquer lugar em que um nome legível por um humano tenha de resistir sem se alterar dentro de um campo lido por uma máquina, é um local ao qual um slug pertence.

Vale a pena conhecer alguns limites antes de depender dele. É um gerador, não um validador: não verifica se um slug já está ocupado no seu site, pois não faz ideia do que o seu site possui — a singularidade garantida é dentro do lote à sua frente. Os redirecionamentos continuam a ser responsabilidade sua; alterar o slug de uma página publicada anula o seu antigo endereço, e essa é uma decisão que cabe ao seu CMS e não a esta ferramenta. O "Guardar em ficheiro" escreve texto simples, não CSV ou JSON. A divisão automática realiza avaliações sobre vírgulas que estão certas em quase todos os casos, não em todos eles, razão exata pela qual o "Dividir entrada por" lhe permite alterá-lo. Por último, a transliteração é mais uma convenção do que uma tradução — München converte-se para muenchen, não Munich —, pelo que, quando uma página detém um nome estabelecido no idioma visado, esse nome será sempre um slug melhor do que qualquer conversão automatizada do original.

FAQ

Como posso criar um URL slug?

Cole o seu título em "Texto a converter" e prima "Gerar". O resultado aparece com um botão de cópia ao lado, convertido com as predefinições procuradas pela maioria dos sites: minúsculas, traços a separar palavras, omissão de palavras vazias e transliteração de letras não latinas. Cada uma delas é um interruptor que pode alterar, sendo que as "Opções avançadas" incluem o resto — o separador, o comprimento máximo, a lista de palavras vazias e as regras de transliteração.

Posso converter uma lista inteira de títulos de uma só vez?

Sim. Cole até 500.000 carateres — uns milhares de cabeçalhos — ou extraia-os diretamente de um ficheiro com "Carregar do ficheiro", o botão ao lado da caixa de entrada, que o lê no seu navegador sem o carregar na rede. Cada linha torna-se o seu próprio slug, numerado, com o título de origem apresentado acima, para que os consiga associar. O "Dividir entrada por" controla a forma como a lista é dividida, o "Formato de saída" decide se o lote regressa na forma de linhas, separadas por espaços ou por vírgulas, e tanto "Copiar tudo" como "Guardar em ficheiro" pegam em toda a lista de uma só vez.

De que forma o gerador processa as letras em cirílico e acentuadas?

Translitera-as para ASCII em duas camadas. Qualquer alfabeto — cirílico, grego, árabe, chinês, latino acentuado — é coberto por uma biblioteca de transliteração geral, que é a utilizada pela opção "Automático (qualquer idioma)". Por cima desta estão as tabelas construídas manualmente para os idiomas onde a resposta genérica não corresponde à que esses países realmente utilizam; o menu "Transliterar de" lista os que têm hoje uma tabela. Escolha um e a sua tabela será carregada, com todas as letras editáveis. O português não precisa de tabela própria: a camada geral escreve ç → c, ã → a e õ → o, exatamente como os endereços portugueses o fazem — Coração passa a coracao e São João a sao-joao.

Que norma de transliteração é utilizada para o ucraniano?

A Resolução do Conselho de Ministros n.º 55 de 27 de janeiro de 2010 — a norma utilizada nos passaportes ucranianos. Inclui os detalhes em que é fácil errar: зг passa a zgh para se distinguir de ж, as letras є, ї, й, ю e я adotam uma forma no início de uma palavra e outra no seu interior, e o apóstrofo e o sinal brando são omitidos sem iniciar uma nova palavra, logo Знам'янка passa a znamianka em vez de znamyanka. Está disponível uma segunda variante com ya, yu e yi em toda a palavra se preferir o aspeto mais simples.

Posso alterar a forma como uma determinada letra é transliterada?

Sim. Abra "Regras de transliteração" e verá que cada letra da tabela é um campo de texto: escreva aquilo em que pretende que a letra se transforme e o resultado será atualizado à medida que escreve. Limpar um campo remove totalmente a letra. As suas edições são memorizadas no seu próprio navegador para a próxima vez e "Repor regras" repõe a tabela padrão sempre que a quiser recuperar.

O que são palavras vazias e devo proceder à sua remoção?

São pequenas palavras de ligação — o, a, os, as, e, de, para — que prolongam um slug sem lhe dar mais clareza. A sua remoção está ativa por defeito e a lista em "Palavras vazias" é editável, chegando pré-preenchida com uma lista em inglês mais outra para o idioma da página em que se encontra. Seja sincero quanto à utilidade: produz um endereço mais curto e arrumado, não uma melhor posição nas pesquisas. Se um título for inteiramente composto por palavras vazias, a ferramenta avisa-o em vez de devolver um slug vazio.

Devo usar traços ou um sublinhado num slug?

Traços, a menos que algo no seu sistema técnico exija o contrário. O Google trata um traço como um separador de palavras e um sublinhado como um caráter de ligação, pelo que my_first_post é lido como uma única palavra longa enquanto my-first-post é lido como três. Por esse motivo, a predefinição do gerador é o traço; "Separador no slug" oferece o "Sublinhado (_)" para os sistemas que o requeiram.

Qual deverá ser a extensão de um URL slug?

Curto o suficiente para ser lido num relance — as primeiras palavras carregam o significado e o resto é habitualmente a cauda de uma frase. O número junto a cada resultado é o seu comprimento em carateres e fica vermelho a partir dos 60, que é aproximadamente onde os resultados da pesquisa o começam a truncar e onde se torna incómodo de colar numa mensagem. O "Comprimento máximo" impõe um limite rígido entre 10 e 200 carateres, com um padrão de 80.

A ferramenta corta as palavras ao meio quando o slug é demasiado longo?

Não. Quando um slug excede o comprimento máximo, o motor recua para a última palavra inteira que couber e corta aí, para que um slug truncado continue a ser lido como palavras em vez de terminar a meio de uma sílaba. O mesmo se aplica quando um sufixo numérico é acrescentado a uma repetição: a base é primeiro encurtada para que o slug acabado respeite na mesma o seu limite.

O que acontece se dois títulos produzirem o mesmo slug?

O "Tornar slugs únicos" está ativo por predefinição e trata do assunto: a primeira ocorrência mantém o slug simples, a segunda ganha um -2, a terceira um -3 e por aí adiante. Capta o caso comum em que dois títulos diferentes se reduzem ao mesmo — "Top 10 dicas" e "Top-10 dicas" tornam-se ambos top-10-dicas. Desligá-lo dá-lhe o resultado bruto com os duplicados intactos. Note que a exclusividade é garantida apenas dentro do lote que acabou de converter; a ferramenta não consegue saber o que já existe no seu site.

Posso colar um URL em vez de um título?

Sim. O "Extrair slug de um URL colado" está ativo por predefinição, e quando uma linha inteira é um link, a ferramenta extrai a última parte do caminho, elimina a string de pesquisa e qualquer terminação .html ou .php, e descodifica a percentagem — logo um endereço da Wikipédia terminado em %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 retorna como lviv em vez de uma sequência de dígitos hexadecimais. Apenas dispara numa linha que seja inteiramente um link, pelo que um URL citado dentro de uma frase é tratado como texto normal.

O meu texto é enviado para um servidor?

Não. A conversão ocorre no seu navegador como JavaScript local. Nada é carregado, nada é registado e, assim que a página for carregada, continuará a funcionar com a ligação desligada. Títulos não publicados, nomes internos de produtos e trabalho de clientes ficam no seu computador, o que é o motivo prático para preferir uma ferramenta local em vez de uma do lado do servidor para esta tarefa em particular.

Por que razão a minha frase única se dividiu em dois slugs?

Porque continha uma vírgula e o "Dividir entrada por" estava em "Automático". Este modo trata uma quebra de linha como um separador definitivo e uma vírgula como um provável, e apenas separa por vírgulas quando as partes de uma única linha se assemelham todas a valores isolados — um decimal como 3,5 ou uma frase com dois pontos são deliberadamente deixados inteiros. Se um título ainda assim se separar e não dever, defina o "Dividir entrada por" como "Quebra de linha" e a entrada será cortada apenas onde premir a tecla Enter.