Codificar uma busca
hello world & more
hello%20world%20%26%20more
Os espaços viram %20 e o & vira %26, para que ele não seja confundido com um separador de parâmetro de query.
Codifique e decodifique componentes de URL com segurança.
Última atualização
Um codificador de URL (também chamado de percent-encoder ou codificador de URI) substitui caracteres reservados ou inseguros em URLs por % seguido de dois dígitos hexadecimais. Os devs recorrem a ele na hora de montar query strings, escapar segmentos de path, compartilhar URLs com espaços ou caracteres não-ASCII e depurar redirects.
URLs só aceitam um conjunto pequeno de caracteres ASCII. Qualquer coisa fora disso — espaços, acentos, emojis ou símbolos reservados como ?, #, &, = quando usados como dado — precisa passar pelo percent-encoding para sobreviver à viagem do navegador até o servidor.
O JavaScript expõe duas funções de codificação: encodeURI (preserva a estrutura da URL: /, ?, #, &) e encodeURIComponent (codifica tudo que é reservado). Use encodeURIComponent para *valores* que você coloca dentro de query strings, e encodeURI para *URLs inteiras* que você quer manter funcionais.
% mais dois dígitos hex — por exemplo, espaço vira %20.: / ? # & = +) têm significado dentro da estrutura da URL. Eles precisam ser codificados quando aparecem como dado, e não como separador.Escolha Codificar se você tem texto cru e quer deixá-lo seguro para URL. Escolha Decodificar se você tem uma string com % e quer recuperar o texto original.
Use encodeURIComponent (codifica tudo que é reservado) para valores de query string; use encodeURI (preserva a estrutura) para URLs inteiras.
Cole o texto cru ou a URL codificada. A entrada com várias linhas funciona para decodificar em lote.
Copie o valor codificado ou decodificado. A conversão acontece localmente, no seu navegador, então qualquer dado sensível na URL fica na sua máquina.
Os caracteres que você mais vai ver codificados, com a forma percent-encoded de cada um. A semântica dos caracteres reservados vem da RFC 3986.
| Caractere | Codificado | Por quê |
|---|---|---|
| espaço | %20 | Espaços não são permitidos em URLs |
! | %21 | Reservado em alguns servidores |
# | %23 | Marca o início do fragmento |
$ | %24 | Caractere reservado |
& | %26 | Separa parâmetros de query |
+ | %2B | Significa espaço em corpos form-encoded |
/ | %2F | Separador de path |
: | %3A | Separa esquema e host |
= | %3D | Separa chave e valor na query string |
? | %3F | Marca o início da query string |
@ | %40 | Separa userinfo e host |
| byte UTF-8 | %C3%A9 | Cada byte não-ASCII é codificado |
hello world & more
hello%20world%20%26%20more
Os espaços viram %20 e o & vira %26, para que ele não seja confundido com um separador de parâmetro de query.
café
caf%C3%A9
é em UTF-8 é a sequência de bytes 0xC3 0xA9, então a forma codificada tem *dois* grupos %XX para esse único caractere.
https://example.com/path?q=hello world
https://example.com/path?q=hello%20world
https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world
encodeURI mantém a estrutura da URL (barras, ?, =) intacta. Já encodeURIComponent codifica tudo que é reservado — use nele os valores que você coloca dentro de uma query string, nunca em uma URL inteira.
encodeURI em valores de query string — o & e o = passam batido pela codificação e quebram o parsing dos parâmetros.%2520 no lugar de %20 é o sinal clássico de bug por dupla codificação.+ significa espaço em corpos application/x-www-form-urlencoded, mas é um + literal no path ou na query da URL.% seguido de dois dígitos hexadecimais.encodeURI preserva os caracteres de estrutura da URL (/, ?, #, &, =, +). encodeURIComponent codifica todos eles, que é exatamente o que você quer para *valores* individuais inseridos dentro de uma URL — valores de parâmetros de query, segmentos de path, fragmentos. Veja a documentação no MDN para encodeURI e encodeURIComponent.%20?%20, o percent-encoding do caractere de espaço ASCII (0x20 em hexadecimal).decodeURI, decodeURIComponent ou qualquer decodificador de URL desfaz o percent-encoding, devolvendo os caracteres originais.