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 - _ . ! ~ * ' ( ).
name%3DZo%C3%AB%20%26%20Tom%20%2F%20caf%C3%A9%3Fid%3D42%23top
Analisador de URL e editor de query string
| Protocolo | https: |
|---|---|
| Host | shop.example.com |
| Porta | 8443 |
| Caminho | /search/trail%20shoes |
| Query | ?q=trail+running&size=10&color=blue%20%26%20green&utm_source=newsletter |
| Fragmento | #reviews |
| Origem | https://shop.example.com:8443 |
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
- 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.
- Digite ou cole o texto. O resultado é atualizado enquanto você digita; marque "Cada linha separadamente" para uma lista.
- Se a decodificação falhar, leia a mensagem: ela indica a posição e a sequência quebrada.
- 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 & 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.