URL Encoder, Decoder e Parser Online

Codifique, decodifique e analise URLs completas no navegador. Separa protocolo, host, porta, caminho, query string e fragmento. Usa APIs nativas, processamento 100% local, sem fetch externo.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Operação

Máximo: 5.000 caracteres

Como cada caractere fica codificado na URL

Deslize a tabela para o lado: são 5 colunas.

Caracteres comuns com o número de bytes em UTF-8, o resultado de encodeURIComponent para o valor de um parâmetro, o resultado de encodeURI para a URL inteira e o motivo
CaractereBytesNo parâmetroNa URL inteiraPor quê
espaço1%20%20não existe em URL; em formulário vira +
ç2%C3%A7%C3%A7letra fora do ASCII, vai byte a byte
ã2%C3%A3%C3%A3letra fora do ASCII, vai byte a byte
€3%E2%82%AC%E2%82%ACsímbolo de 3 bytes em UTF-8
&1%26&separa um parâmetro do outro
=1%3D=separa o nome do valor
?1%3F?abre a query string
#1%23#abre o fragmento, que não vai ao servidor
/1%2F/separa as pastas do caminho
+1%2B+em formulário quer dizer espaço
%1%25%25é o próprio sinal de código
@1%40@separa usuário e servidor no endereço
~1~~não reservado: pode ir como está

No parâmetro: encodeURIComponent, que é o que esta ferramenta usa. Na URL inteira: encodeURI, que preserva os separadores. Fonte: IETF RFC 3986, seção 2, e a documentação das duas funções no MDN.

Em resumo

Codificar para URL troca cada caractere que não pode viajar num endereço por um sinal de porcentagem seguido do código hexadecimal de cada byte em UTF-8. O espaço vira %20. O ç ocupa 2 bytes e vira %C3%A7, então "ação", com 4 letras, sai como a%C3%A7%C3%A3o, com 14 caracteres.

A página usa o encodeURIComponent, a função certa para o valor de um parâmetro: ela codifica também & = ? # e /, que dentro do valor quebrariam o endereço. Para a URL inteira existe o encodeURI, que preserva esses separadores, e a tabela acima mostra a diferença caractere por caractere. Na decodificação, um % sem dois dígitos hexadecimais depois é apontado como erro, e o + continua +, porque trocar + por espaço é regra de formulário. O campo aceita até 5.000 caracteres, e o endereço não é visitado. Base: RFC 3986, de janeiro de 2005.

Outras ferramentas de dados e formatos

  • Formatador de JSONFormate, valide e minifique JSON sem que um número grande mude de valor nem uma chave repetida desapareça. O erro vem com a linha e a coluna. Tudo no seu navegador.
  • Conversor de dadosConverta CSV, JSON, YAML e XML sem perder dado: CPF com zero na frente e número grande continuam inteiros, e toda transformação é avisada. Tudo no seu navegador.
  • CSV para JSONCole o CSV e receba o JSON no navegador, com o delimitador reconhecido sozinho, com ou sem cabeçalho, prévia em tabela e download local. CPF com zero à frente e número grande continuam intactos.
  • Codificador Base64Codifique texto para Base64 ou decodifique Base64 para texto diretamente no navegador. Suporte completo a UTF-8, emojis e caracteres acentuados. Processamento 100% local.
  • Conversor de timestamp UnixConverta Timestamp Unix para data/hora legível ou vice-versa. Suporte a segundos e milissegundos. Exibe ISO 8601, UTC, data e hora local. Processamento 100% local no navegador.
  • Conversor binário, decimal e hexadecimalConverta números entre decimal, binário, hexadecimal e octal instantaneamente. Informe o valor e a base de origem e veja todas as representações em paralelo. Processamento 100% local.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

Cole o texto para codificar para URL (espaço vira %20, ç vira %C3%A7) ou cole um endereço codificado para decodificar e ler de volta. A ferramenta também separa a URL em protocolo, domínio, caminho, parâmetros e fragmento. Nada é acessado nem enviado: a conversão acontece no navegador.

