Codificar e decodificar URL

Codifique parâmetros ou URLs inteiras — com a função certa para cada caso.

🔒 Roda localmente no seu navegador — nada é enviado.

Analisador de query string

Edite qualquer nome ou valor abaixo — a URL completa é reconstruída e recodificada.

Sobre esta ferramenta

Espaços, acentos, &, = e a maioria dos símbolos não podem ir crus numa URL — precisam virar sequências %XX (percent encoding). A escolha crítica é qual função: encodeURIComponent escapa tudo, incluindo &, = e ?, e é a correta para valores de parâmetros; encodeURI mantém a estrutura da URL e serve apenas para codificar uma URL completa.

Confundi-las é um bug clássico: encodeURI num parâmetro quebra silenciosamente valores com & ou =. Leia a comparação completa em encodeURI vs encodeURIComponent. O analisador de query string decodifica cada parâmetro de uma URL colada numa tabela editável — mude um nome ou valor e a URL completa é reconstruída. Tudo roda no navegador — mais ferramentas em dec0de.dev.

A codificação de URL (por porcentagem) substitui os caracteres que quebrariam uma URL por um % seguido do valor do byte em hex — um espaço vira %20, um e-comercial %26. É assim que você coloca com segurança termos de busca, alvos de redirecionamento, tokens e texto não-ASCII num link ou query string. Caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), espaços e tudo fora do conjunto não reservado (letras, dígitos e - _ . ~) são codificados; o resto fica legível.

Perguntas frequentes

encodeURIComponent ou encodeURI — qual usar?

Use encodeURIComponent para um único valor de consulta ou segmento de caminho — codifica &, =, ?, / e mais. Use encodeURI só para uma URL inteira que você não quer quebrar. Codificar um valor com encodeURI é um bug clássico.

Por que um espaço às vezes é %20 e às vezes +?

No caminho de uma URL, um espaço é %20. Numa query string no formato form-urlencoded, um espaço costuma ser escrito como +. Ambos decodificam para um espaço, e o botão «+ significa espaço» alterna entre os dois modos.

Posso codificar uma lista inteira de valores de uma vez?

Sim. Ative «Lote: um valor por linha» e cada linha é codificada ou decodificada de forma independente, mantendo a ordem e as linhas em branco. O resultado pode ser copiado ou baixado como arquivo de texto.

Quais caracteres realmente precisam ser codificados?

Caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =), espaços, texto não-ASCII e caracteres de controle. O conjunto não reservado — letras, dígitos e - _ . ~ — fica sempre como está.

Por que a decodificação falha com «escape inválido»?

Um % deve ser seguido de exatamente dois dígitos hex, e os bytes resultantes precisam formar UTF-8 válido. Um % literal não codificado (escreva %25), uma sequência truncada como %2 ou bytes de outro charset quebram a decodificação. Esta ferramenta nomeia a sequência problemática e sua posição, e leva você até ela.

Meus dados de URL ficam privados?

Sim. Codificação, decodificação e análise de query string rodam no seu navegador. Sua entrada é lembrada apenas no local storage deste navegador para sobreviver a um recarregamento — o botão Limpar apaga tudo. Nada é enviado a lugar algum.