100 % local — seus dados nunca saem do seu navegador

Desescapar JavaScript — leia um literal de um bundle

Decodifique um literal JavaScript em texto puro: escapes nomeados, \uXXXX, \u{...}, \xNN e pares substitutos voltam todos como caracteres.

Instantâneo Privado Zero cookies

Entrada JS Escaped

Saída Text

O que esta ferramenta faz

Ela lê o conteúdo de um literal de string e devolve o texto que ele representa. As formas nomeadas \n, \r, \t, \b, \f, \v e \0 voltam a ser seus caracteres. \uXXXX, a forma de ponto de código \u{1F600} e a forma hexadecimal \xNN são decodificadas. Um par substituto escrito como \ud83d\ude00 é recomposto no único caractere que codifica.

Qualquer outra coisa depois de uma barra invertida volta nua: \q dá q, \\ dá uma única barra, \" dá uma aspa. Essa é a regra do próprio JavaScript, não um improviso — um escape não reconhecido é definido como o caractere que vem depois dele.

Quando você precisa dela

Uma string tirada de um bundle minificado, de uma linha de log ou de um stack trace, onde os escapes se empilharam e você quer ler o que está realmente escrito. Também para um arquivo de tradução ou um valor de configuração que passou por uma etapa de codificação a mais.

O que ela não faz

Ela decodifica o conteúdo de um literal, não uma expressão JavaScript. Cole o que está entre as aspas: nada é concatenado nem avaliado.

Escapes octais legados são decodificados, porque um motor não estrito os decodifica: \101 dá A e \012 uma quebra de linha. Encontrar um diz algo sobre a origem, porém — a forma é erro de sintaxe no modo estrito e em template literals, então um literal que a usa veio de código antigo.

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.

Perguntas frequentes

Preciso incluir as aspas ao redor?
Não — cole o que está entre elas. Aspas deixadas na entrada são tratadas como caracteres comuns e voltam sem alteração.
Por que `\q` virou `q`?
Porque é o que o próprio JavaScript faz com um escape que não reconhece: a barra invertida é descartada e o caractere seguinte é mantido. A ferramenta não inventa um caractere de controle.
Os emoji sobrevivem?
Sim. Um par substituto como `\ud83d\ude00` é recomposto no único caractere que ele codifica, e a forma de ponto de código `\u{1F600}` dá o mesmo emoji.

Conversores relacionados