Como a codificação de URL funciona

Uma URL só pode carregar um conjunto pequeno de caracteres. Todo o resto, incluindo acento, espaço e os símbolos que têm função dentro do endereço, é trocado por um sinal de porcentagem seguido do código hexadecimal de cada byte em UTF-8. É o que a RFC 3986 chama de percent-encoding. Letra acentuada vira dois bytes, e por isso dois códigos. A tabela logo abaixo da ferramenta mostra os caracteres mais comuns, com o resultado do encodeURIComponent e do encodeURI lado a lado.

O erro mais comum é codificar a URL inteira em vez de só o valor do parâmetro: aí a barra e o ponto de interrogação também viram código e o endereço para de funcionar. Codifique apenas o pedaço que vem depois do sinal de igual. O mesmo cuidado vale ao montar o link do WhatsApp com mensagem pronta, que o gerador de link do WhatsApp já faz sozinho, e ao transformar um endereço em QR Code.

Codificar para URL e codificar em Base64 são coisas diferentes. O percent-encoding mantém letras e números como estão e só troca o resto; o Base64 reescreve tudo num alfabeto de 64 símbolos. Quando o valor precisa carregar bytes que não são texto, o caminho costuma ser o codificador Base64URL.

Base: IETF RFC 3986 e WHATWG URL Standard, com as funções nativas do navegador.

Limitações

  • Não visita o endereço: a ferramenta não diz se o link existe nem para onde ele redireciona.
  • Texto com % solto (sem dois dígitos hexadecimais depois) não pode ser decodificado e é apontado como erro.
  • O decodificador não troca + por espaço, porque essa regra é de formulário. Se o texto veio de um formulário, troque os + por espaço antes, ou use o modo Analisar URL, que lê os parâmetros do jeito do formulário.
  • O campo aceita até 5.000 caracteres.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Codificar e decodificar URL para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Conversão auditável, com o fator de conversão à vista

Atualizado em . Fontes: WHATWG URL Standard / RFC 3986 / MDN Web Docs.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que é URL encoding (percent encoding)?

URL encoding, ou percent-encoding, é a troca de cada caractere que não pode viajar num endereço por um sinal de porcentagem seguido do código hexadecimal de cada byte em UTF-8. O espaço vira %20, o ç vira %C3%A7 e o sinal de mais vira %2B. A regra está na seção 2 da RFC 3986, a norma de sintaxe de URI. Sem essa troca, um acento ou um & dentro de um valor quebra o endereço ou muda o que o servidor entende.

Qual a diferença entre encodeURI e encodeURIComponent?

O encodeURI codifica uma URL inteira e preserva os separadores dela, como /, ?, &, = e #. O encodeURIComponent codifica um pedaço isolado, como o valor de um parâmetro, e troca também esses separadores. Dos 13 caracteres da tabela desta página, 7 passam intactos pelo encodeURI e viram código no encodeURIComponent. Esta ferramenta usa o encodeURIComponent, que é o certo para montar o valor de um parâmetro.

O que é query string?

Query string é a parte da URL depois do ponto de interrogação, com pares nome=valor separados por &. Em https://exemplo.com/busca?q=café&page=2, a query string é q=café&page=2, com o parâmetro q valendo café e o parâmetro page valendo 2. No modo Analisar URL, esta página separa cada par numa linha própria e mostra o valor já decodificado, o que ajuda a achar o parâmetro de rastreamento ou o valor errado num link comprido.

A URL inserida é acessada ou consultada?

Não. A ferramenta só lê o texto da URL com a API nativa do navegador (new URL()). Nenhuma requisição de rede é feita, nenhum DNS é consultado e nenhum site é visitado, então dá para colar endereço interno, de homologação ou com parâmetro privado. A contrapartida é que a página também não sabe se o link existe, se ele redireciona para outro lugar ou se o servidor vai aceitar o que está escrito.

O que é o fragmento (hash) de uma URL?

