Codificador, decodificador e analisador de URL

Codifique, decodifique e analise URLs e edite a string de consulta.

Codifica tudo menos letras, dígitos e - _ . ! ~ * ' ( ). Use para um valor isolado (encodeURIComponent).

O que esta ferramenta faz

Uma URL só pode carregar um conjunto pequeno de caracteres simples. Todo o resto, como um espaço, um acento, um emoji ou um caractere com significado na sintaxe da URL, é escrito com um sinal de porcentagem e dois dígitos hexadecimais para cada byte: um espaço é %20 e "é" é %C3%A9. A ferramenta tem três abas. Codificar converte o texto para essa forma, Decodificar devolve e diz exatamente qual escape está quebrado, e Analisar URL separa um endereço em esquema, usuário, host, porta, caminho, consulta e fragmento, lista os parâmetros num pequeno editor e reconstrói a URL conforme você muda.

Três tipos de codificação

O mesmo texto pode ser codificado de três jeitos, e escolher errado é o erro mais comum.

  • Componente (encodeURIComponent) codifica tudo menos letras, dígitos e - _ . ! ~ * ' ( ). Use para um valor que vai dentro de uma URL, como um termo de busca. a/b?c=d&e vira a%2Fb%3Fc%3Dd%26e.
  • URL inteira (encodeURI) também deixa ; , / ? : @ & = + $ #, então um endereço completo mantém a forma: o mesmo texto continua a/b?c=d&e. É errado para um valor isolado, porque um & ou = dentro seria lido como sintaxe.
  • Formulário é o que os formulários HTML e o URLSearchParams escrevem: o espaço vira + e ~ ! ' ( ) também são codificados. "café au lait & crème" fica caf%C3%A9+au+lait+%26+cr%C3%A8me.

Os três trabalham com bytes UTF-8, então um emoji (um par substituto em JavaScript) ocupa quatro bytes: 😀 é %F0%9F%98%80. A metade solta de um par substituto não tem forma UTF-8, e a função do JavaScript lança "URI malformed"; esta ferramenta informa a posição.

Decodificando e o que pode dar errado

Decodificar reverte cada escape. Um sinal de mais só é um espaço no estilo de formulário, e %2B é sempre um mais. Há dois tipos de falha: um % sem dois dígitos hex depois (100%, %zz) e escapes que não formam UTF-8 válido, como %C3%28. A ferramenta nomeia cada problema com a posição e deixa o que não pôde decodificar como estava, para você ver onde está. Ative "Parar no primeiro erro" se preferir não ter saída quando algo falha. Se o resultado ainda tem escapes, como %2520 virando %20, provavelmente foi codificado duas vezes e um botão decodifica de novo.

Desmontando uma URL

O analisador separa primeiro o endereço exatamente como escrito, seguindo a RFC 3986, e depois compara cada parte com o que o analisador URL do navegador faz e mostra a diferença embaixo: a porta padrão 443 é descartada, o ./ do caminho é resolvido e um host como münchen.de é escrito xn--mnchen-3ya.de. Uma consulta vazia (?) não é o mesmo que nenhuma consulta.

Editando a string de consulta

Cada parâmetro é uma linha com nome e valor. A ordem e os nomes repetidos são mantidos; os parâmetros que você não toca voltam exatamente como estavam escritos, e os editados são codificados com %20 ou com + se a consulta já o usava. Reordene, remova ou adicione linhas e copie a URL reconstruída. Veja também a ferramenta Base64 e o formatador JSON quando um parâmetro tiver dados codificados. Tudo roda no seu navegador, nada é enviado e nenhum link é aberto por você.

Perguntas frequentes

Qual a diferença entre encodeURI e encodeURIComponent?

O encodeURIComponent codifica os caracteres com significado na sintaxe da URL (/ ? : @ & = + $ # , ;), então serve para um valor isolado. O encodeURI os deixa, então serve para um endereço completo. Usar encodeURI num valor deixa um & ou = dentro dele mudar o sentido da URL.

O espaço deve ser %20 ou +?

No caminho, sempre %20. Na consulta, um + é espaço apenas na codificação de formulário, usada pelos formulários HTML e pelo URLSearchParams. Muitos servidores leem os dois, mas %20 é mais seguro, e %2B é sempre um mais literal.

Por que o texto decodificado ainda tem sinais %?

Ou foi codificado duas vezes (%2520 vira %20 e depois um espaço), ou os sinais de porcentagem são reais. Um botão aparece quando o resultado ainda tem escapes válidos.

A URL é enviada para algum lugar?

Não. Tudo é calculado no seu navegador e os links são mostrados como texto, sem nunca serem abertos ou buscados.