Também disponível em: English · Español · Français · العربية
Codificador e Decodificador de URL Online
Codifique valores, URLs inteiras ou campos de formulário — e decodifique de volta — direto no navegador, sem enviar nada para lugar nenhum.
O que é um codificador e decodificador de URL
Uma URL só pode carregar um conjunto limitado de caracteres sem ambiguidade: letras, dígitos e um punhado de símbolos reservados como : / ? # & que servem para separar suas partes — protocolo, domínio, caminho, query string. Qualquer coisa fora disso — espaço, acento, emoji, ou até um símbolo reservado usado como dado em vez de separador — precisa ser escapada com sequências %XX, onde XX é o byte em hexadecimal. Percent-encoding é o nome oficial dessa escapada; url encode é como todo mundo chama no dia a dia.
Codificar pega um valor e troca cada caractere problemático pela sequência %XX correspondente. Decodificar faz o caminho inverso, trocando cada %XX pelo byte original. O problema é que existe mais de uma forma certa de fazer isso, dependendo do que você está codificando — e é aí que nasce a maioria dos bugs de URL.
Como usar
- Escolha o modo: Codificar para escapar caracteres especiais, ou Decodificar para reverter uma sequência já codificada.
- Diga o que está codificando: escolha entre valor isolado, URL inteira ou campo de formulário — cada opção usa um conjunto diferente de caracteres preservados.
- Cole e copie. Digite ou cole o conteúdo na entrada, veja o resultado atualizar em tempo real, e clique em Copiar quando estiver pronto.
Os três modos, e quando usar cada um
Um valor isolado usa encodeURIComponent, a função certa para qualquer coisa que vai virar o valor de um parâmetro numa query string — um termo de busca, um e-mail, um nome com espaço. Ela escapa tudo que não for letra, dígito ou - . _ ~, incluindo os próprios separadores de URL: um & ou um = dentro do seu valor viram %26 e %3D, então não quebram a query string ao redor.
Uma URL inteira usa encodeURI, que existe justamente para não destruir a estrutura que você está tentando preservar: ela deixa intactos onze caracteres a mais que encodeURIComponent escaparia — # $ & + , / : ; = ? e @. É a diferença entre passar https://site.com/busca?q=a b por encodeURIComponent, que também escaparia a barra e os dois-pontos e quebraria a URL inteira, e usar encodeURI, que escapa só o espaço e preserva o resto. Regra prática: encodeURI numa URL completa, encodeURIComponent num pedaço isolado que vai entrar dentro dela.
Campo de formulário existe por causa de uma pegadinha clássica: o envio de formulário HTML e o URLSearchParams codificam espaço como +, não como %20 — new URLSearchParams({q: 'a b'}) produz q=a+b. Só que decodeURIComponent('a+b') devolve a string a+b, sinal de mais incluído, porque + não faz parte da sintaxe de percent-encoding, só da convenção de formulários. Decodifique de forma ingênua uma query que veio de um formulário e cada espaço vira um + literal na tela. Por isso o modo de formulário existe separado dos outros dois.
Um detalhe que quase ninguém comenta: como este modo delega ao próprio URLSearchParams em vez de reimplementar a regra, ele acaba sendo mais rigoroso que o encodeURIComponent. Escapa quatro dos cinco caracteres que a outra função ignora — ! ' ( ) viram %21 %27 %28 %29 — e deixa só o asterisco de fora.
Limites honestos
encodeURIComponent não escapa cinco caracteres que a RFC 3986 não considera unreserved: ! ' ( ) e *. O conjunto que ela realmente preserva é só A–Z, a–z, 0–9 e - . _ ~. Na prática, isso significa que um valor com apóstrofo ou parênteses pode sair da ferramenta codificado e ainda assim confundir um parser mais rígido lá na frente — vale conferir a documentação do endpoint que vai receber o dado antes de assumir que está tudo escapado.
Uma sequência de porcentagem truncada não é tentativa silenciosa, é erro na hora: decodeURIComponent('%E0%A4%A') lança URIError em vez de devolver algo parecido. Se você colar algo cortado no meio — por exemplo, um link truncado ao copiar — o erro aparece no lugar do resultado, e é assim mesmo que deveria ser. E ao decodificar uma URL inteira, o modo é o inverso exato do encodeURI: um %2F continua %2F, porque virar barra mudaria a forma da URL e não só o texto dela.
E como as outras ferramentas daqui, esta roda inteira no navegador: nada do que você digita sai da sua máquina, não existe requisição de rede, e nada fica salvo depois que você recarrega a página.
Por que é grátis
Escapar e desescapar caracteres numa string é trabalho de milissegundos para qualquer navegador moderno — não existe servidor para pagar, fila para gerenciar ou motivo para pedir cadastro. A ferramenta roda local, então não tem custo nenhum para repassar.