O fragmento é o trecho depois do #, e aponta para uma parte da página, como um título ou uma seção. Em https://exemplo.com/artigo#conclusao, o fragmento é conclusao. O navegador não envia o fragmento ao servidor: ele fica do lado de quem abriu o link. Por isso um # dentro do valor de um parâmetro precisa ser codificado como %23; sem isso, tudo o que vier depois dele some da requisição e vira fragmento.

Como codificar uma URL (URL encode)?

Escolha Codificar, cole o texto e clique em Codificar URL. Codifique só o valor do parâmetro, e não o endereço inteiro: se você codificar https://, as barras e os dois-pontos também viram código e o link para de funcionar. Exemplo: para buscar São Paulo, o valor vira S%C3%A3o%20Paulo, e o link fica ?cidade=S%C3%A3o%20Paulo. O campo aceita até 5.000 caracteres, e o texto não sai do navegador.

Por que o espaço vira %20 em um lugar e + em outro?

Porque são duas regras. Na URL, pela RFC 3986, o espaço vira %20. Em formulário HTML enviado no formato application/x-www-form-urlencoded, o espaço vira +, e por isso o + de verdade precisa virar %2B. O encodeURIComponent, usado aqui, segue a primeira regra. Na volta, o decodificador desta página não troca + por espaço, mas o modo Analisar URL troca, porque lê os parâmetros como o navegador lê um formulário.

O que significa %20, %2F e outros códigos na URL?

Cada código é um byte escrito em hexadecimal depois do sinal de porcentagem: %20 é o espaço, %2F é a barra, %3F é o ponto de interrogação e %26 é o &. Letra acentuada ocupa 2 bytes em UTF-8, então aparece como dois códigos seguidos: %C3%A7 é o ç. Para ler um endereço cheio desses códigos, cole-o no modo Decodificar: "ação" escrito como a%C3%A7%C3%A3o volta a ser lido como ação.

Por que aparece ç no lugar de ç depois de decodificar?

Porque os bytes em UTF-8 foram lidos como se fossem Latin-1. O ç ocupa 2 bytes (%C3%A7); lidos um a um no padrão antigo, eles viram à e §. O defeito está em quem montou ou leu a URL com a tabela de caracteres errada, e não no código em si. Esta página decodifica sempre em UTF-8, que é o que a RFC 3986 recomenda para texto novo, então o mesmo endereço aqui mostra ç.

Quais caracteres o encodeURIComponent não codifica?

Letras de A a Z e de a a z, algarismos de 0 a 9 e os sinais - _ . ! ~ * ' ( ). Todo o resto vira código. Quatro desses sinais (- _ . ~) são os não reservados da RFC 3986 e podem ir como estão. Os outros cinco, ! ' ( ) e *, estão entre os reservados da norma, que um esquema de URI pode usar como separador; quem precisa segui-la à risca troca esses cinco por %21, %27, %28, %29 e %2A depois do encodeURIComponent.

O que mostra o quadro Partes da URL?

É o resultado do modo Analisar URL. Protocolo é o esquema, como https ou http; Host é o domínio; Porta aparece como (padrão) quando o endereço não traz número ou traz o número padrão do protocolo, que é 443 no https e 80 no http; Caminho é o trecho entre o domínio e o ponto de interrogação; Query string é o que vem depois dele; Hash / âncora é o fragmento. Abaixo vêm os Parâmetros da query string, um por linha, com o valor já decodificado. Endereço sem protocolo é lido como https.

O que quer dizer o erro Texto não é uma URL válida codificada?

Quer dizer que o texto tem um % que não forma um código válido em UTF-8. Acontece com % solto, sem dois dígitos hexadecimais depois (como 50%), com código cortado no meio (%C3 sem o segundo byte) e com endereço gerado por sistema antigo em Latin-1, em que o é aparece como %E9. Nesse último caso, troque %E9 por %C3%A9, que é o é em UTF-8, ou peça ao sistema de origem que gere o link em UTF-8.