Codificar / decodificar URL
Codifique ou decodifique componentes de URL e query strings
Sobre esta ferramenta
Caracteres como espaços, e-comerciais e letras não ASCII não podem aparecer crus em uma URL, então são codificados em percentual: um espaço vira %20, 你 vira %E4%BD%A0. Esta ferramenta codifica texto para inclusão segura em URLs e decodifica strings com escapes percentuais de volta para texto legível, incluindo a convenção do + para espaços usada em query strings.
Dois modos de codificação são oferecidos porque o próprio JavaScript tem dois: o modo componente (encodeURIComponent) escapa tudo que poderia delimitar uma URL, que é o que você quer para um único valor de query string; o modo URI completo (encodeURI) preserva caracteres estruturais como /, ? e &, para quando você está codificando uma URL inteira que precisa continuar navegável.
A decodificação é rigorosa com sequências % malformadas — um % solto ou %ZZ é reportado como erro em vez de passar silenciosamente, que é exatamente como navegadores e servidores o tratariam.
Perguntas frequentes
- Quando uso o modo componente e quando uso o modo URI completo?
- Codificando um valor que vai dentro de uma URL (uma busca, um destino de redirecionamento, um e-mail em um parâmetro) → modo componente, para que & e = dentro do valor não quebrem a query string. Codificando uma URL completa para exibição ou transporte → modo URI completo, para que a estrutura da URL sobreviva.
- Por que + às vezes significa espaço?
- O formato application/x-www-form-urlencoded — usado por envios de formulário HTML e query strings — historicamente codifica espaços como +. Em caminhos de URL, + é só um sinal de mais. O decodificador aqui trata + como espaço, seguindo a semântica de query string; %20 sempre funciona em qualquer lugar.
- Por que minha string está codificada duas vezes (%2520)?
- %25 é a codificação do próprio %, então %2520 significa que o texto %20 foi codificado uma segunda vez. Acontece quando duas camadas de um sistema codificam cada uma por conta própria. Rode a decodificação duas vezes aqui para desembrulhar, e depois corrija a camada que não deveria estar codificando.
- Caracteres Unicode são tratados corretamente?
- Sim — o texto é codificado primeiro como UTF-8 e cada byte recebe escape percentual, conforme o padrão de URL do WHATWG. É por isso que um caractere CJK vira três grupos %XX.