Codificar / decodificar URL — codificação percentual e analisador de URL

Codifique ou decodifique texto para URLs com codificação percentual nos modos componente, URL completa ou formulário, e edite os parâmetros de consulta de uma URL em uma tabela.

encodeURIComponent: para um valor de query ou um segmento de caminho. Escapa tudo, exceto A–Z a–z 0–9 - _ . ! ~ * ' ( ).

Codificado
name%3DZo%C3%AB%20%26%20Tom%20%2F%20caf%C3%A9%3Fid%3D42%23top

Analisador de URL e editor de query string

Protocolohttps:
Hostshop.example.com
Porta8443
Caminho/search/trail%20shoes
Query?q=trail+running&size=10&color=blue%20%26%20green&utm_source=newsletter
Fragmento#reviews
Origemhttps://shop.example.com:8443
Parâmetros de query (0) — decodificados, edite à vontade
URL reconstruída
https://shop.example.com:8443/search/trail%20shoes#reviews

Funciona totalmente no seu navegador. Nada do que você digita é enviado para nós nem armazenado. Ver todas as ferramentas grátis.

Encontrou um problema ou algo que poderia ser melhor? Lemos todas as mensagens e corrigimos rápido.

Este codificador e decodificador de URL converte texto de e para a codificação percentual (percent-encoding), o escape no estilo %20 que permite que espaços, e comerciais, acentos e emojis viajem com segurança dentro de uma URL. Ele oferece as três codificações que os desenvolvedores realmente confundem: o modo componente para um único valor de consulta ou segmento de caminho (encodeURIComponent), o modo URL completa, que deixa intacta a pontuação da própria URL (encodeURI), e o modo formulário, que é o que os formulários HTML e o URLSearchParams enviam, com + para o espaço.

A decodificação é rigorosa de propósito. Onde o decodeURIComponent do navegador só lança "URI malformed", esta ferramenta diz qual sequência % está quebrada e onde, e se os bytes não são UTF-8 válido (um sinal comum de que algo antes usou Latin-1). Abaixo do codificador, o analisador de URL divide qualquer URL em partes e lista os parâmetros de consulta em uma tabela editável que reconstrói a URL conforme você a altera.

Como usar

  1. Escolha Codificar ou Decodificar e depois o modo: Componente para um valor que você vai colocar em uma URL, URL completa para um endereço inteiro, Formulário para dados application/x-www-form-urlencoded.
  2. Digite ou cole o texto. O resultado é atualizado enquanto você digita; marque "Cada linha separadamente" para uma lista.
  3. Se a decodificação falhar, leia a mensagem: ela indica a posição e a sequência quebrada.
  4. Para inspecionar ou editar uma URL, cole-a no analisador, altere, adicione ou remova parâmetros de query e copie a URL reconstruída.

Perguntas frequentes

Qual é a diferença entre encodeURI e encodeURIComponent?

O encodeURIComponent escapa tudo, exceto letras, dígitos e - _ . ! ~ * ' ( ), então é seguro para um pedaço de uma URL, como um valor de consulta que pode conter & ou =. O encodeURI presume que você está passando uma URL inteira e deixa intactos os caracteres que estruturam a URL (: / ? # @ & = + $ , ;). Usar encodeURI em um valor é um bug clássico: um & dentro do valor o divide em dois parâmetros.

O espaço deve ser %20 ou +?

Os dois estão certos, em lugares diferentes. Na query string do envio de um formulário (application/x-www-form-urlencoded), o espaço é +, e um sinal de mais literal precisa ser %2B. Em todos os outros lugares, incluindo o caminho e a maioria das query strings montadas à mão, o espaço é %20, e + significa um mais literal. Se um servidor mostra sinais de mais onde deveria haver espaços, ou o contrário, os dois lados discordam sobre qual regra se aplica.

Por que recebo o erro "URI malformed"?

Ou um sinal % não é seguido de dois dígitos hexadecimais (por exemplo "100%" ou "%zz"), ou os bytes formam UTF-8 inválido, como %E9 sozinho, que é é em Latin-1, mas não em UTF-8. Um sinal de porcentagem literal deve ser escrito %25. Esta ferramenta informa a posição exata para você ver qual dos dois é.

Quais caracteres precisam ser codificados em uma URL?

A RFC 3986 só permite que letras, dígitos e - . _ ~ apareçam sem codificação em qualquer lugar. Os caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) precisam ser codificados quando aparecem dentro de um valor, e não como estrutura. Todo o resto, incluindo espaços, aspas, < >, letras fora do ASCII e emojis, deve sempre ser codificado, como os bytes UTF-8 do caractere.

A codificação de URL é uma forma de criptografia?

Não. A codificação percentual é um esquema de escape reversível e sem chave; qualquer pessoa pode decodificá-la na hora. Nunca confie nela para esconder um token ou dados pessoais em uma URL. Lembre-se também de que as URLs acabam no histórico do navegador, nos logs do servidor e nos cabeçalhos Referer, então segredos simplesmente não devem ir em query strings.

Referência de codificação: o que cada modo deixa intacto

• Componente (encodeURIComponent): deixa A–Z a–z 0–9 - _ . ! ~ * ' ( ). Use para valores de consulta, segmentos de caminho e tudo o que for montado por concatenação.

• URL completa (encodeURI): também deixa ; , / ? : @ & = + $ #. Use só para limpar uma URL completa que contém espaços ou caracteres fora do ASCII.

• Formulário (application/x-www-form-urlencoded): deixa A–Z a–z 0–9 * - . _ e transforma espaços em +. É isso que o URLSearchParams.toString() e os formulários HTML produzem.

• Conjunto não reservado da RFC 3986: A–Z a–z 0–9 - . _ ~. A interpretação mais rigorosa; codificar também ! ' ( ) * é sempre seguro.

Caracteres fora do ASCII são sempre codificados como seus bytes UTF-8: é vira %C3%A9, e o emoji 🌲 tem quatro bytes, %F0%9F%8C%B2.

Codificação dupla e outros bugs comuns

A codificação dupla acontece quando uma string já codificada é codificada de novo: %20 vira %2520, porque o próprio % é escapado como %25. Se você vê %25 seguido de dois dígitos hexadecimais em uma URL, algo foi codificado duas vezes. Decodifique uma vez e veja se o resultado ainda contém sequências %.

O erro oposto é montar uma URL concatenando strings sem codificar nada. Uma busca por "fish & chips" então envia q=fish e um parâmetro solto chamado " chips". Montar query strings com URLSearchParams, ou codificar cada valor com encodeURIComponent, evita os dois problemas.

Por fim, decodificar a entrada do usuário e depois inseri-la no HTML é como começa o cross-site scripting refletido. Decodifique para exibição só depois de escapar para HTML; o codificador de entidades HTML cuida dessa etapa.

Ferramentas grátis relacionadas

  • Gerador de links UTM — Crie links de rastreamento UTM limpos e consistentes para saber exatamente quais campanhas trazem clientes.
  • Codificador / decodificador Base64 — Codifique texto ou arquivos em Base64, transforme imagens em data URIs com trechos de CSS e <img>, e decodifique Base64 de volta em um arquivo com pré-visualização. Nada sai do seu navegador.
  • Codificador de entidades HTML — Escape texto para HTML com entidades nomeadas ou numéricas, decodifique referências no estilo &amp; de volta para caracteres e pesquise uma tabela de entidades.
  • Decodificador JWT — Decodifique o header e o payload de um JWT, leia a expiração em linguagem simples, verifique assinaturas HS, RS, PS e ES ou assine um novo token. Nada sai do seu navegador.