Codificar e decodificar URL (url encode e decode)
Aplique ou desfaça o percent-encoding de um componente ou de um endereço completo, direto no navegador.
- Roda no seu navegador
Resultado
O resultado aparece aqui.
Componente ou URI completo
O percent-encoding (RFC 3986) troca cada byte fora do conjunto seguro por % e dois dígitos hexadecimais. O modo componente codifica também os separadores; o modo URI completo os preserva, para não quebrar o endereço.
| Caractere | Componente | URI completo |
|---|---|---|
| (espaço) | %20 | %20 |
| & | %26 | & |
| = | %3D | = |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| + | %2B | + |
| % | %25 | %25 |
| é | %C3%A9 | %C3%A9 |
Como o decode lê o texto
Cada %XX vira o byte correspondente (RFC 3986), e a sequência de bytes é lida como UTF-8: %C3%A9 vira é. O restante do texto passa sem mudança.
| Entrada | + como espaço | Resultado |
|---|---|---|
| a%20b%26c%3Dd%2F%C3%A9 | não | a b&c=d/é |
| a+b | não | a+b |
| a+b%2Bc | sim | a b+c |
Mais ou espaço
Pela RFC 3986 o + é só um +. Formulários HTML e query strings usam + para espaço; marque a opção quando o texto vier de um formulário. O %2B é sempre um sinal de mais, com ou sem a opção.
Erros do percent-encoding
- Escape truncado ou inválido, como 100% ou %G1, é recusado como formato inválido.
- %FF sozinho não forma texto UTF-8 e é recusado: o byte ff não existe em UTF-8.
- Texto vazio devolve resultado vazio.
Perguntas frequentes
Como fazer o url encode de um texto com acento?
Escolha o modo componente e digite o texto: pão de queijo vira p%C3%A3o%20de%20queijo. Cada letra acentuada gera dois bytes.
Como decodificar url com %20 e +?
O %20 sempre vira espaço. O + só vira espaço se você marcar a opção: a+b%2Bc dá a b+c com ela e a+b+c sem ela.
Por que o url decode acusa erro com %FF?
Porque os bytes decodificados precisam formar UTF-8 válido, e o byte ff nunca aparece em UTF-8. Texto codificado em Latin-1 costuma causar esse erro.