Codificado em Porcentagem

Texto Decodificado

O que é o Decodificador de URL?

Cole uma string codificada em porcentagem no painel da esquerda e o painel da direita mostra o original. Por baixo dos panos ele roda decodeURIComponent, que percorre cada sequência %XX da entrada, trata esses pares hexadecimais como bytes UTF-8, e reconstrói os caracteres originais. Então %20 vira espaço, %26 vira &, %E2%9C%85 vira uma marca de seleção. O caminho inverso fica no Codificador de URL.

Por que decodificar é traiçoeiro? Porque nem todo % que aparece por aí faz parte de uma sequência válida codificada em porcentagem. Um % sozinho seguido de caracteres não hexadecimais (%G1, % no fim da string) está malformado e o decodificador vai lançar um URIError: URI malformed. Esta página captura isso e mostra uma mensagem amigável de "Codificação inválida" em vez de uma stack trace, então uma colagem corrompida não quebra a página. As regras exatas do que conta como válido vivem na RFC 3986 §2.1 e no Padrão URL da WHATWG.

Cuidado com codificação dupla. Se você decodifica uma string e a saída AINDA contém caracteres % (por exemplo, recebeu Ava%2520Chen em vez de Ava Chen), o valor foi codificado duas vezes em algum ponto da cadeia — geralmente um proxy ou framework que codificou automaticamente um valor já codificado. Decodificar de novo te leva ao restante do caminho. As notas da Wikipédia sobre codificação dupla têm uma boa explicação de como isso acontece. Tudo roda no seu navegador. Sem upload, sem servidor, sem logs.

Como Usar o Decodificador de URL

Três passos. A página atualiza enquanto você digita — sem botão de Converter.

1

Cole sua string codificada ou clique em Exemplo

Solte uma string codificada em porcentagem no painel da esquerda. Clique em Exemplo para carregar um caso realista. Entrada de exemplo:

Ava%20Chen%20%26%20friends%3F%20customer%40shop.com%20%20100%25%20off!

Entrada malformada (um <code>%</code> sozinho, um par hexadecimal inválido como <code>%G1</code>) vai aparecer como mensagem "Codificação inválida" no painel de saída — veja a <a href="https://tc39.es/ecma262/#sec-decodeuricomponent-encodeduricomponent" target="_blank" rel="noopener">especificação ECMAScript para decodeURIComponent</a> para as regras exatas de falha.

2

Leia a saída decodificada

O painel da direita mostra o texto decodificado. %20 vira espaço, %26 vira &, %3F vira ?, %40 vira @, %25 vira %. Atualiza enquanto você digita.

3

Copie ou baixe

Clique em Copiar para colocar o texto decodificado na sua área de transferência, ou em Baixar para salvar como arquivo .txt. Use Limpar no painel de entrada para começar de novo. Para ir no sentido contrário, dá um pulo no Codificador de URL.

Quando Você Realmente Vai Usar Isso

Ler o que está realmente em um parâmetro de consulta

Uma URL como ?customer=Ava%20Chen&tag%5B0%5D=red é difícil de bater o olho com os códigos de porcentagem ainda no lugar. Cole um único valor aqui e você recebe Ava Chen ou tag[0] de volta, o que deixa óbvio se o parâmetro é o que você esperava. Para destrinchar uma URL inteira, o Parser de URL trata os parâmetros de consulta automaticamente.

Depurar valores com codificação dupla

Você cola Ava%2520Chen, decodifica uma vez, recebe Ava%20Chen. Essa camada extra é a prova cabal — em algum lugar um proxy, framework ou biblioteca codificou o valor uma segunda vez. Decodifique de novo para conseguir a string real. As specs do OAuth são culpadas frequentes porque valores de redirect_uri costumam passar por camadas que cada uma "ajuda" recodificando.

Inspecionar URLs de webhook e analytics nos logs

Quando algo falha em produção, a URL no log de acesso geralmente está totalmente codificada — %7B%22event%22%3A%22signup%22%7D em vez do JSON que o webhook realmente enviou. Cole aqui e você recebe {"event":"signup"} de volta, que é algo que dá para ler.

Decodificar um magic link ou URL de redefinição de senha

Quando um cliente como Marco Rivera diz "o link de redefinição está quebrado", o link contém um token, um email e um destino de redirecionamento — todos codificados em porcentagem. Decodificar o parâmetro suspeito mostra se o email é o endereço certo, se o token sobreviveu a uma mutilação do cliente de email, ou se o redirect URI ficou truncado.

Perguntas Frequentes

O que acontece com entrada malformada como % sozinho ou %G1?

O decodeURIComponent nativo lança um URIError: URI malformed em uma sequência que não é um par hexadecimal %XX válido. Esta página captura isso e escreve "Codificação inválida: ..." no painel de saída em vez de quebrar. As causas mais comuns são um % literal solto que deveria ter sido %25, ou um copia-cola que perdeu um dígito hexadecimal final.

Como sei se minha entrada está com codificação dupla?

Decodifique uma vez. Se a saída ainda tiver caracteres % (especialmente %20, %2F, %3A) e era para ser texto puro, ela foi codificada duas vezes. Decodifique a saída da primeira decodificação. Três rodadas é raro mas possível — geralmente significa uma cadeia de três serviços diferentes em que cada um codificou o mesmo valor.

E os sinais de + — eles deveriam virar espaços?

Não com decodeURIComponent — ele deixa + em paz. A convenção +-como-espaço pertence a application/x-www-form-urlencoded (envios de formulário HTML), não à codificação porcentual geral de URL. Se sua entrada veio de um corpo de formulário e tem + para espaços, rode .replace(/\+/g, "%20") primeiro, depois decodifique. A spec WHATWG para application/x-www-form-urlencoded descreve essa situação de duas vertentes.

Funciona certinho com Unicode e emoji?

Sim. Sequências UTF-8 multi-byte codificadas em porcentagem (por ex. %E2%9C%85 para uma marca de seleção, %F0%9F%9A%80 para um foguete) decodificam direto de volta para os caracteres originais. A única forma disso falhar é se o codificador usou um charset que não é UTF-8, coisa que sistemas modernos não fazem.

A entrada que colo aqui é enviada para algum lugar?

Não. A decodificação roda inteiramente no seu navegador. Não há chamada de rede, nem log de servidor, nada sai da sua máquina. Tokens, emails, URLs assinadas — tudo seguro para colar.

Que tamanho de string posso decodificar aqui?

Há um limite de 256 KB na entrada. Se você tem centenas de KB de texto codificado em porcentagem, é quase certo que tem um payload que deveria ser decodificado no servidor em vez de colado numa ferramenta — payloads codificados desse tamanho geralmente indicam uso indevido de codificação de URL para um trabalho que pede base64 ou um corpo de requisição.

Outras Ferramentas de URL e Codificação

Decodificar é uma operação. Aqui está o que combina naturalmente com isso: