Encoder e Decoder de URL

Codifique e decodifique URLs online com encodeURI ou encodeURIComponent, analise parâmetros de query e corrija erros de %. Grátis e sem enviar dados.

Analisar URL

Como usar

  1. Escolha a operação: Codificar ou Decodificar.
  2. Selecione o modo: Componente para valores de parâmetros, ou URL completa para preservar : / ? # & =.
  3. Marque "Espaço como +" se o formato for de formulário (application/x-www-form-urlencoded).
  4. Cole o texto no campo de entrada e copie o resultado, ou use "Trocar" para encadear a operação inversa.
  5. Para inspecionar uma URL inteira, cole-a em "Analisar URL" e confira host, caminho, hash e parâmetros.

Como funciona

Uma URL só pode conter um conjunto restrito de caracteres ASCII. Letras, números e - _ . ~ são seguros em qualquer lugar. Todo o resto, como espaços, acentos, emojis e símbolos, precisa virar uma sequência de escape: o sinal % seguido de dois dígitos hexadecimais para cada byte do texto em UTF-8. Por isso ç vira %C3%A7 (dois bytes) e um emoji chega a ocupar quatro bytes, %F0%9F%98%80.

encodeURI ou encodeURIComponent?

O modo Componente (encodeURIComponent) codifica também os caracteres reservados : / ? # [ ] @ ! $ & ' ( ) * + , ; =, porque dentro de um valor eles não podem ser confundidos com a estrutura da URL. É o correto para montar o valor de um parâmetro, por exemplo um texto de busca que contém & ou =. O modo URL completa (encodeURI) preserva esses caracteres, pois eles fazem parte da estrutura: serve para uma URL inteira que só precisa ter espaços e acentos escapados.

A opção Espaço como + segue o formato application/x-www-form-urlencoded, usado por formulários HTML e por muitas APIs em query strings. Ao codificar, o espaço vira + em vez de %20; ao decodificar, cada + vira espaço. Um + literal, nesse formato, é escrito %2B.

Exemplo

O texto café & leite no modo Componente vira caf%C3%A9%20%26%20leite. Com "Espaço como +" marcado, fica caf%C3%A9+%26+leite. Na seção "Analisar URL", a URL https://exemplo.com/busca?q=a&q=b mostra o parâmetro q duas vezes, cada um com seu valor, na ordem em que aparece.

Erros comuns

  • Codificar duas vezes: o % de %20 é codificado de novo e o resultado vira %2520. Se você vê %25 onde esperava %, decodifique mais uma vez.
  • Usar encodeURI em valor de parâmetro: um & dentro do valor não é escapado e quebra o parâmetro em dois.
  • % solto no texto: na decodificação, todo % precisa ser seguido de dois dígitos hexadecimais. Um % literal deve ser escrito %25; do contrário a ferramenta aponta a posição do erro.
  • Confundir + com espaço: fora do formato de formulário, o + é apenas um sinal de mais.

Todo o processamento usa as funções nativas do navegador, e nenhum texto é enviado a servidores.

Perguntas frequentes

Qual a diferença entre encodeURI e encodeURIComponent?

O encodeURI preserva os caracteres reservados da estrutura da URL (: / ? # & = e outros) e escapa apenas o que é inválido, como espaços e acentos. O encodeURIComponent escapa também os reservados, e por isso deve ser usado em valores de parâmetros.

Por que aparece %2520 na minha URL?

Porque o texto foi codificado duas vezes: o %20 (espaço) teve o seu % codificado como %25. Decodifique uma vez para voltar a %20 e mais uma para obter o espaço, e corrija o ponto do código que codifica em duplicidade.

Quando usar + em vez de %20 para o espaço?

O + só representa espaço no formato application/x-www-form-urlencoded, usado em formulários e em query strings de muitas APIs. No caminho da URL, use sempre %20. Na dúvida, %20 é aceito em todos os lugares.

O que significa o erro de sequência % malformada?

Todo % em texto codificado deve vir seguido de dois dígitos hexadecimais, como %20. Um % solto, como em "100% certo", é inválido. Para representar o próprio sinal de porcentagem, escreva %25. Bytes que não formam UTF-8 válido também geram esse erro.