* Seu conteúdo não é transferido para o servidor. Todos os cálculos são realizados diretamente no navegador
Texto simples
Texto codificado

O que é codificação de URL?

A codificação de URL (também chamada de percent-encoding) é o mecanismo definido pela RFC 3986 para transportar dados dentro de URLs. Caracteres que têm significado reservado em uma URL (como ? / # & =) ou que estão fora do intervalo imprimível ASCII são reescritos como um ou mais triplas %XX, onde XX é o valor hexadecimal do byte. Decodificadores revertem o processo byte a byte.

Percent-encoding é um formato de transporte, não um mecanismo de segurança. Qualquer pessoa que receba uma string codificada pode decodificá-la trivialmente; não confunda codificação com criptografia ou hashing.

Como escolher o modo

Esta ferramenta expõe os três modos de codificação que todo desenvolvedor eventualmente encontra. O modo que você escolhe determina quais caracteres são codificados.

Modo Componente (encodeURIComponent). Use quando codificar um único valor que será incorporado dentro de uma URL — um valor de query string, um segmento de caminho, um fragmento. Codifica todos os caracteres reservados de URL para que o resultado seja seguro em qualquer posição.

Modo URL inteira (encodeURI). Use quando você já tem uma URL montada e só quer escapar caracteres realmente inseguros (espaços, não-ASCII). Mantém os caracteres estruturais : / ? # & = + intactos para que a URL permaneça parseável.

Modo Formulário (application/x-www-form-urlencoded). Use quando construir um corpo de requisição HTTP cujo Content-Type é application/x-www-form-urlencoded. Espaço vira +, novas linhas são normalizadas para CRLF (%0D%0A), e o conjunto de caracteres espelha o que o navegador envia ao submeter um formulário HTML.

Referência de caracteres reservados

Como cada modo codifica os caracteres reservados comuns
CaractereComponenteURL inteiraFormulário
(space)%20%20+
!!!%21
"%22%22%22
#%23#%23
$%24$%24
%%25%25%25
&%26&%26
'''%27
(((%28
)))%29
****
+%2B+%2B
,%2C,%2C
/%2F/%2F
:%3A:%3A
;%3B;%3B
=%3D=%3D
?%3F?%3F
@%40@%40
[%5B%5B%5B
]%5D%5D%5D
~~~%7E
%0A%0A%0D%0A
%E4%B8%AD%E4%B8%AD%E4%B8%AD

Componente codifica tudo exceto o conjunto não reservado A–Z a–z 0–9 - _ . ! ~ * ' ( ). URL inteira adicionalmente preserva o conjunto estrutural ; , / ? : @ & = + $ # !. Formulário codifica o mesmo conjunto que Componente mais ! ' ( ) ~ (mas não *), transforma espaço em + em vez de %20, e normaliza \n / \r / \r\n para \r\n (codificado como %0D%0A) — correspondendo ao que o navegador envia para uma submissão application/x-www-form-urlencoded.

Casos de uso comuns

Construindo query strings seguras programaticamente: ao construir URLs como /search?q=[valor] manualmente, passe o valor pelo modo Componente para que caracteres como & ou = dentro do valor não corrompam a URL ao redor.

Incorporando uma URL dentro de outra: ao passar uma URL como parâmetro de outra (por exemplo, uma URL de redirecionamento OAuth), você deve codificar a URL interna com modo Componente — não URL inteira — para que / : ? & dentro da URL interna não sejam interpretados como estrutura da URL externa.

Enviando dados de formulário com fetch: ao fazer POST de um corpo com Content-Type: application/x-www-form-urlencoded, o corpo deve ser codificado com semântica do modo Formulário. Este modo produz saída byte-compatível com o que o navegador envia.

Limitações

Codificação de URL não é criptografia. Qualquer pessoa pode decodificar a saída com uma única chamada de função; nunca use codificação para esconder segredos.

A escolha do modo importa. Passar uma URL inteira pelo modo Componente quebra a URL (toda / vira %2F). Passar um valor de query pelo modo URL inteira pode deixar caracteres reservados perigosos (um & no valor ainda parece um separador de parâmetro). Na dúvida, escolha Componente.