Codificador e decodificador de URL

Roda no seu navegador; nada é enviado

Aplique percent-encoding em textos para uma URL, decodifique de volta, ou separe uma URL em partes e parâmetros de query.

Text

Encodes everything except letters, digits and - _ . ! ~ * ' ( ). Use it for one query value or path segment.

Encoded

The encoded text appears here as you type.

Ready

O que é codificação de URL?

A codificação de URL, também chamada de percent-encoding (RFC 3986), substitui caracteres que não são permitidos ou têm significado especial numa URL por um % seguido de dois dígitos hexadecimais. Um espaço vira %20, & vira %26 e / vira %2F. Os outros caracteres são convertidos primeiro em bytes UTF-8, então é vira %C3%A9.

Isso importa porque alguns caracteres estruturam a própria URL. ? inicia a query string, & separa parâmetros, = separa um nome do seu valor e # inicia o fragmento. Se um termo de busca contém & e não é codificado, o servidor lê esse & como o início de um novo parâmetro.

Codifique cada valor separadamente, não a URL inteira. Codificar uma URL completa como valor também codifica o ://, as / e o ?, o que a quebra; é para isso que existe o modo de URL inteira, quando você só precisa corrigir espaços e acentos numa URL que, fora isso, está correta.

Como usar esta ferramenta

  1. 1Escolha Encode, Decode ou Parse. Trocar de modo mantém seu texto; Swap (Alt+Shift+S) move a saída para a entrada e alterna entre Encode e Decode.
  2. 2Para codificar, escolha o que é o texto: um valor (encodeURIComponent), uma URL inteira (encodeURI) ou dados de formulário, em que espaços viram +. A linha acima do editor diz exatamente quais caracteres cada opção mantém.
  3. 3Para decodificar, cole o texto codificado. Ative + means space para dados de formulário e query strings enviadas por formulários HTML. Se uma sequência estiver malformada ou não for UTF-8, ela fica marcada no editor e F8 leva até ela.
  4. 4Se o resultado ainda tiver %XX, o texto foi codificado duas vezes; Decode again na barra de status decodifica mais uma vez.
  5. 5Each line separately trata cada linha como um valor próprio, para listas de valores. Parse separa uma URL em scheme, host, porta, path, fragmento e uma tabela de parâmetros de query decodificados, que você pode copiar como JSON.

Solução de problemas

% precisa ser seguido de dois dígitos hexadecimais
O texto tem um sinal de porcentagem literal, como 100%, ou uma sequência que foi cortada. Numa URL, um sinal de porcentagem de verdade é escrito %25.
%E9 não é UTF-8 válido neste ponto
O texto foi codificado por um codificador antigo que usava Latin-1 em vez de UTF-8, então é virou %E9 em vez de %C3%A9. Codifique de novo o texto original, ou peça para quem envia usar UTF-8.
Um + virou espaço, ou um espaço continuou +
+ só significa espaço em dados de formulário (application/x-www-form-urlencoded), como uma query string enviada por um formulário HTML. Ligue ou desligue + means space de acordo com a origem do texto.
Não é uma URL absoluta
Parse precisa do scheme e do host, como https://api.example.com. Paths como /users?page=2 são relativos a uma página e não podem ser lidos sozinhos.

Perguntas frequentes

Qual a diferença entre encodeURI e encodeURIComponent?

encodeURIComponent codifica tudo, menos letras, dígitos e - _ . ! ~ * ' ( ), então é o certo para um único valor. encodeURI mantém intactos os caracteres que estruturam uma URL, como : / ? # & = +, então é o certo para uma URL inteira que só precisa ter caracteres inseguros corrigidos.

Um espaço deve ser %20 ou +?

Num path e na maioria das APIs, use %20. + só significa espaço em dados de formulário, que é o que os navegadores enviam em formulários HTML e o que muitas query strings usam. Ao decodificar uma query string gerada por um formulário, ative + means space.

Por que o Parse mostra uma URL diferente da que eu colei?

O Parse usa o parser de URL do navegador, que normaliza a URL: deixa o scheme e o host em minúsculas, remove uma porta padrão como :443 e aplica percent-encoding em espaços e caracteres não ASCII. Copy URL copia essa forma normalizada.

Minha entrada é enviada para um servidor?

Não. A codificação, a decodificação e o parse rodam no seu navegador, e nada do que você cola é enviado. Para sobreviver a um reload, o que você cola fica no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler.