Codificador/decodificador de URL

Codifique texto para URLs com encodeURIComponent ou decodifique de volta, com opção de espacio como + para dados de formulário.

A codificação acontece localmente no seu navegador. Nada sai do seu dispositivo.

—

Como funciona

A ferramenta imita o que um navegador faz ao montar uma requisição: Codificar roda encodeURIComponent sobre a sua entrada, substituindo cada caractere que não seja uma letra segura, um dígito ou um de - _ . ~ pelos seus bytes UTF-8 escritos como %XX. Decodificar inverte isso: primeiro converte + de volta em espaços (a convenção de formulários) e depois resolve as sequências de porcentagem, sinalizando um erro quando um % não é seguido por dois dígitos hexadecimais válidos.

encodeURIComponent vs encodeURI
encodeURI assume que você está passando uma URL completa e deixa intactos os caracteres estruturais — : / ? # [ ] @ ! $ & ' ( ) * + , ; =. encodeURIComponent assume que você está codificando um componente (um valor de consulta, um segmento de caminho) e escapa todos eles também. Para valores de parâmetro, encodeURIComponent é a escolha mais segura, e é a que esta ferramenta usa.
Codificação de formulário (application/x-www-form-urlencoded)
O jeito que formulários HTML enviam query strings difere do percent-encoding puro em um ponto visível: um espaço vira + em vez de %20. A caixa "Espaço como +" reproduz essa convenção, e Decodificar sempre aceita + como espaço, então você consegue ir e voltar de tudo que um formulário gerou.
Caracteres reservados vs não reservados
Somente caracteres não reservados (letras, dígitos, - _ . ~) podem aparecer literalmente. Os reservados carregam sintaxe na URL, e qualquer coisa fora do ASCII precisa ser codificada em porcentagem pelos seus bytes UTF-8 — é por isso que um emoji vira uma sequência de quatro bytes como %F0%9F%98%80.

Perguntas frequentes

Devo codificar texto que já está codificado?

Não — codificar duas vezes produzifica dupla codificação. O próprio símbolo de porcentagem é escapado, então %20 vira %2520 e %40 vira %2540, que a maioria dos servidores entrega literalmente à sua aplicação. Se a sua string já tem sequências %XX, use Decodificar primeiro para normalizar, edite e então Codifique uma vez.

Parâmetros de consulta e segmentos de caminho exigem codificação diferente?

Codifique cada valor de parâmetro com encodeURIComponent e você estará sempre seguro. Por convenção, segmentos de caminho toleram alguns caracteres a mais (: @ + $), mas o encodeURIComponent escapa esses também — os servidores decodificam de volta, então o excesso é inofensivo. Reserve encodeURI para URLs completas, quando quiser preservar a estrutura : / ? #.

Por que & e = são codificados?

Porque são os delimitadores da query string: & separa parâmetros e = separa nome e valor. Se o seu valor contém um deles — por exemplo uma URL dentro de um parâmetro ou um código como SALE&2026 — ele precisa ser escapado (%26, %3D) para o servidor não dividir o valor no lugar errado.

Como emoji e texto não latino são tratados?

URLs só carregam ASCII, então todo o resto é codificado pelos seus bytes UTF-8, um %XX por byte. café vira caf%C3%A9 e um emoji vira quatro bytes como %F0%9F%98%80. Esse é o padrão moderno; a forma antiga %uXXXX do escape() do JavaScript não é válida em URLs e esta ferramenta não a produz.

Algo é enviado para um servidor?

Não. Codificar e decodificar são algumas linhas de JavaScript puro rodando no seu navegador. Suas URLs nunca saem do seu dispositivo, e não há conta, rastreamento ou requisição de rede associada à conversão.