100% client-side: Toda a codificação e decodificação acontece no seu navegador. Nenhum dado é enviado para qualquer servidor.

Codificar / Decodificar

Teste rápido — clique em um caractere para inseri-lo:

espaçoSP & = ? # / @ + % " < > 🚀 ação

Saída

Parser de URL

Cole uma URL acima para ver seus componentes

O que é Codificação URL?

A codificação URL, formalmente conhecida como percent-encoding, é uma forma de representar caracteres que não são permitidos ou têm significado especial em uma URL. O mecanismo substitui caracteres inseguros ou reservados por um sinal de porcentagem (%) seguido de dois dígitos hexadecimais representando o valor do byte UTF-8 do caractere. Por exemplo, um espaço (ASCII 32 / 0x20) se torna %20, e um e-comercial (&) se torna %26.

URLs são restritas a um subconjunto de caracteres ASCII imprimíveis. Qualquer caractere fora desse conjunto seguro — incluindo caracteres Unicode como emoji e scripts não-latinos, caracteres com significado especial na sintaxe de URL (como ?, #, / e =), e caracteres de controle invisíveis — deve ser codificado antes de ser incluído em uma URL.

encodeURI vs encodeURIComponent

JavaScript fornece duas funções nativas para codificação URL, e escolher a correta importa para a correção:

FunçãoPropósitoCaracteres NÃO codificados
encodeURI() Codificar uma URL completa e estruturalmente válida A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
encodeURIComponent() Codificar um componente individual de URL (ex: um valor de query) A-Z a-z 0-9 - _ . ! ~ * ' ( )
decodeURI() Reverso do encodeURI Não decodifica caracteres que o encodeURI não codificaria
decodeURIComponent() Reverso do encodeURIComponent Decodifica todas as sequências percent-encoded

A regra geral: use encodeURIComponent para valores que você está inserindo em uma URL (nomes e valores de query parameters, segmentos de path com dados do usuário). Use encodeURI apenas quando já tem uma URL completa e estruturalmente correta e simplesmente quer garantir que é segura para transmissão.

Caracteres Comuns que Precisam de Codificação URL

CaractereForma CodificadaPor que precisa de codificação
espaço%20 (ou + em query strings)Espaços não são permitidos em nenhuma parte de uma URL
&%26Delimitador entre query parameters; deve ser codificado em valores
=%3DSepara nome do valor do parâmetro; deve ser codificado em valores
?%3FIntroduz a query string; deve ser codificado em segmentos de path e valores
#%23Introduz um fragmento; tudo após # não é enviado ao servidor
/%2FSeparador de path; codifique quando / faz parte de um valor
+%2BSignifica "espaço" em query strings form-encoded; codifique o + literal com %2B
@%40Usado na authority (userinfo@host); codifique em valores de path/query
%%25O próprio caractere de escape; um % literal deve ser codificado como %25

Padrões de Codificação URL e Casos Especiais

A codificação URL (codificação percentual) substitui caracteres inseguros com um % seguido de dois dígitos hexadecimais. Embora o conceito seja simples, as regras de quando e o que codificar são nuanceadas, e errar causa bugs sutis em aplicações web.

Os Três Tipos de Codificação URL

  • encodeURIComponent: Codifica tudo exceto A-Z a-z 0-9 - _ . ! ~ * ' ( ). Use para codificar valores de parâmetros, segmentos de caminho e qualquer dado fornecido pelo usuário que será parte de uma URL.
  • encodeURI: Codifica caracteres especiais mas preserva caracteres de estrutura URL como : / ? # [ ] @. Use apenas ao codificar uma URL completa que pode conter caracteres não-ASCII mas já tem estrutura válida.
  • Codificação de formulário: Similar ao encodeURIComponent mas codifica espaços como + em vez de %20. É o que formulários HTML usam por padrão. Ao construir query strings manualmente, esteja ciente dessa diferença.

Erros Comuns de Codificação URL

  • Codificação dupla: Codificar uma URL já codificada transforma %20 em %2520. Sempre verifique se os dados já estão codificados antes de codificar novamente.
  • Não codificar segmentos de caminho: Caminhos de arquivo com espaços ou caracteres especiais devem ser codificados individualmente.
  • Codificar a URL inteira: Usar encodeURIComponent em uma URL completa codifica as barras, dois pontos e pontos de interrogação — quebrando a estrutura da URL.
  • Tratamento de Unicode: Caracteres não-ASCII (como é, ñ, 日本語) são primeiro convertidos para bytes UTF-8, depois cada byte é codificado percentualmente. O caractere é se torna %C3%A9 (dois bytes em UTF-8).

Perguntas Frequentes

O que é codificação URL?

Codificação URL (percent-encoding) converte caracteres especiais e não-ASCII em uma URL para um formato seguro, substituindo cada caractere por um % seguido de dois dígitos hexadecimais representando seu valor de byte UTF-8. Isso garante que as URLs contenham apenas caracteres do subconjunto ASCII permitido definido na RFC 3986, prevenindo erros de parse e ambiguidade.

Qual é a diferença entre encodeURI e encodeURIComponent?

encodeURI é para URLs completas — deixa caracteres estruturais como ://, /, ?, & e = sem codificação porque fazem parte da estrutura da URL. encodeURIComponent é para valores individuais (como valores de query parameters) — codifica esses caracteres estruturais também, para que o valor não quebre a estrutura da URL. Sempre use encodeURIComponent ao inserir dados fornecidos pelo usuário em uma URL.

Qual é a diferença entre %20 e + para espaços em URLs?

%20 é a codificação percent-encoded universalmente correta de um espaço e é válida em qualquer parte de uma URL. O sinal + representa um espaço apenas dentro da query string e apenas quando o content type é application/x-www-form-urlencoded. No path de uma URL, + é um sinal de mais literal, não um espaço. Para máxima compatibilidade e clareza, prefira %20 a + ao codificar espaços em URLs construídas programaticamente.

Como caracteres Unicode são codificados em URLs?

Caracteres Unicode não são diretamente percent-encoded a partir de seu code point Unicode. Em vez disso, o caractere é primeiro convertido para sua sequência de bytes UTF-8, e então cada byte é percent-encoded individualmente. O encodeURIComponent do JavaScript lida com isso automaticamente, tornando-o a opção mais segura para codificar qualquer entrada do usuário que possa conter caracteres não-ASCII.

Ferramentas Relacionadas