O que esta ferramenta faz
O texto vira bytes UTF-8, e todo byte fora do conjunto não reservado é escrito com um sinal de porcentagem seguido de dois dígitos hexadecimais. Saem intactos as letras, os dígitos e - . _ ~.
Todo o resto é escapado, inclusive os caracteres que estruturam uma URL:
a b → a%20b
a+b&c=d → a%2Bb%26c%3Dd
café → caf%C3%A9
😀 → %F0%9F%98%80
Porcentagem, não formulário
Esta é a distinção que vale levar, porque ela corrompe dados em silêncio nos dois sentidos.
A codificação por porcentagem é a de um caminho de URL e de uma query string moderna. Ali o espaço é %20. Um sinal de mais é um mais literal, e ele próprio é escapado para %2B quando aparece num valor.
A codificação de formulário — application/x-www-form-urlencoded, o que um formulário HTML envia — escreve o espaço como +. É a convenção mais antiga, e continua em toda parte.
Esta ferramenta aplica a primeira regra, igual ao que encodeURIComponent e decodeURIComponent fazem no navegador.
A consequência ao decodificar
Uma string vinda de um formulário, ou de uma query string escrita nesse estilo, manterá aqui os sinais de mais em vez de devolvê-los a espaços. a+b decodifica para a+b.
Isso é correto para a porcentagem e errado em relação ao que você provavelmente queria. Se a entrada veio de um formulário, troque + por %20 antes de decodificar, ou use um decodificador de formulário.
Um sinal de porcentagem solto, sem dois dígitos hexadecimais depois, vira erro em vez de palpite: 100% não dá para decodificar, e fingir o contrário inventaria um byte.
Ela codifica um valor, não uma URL
Dê a ela uma URL inteira e ela escapará também o :// e os separadores, o que não é o objetivo. Codifique cada valor separadamente e monte a URL em volta.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.