URL Encode / Decode
- Escolha o modo: codificar ou decodificar.
- Cole ou digite o texto.
- O resultado aparece enquanto você digita e pode ser copiado direto.
URLs só podem conter um conjunto restrito de caracteres. Qualquer outro precisa ser representado por um sinal de porcentagem seguido do valor hexadecimal do byte — daí o nome percent-encoding.
Espaço vira %20, arroba vira %40, barra vira %2F. Caracteres acentuados ocupam mais de um byte em UTF-8 e geram mais de uma sequência: o ç vira %C3%A7.
Sem essa conversão, um parâmetro contendo & ou = quebraria a estrutura da query string, e o servidor leria os dados errados.
Esta ferramenta usa encodeURIComponent, que é o correto para codificar o valor de um parâmetro isolado. Ela escapa &, =, ?, /, # e os demais caracteres que têm papel estrutural na URL.
A função encodeURI serve para uma URL inteira e preserva justamente esses caracteres, porque ali eles são separadores legítimos. Usá-la em um valor de parâmetro deixa passar & e = e corrompe a query string.
Regra prática: URL completa usa encodeURI; pedaço que vai dentro de um parâmetro usa encodeURIComponent.
Nem tudo é escapado: os caracteres ! ' ( ) * — e também - _ . ~ — são deixados intactos por especificação. Alguns servidores antigos esperam que os cinco primeiros também venham codificados.
Em formulários HTML enviados como application/x-www-form-urlencoded, o espaço vira +, não %20. São duas convenções diferentes que convivem.
Isso significa que decodificar uma query string de formulário exige trocar + por espaço antes. Um texto que continha um sinal de mais literal e não foi codificado como %2B chega ao servidor como espaço — causa clássica de dado corrompido em busca.
A conversão acontece no seu navegador; nada é transmitido ou registrado.
Perguntas frequentes
São duas convenções. Percent-encoding de URL usa %20; formulários enviados como x-www-form-urlencoded usam +. Ambas são corretas nos seus contextos.
encodeURIComponent para o valor de um parâmetro, que é o caso mais comum. encodeURI só para uma URL inteira já montada, em que barras e o ponto de interrogação devem ser preservados.
Porque em UTF-8 ela ocupa dois bytes, e cada byte recebe sua própria sequência percent. O ç vira %C3%A7.
Pode, mas raramente é o que você quer. Codificar duas vezes transforma % em %25 e o valor chega ao destino com a codificação sobrando. Se você vê %2520 em algum lugar, é exatamente esse o problema.
Não. A conversão é feita no navegador e nada é registrado.