Enviar um arquivo
  1. base64hub
  2. Web e tokens
  3. URL decode

URL decode: decodificador de URL (percent-encoding)

Cole uma URL codificada, uma query string ou uma linha de log para transformar %20, %2F e %C3%A9 de volta em texto. URLs completas também são divididas em host, caminho e parâmetros de query decodificados.

Grátis sem cadastro, sem limites Local nada é enviado Repetir desfaz codificação dupla e tripla, até 5 rodadas Atualizado 27 de out. de 2026
Entrada 0Saída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar uma URL

  1. Cole o texto codificado em URL ou texto codificado.
  2. Deixe Tratar + como espaço ligado para query strings e dados de formulário, e desligue para caminhos ou valores em Base64.
  3. Se o resultado ainda tiver sequências %XX, o status avisa: marque Decodificar repetidamente.
  4. Para um arquivo de log ou uma coluna de valores, marque Cada linha separadamente para que cada linha seja decodificada isoladamente.
  5. Escolha um Charset se a origem não era UTF-8 e depois clique em Copiar saída.

Quando a entrada é uma URL completa, a tabela abaixo dos painéis mostra o esquema, o host, o caminho decodificado, cada parâmetro de query em sua própria linha e o fragmento. É o jeito mais rápido de ler uma URL longa de rastreamento ou de redirecionamento.

Exemplos

CodificadoDecodificadoObservação
q=base64%20%26%20%22url-safe%22q=base64 & "url-safe"%26 é &, %22 é "
lang=%E6%97%A5%E6%9C%AC%E8%AA%9Elang=日本語três bytes por caractere em UTF-8
%F0%9F%98%80😀emojis ocupam quatro bytes
q=a+b%2Bcq=a b+ccom Tratar + como espaço
next=%252Fhome%253Ftab%253D1next=/home?tab=1codificação dupla, duas rodadas
caf%E9caféWindows-1252 ou ISO-8859-1, não UTF-8

Codificação dupla

Toda vez que uma string já codificada é codificada de novo, cada % vira %25. Assim, / vira %2F, depois %252F, depois %25252F. Isso acontece quando uma URL de redirecionamento passa por vários serviços, ou quando um framework codifica um valor que o código já tinha codificado.

Para ler uma string assim, decodifique até não sobrar nenhum escape; Decodificar repetidamente faz isso e informa o número de rodadas. Para corrigir a causa, encontre a camada que codifica uma segunda vez. Uma URL aninhada de propósito, como um parâmetro next= ou url= que contém outra URL, precisa de exatamente uma camada extra, e não mais.

Gateways de segurança de e-mail são uma fonte comum desse aninhamento. Uma URL do Microsoft Defender Safe Links tem a cara de https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fexample.com%2Freset%3Fid%3D42&data=…; cole-a e a tabela de parâmetros mostra o destino real, https://example.com/reset?id=42, sem que você precise clicar em nada.

Escapes malformados e charsets legados

Um % precisa ser seguido de exatamente dois dígitos hex. 100%, %zz ou uma URL cortada no meio de um escape é um erro, e o decodificador mostra Escape quebrado na posição N. O decodeURIComponent do JavaScript lança URIError: URI malformed nos mesmos casos, enquanto o unquote do Python deixa a sequência como está.

A outra fonte de erros é o charset. Escapes percentuais são bytes, e %E9 sozinho não é UTF-8 válido. O Python o decodifica como o caractere de substituição, o JavaScript lança um erro. Com o Charset em Windows-1252 ou ISO-8859-1, ele vira é. Shift_JIS, GBK, EUC-KR, KOI8-R e outros charsets legados estão na mesma lista.

Decodificar URL no código

decodeURIComponent("a%20b%26c")                   // "a b&c"
new URLSearchParams("q=a+b%2Bc").get("q")          // "a b+c"
from urllib.parse import unquote, unquote_plus, parse_qs
unquote("caf%C3%A9")                     # 'café'
unquote("caf%E9", encoding="latin-1")    # 'café'
unquote_plus("q=a+b%2Bc")                # 'q=a b+c'
parse_qs("q=a+b%2Bc&tag=x&tag=y")        # {'q': ['a b+c'], 'tag': ['x', 'y']}

O decodeURIComponent não transforma + em espaço; URLSearchParams e unquote_plus transformam. Escolha a função que corresponde a como a string foi gerada. Para codificar, veja o codificador de URL, e para Base64 que chegou por uma URL, o decodificador Base64URL.

Perguntas frequentes

Como decodificar uma string codificada em URL?

Cole acima; o texto decodificado aparece enquanto você digita. Em JavaScript use decodeURIComponent(s), em Python urllib.parse.unquote(s), ou unquote_plus(s) quando o + representa um espaço.

Por que minha URL decodificada ainda tem %20 ou %3A?

Ela foi codificada duas vezes. Uma rodada transforma %2520 em %20; a segunda rodada entrega o espaço. Marque Decodificar repetidamente e o decodificador continua até não sobrar nenhum escape, em até cinco rodadas, e informa quantas foram necessárias.

Por que o decodeURIComponent lança URI malformed?

Ou um % não é seguido de dois dígitos hex, como em 100%, ou os bytes não são UTF-8 válido, como %E9 vindo de um sistema Windows-1252. Este decodificador aponta a posição exata, e a opção Charset decodifica codificações legadas.

O + deve ser decodificado como espaço?

Em query strings e corpos de formulário, sim, por isso Tratar + como espaço vem ligado por padrão. Em caminhos de URL e em valores que podem conter Base64, desmarque, porque ali o + é um sinal de mais literal.