Escape de string é o processo de inserir uma barra invertida (ou outro marcador) antes de caracteres que têm significado especial dentro de um literal de string. Quando o parser de uma linguagem de programação encontra aspas duplas dentro de uma string delimitada por aspas duplas, ele as interpreta como o fim da string. Aplicar escape nas aspas com uma barra invertida — escrevendo \" em vez de " — instrui o parser a tratá-las como um caractere literal, e não como delimitador. Toda linguagem que utiliza literais de string possui regras de escape, embora as sequências exatas variem.
As sequências de escape mais comuns correspondem a espaços em branco e caracteres de controle que não podem aparecer diretamente no código-fonte. Uma nova linha torna-se \n, uma tabulação torna-se \t e uma barra invertida literal torna-se \\. Essas convenções remontam à linguagem C (ISO/IEC 9899) e foram adotadas por JavaScript (ECMA-262), Python, Java, Go e Rust. O JSON (RFC 8259) usa a mesma sintaxe, mas suporta um conjunto menor de sequências.
Unescape (às vezes chamado de "desescapar") é a operação inversa: converter sequências de escape de volta aos seus caracteres originais. Isso é comum ao ler arquivos de log, processar respostas de API ou depurar dados que foram escapados mais de uma vez. As duas operações são mecânicas e sujeitas a erros quando feitas manualmente, razão pela qual os desenvolvedores recorrem a uma ferramenta de escape/unescape ao trabalhar com strings multilinha, aspas incorporadas ou caracteres Unicode.
Por que usar uma Ferramenta de Escape de String Online?
Adicionar ou remover barras invertidas manualmente é tedioso e fácil de errar, especialmente com aspas aninhadas ou entrada multilinha. Uma ferramenta de escape de string no navegador fornece resultados imediatos sem necessidade de configurar um REPL ou escrever scripts descartáveis.
⚡
Conversão instantânea
Cole seu texto e obtenha o resultado escapado ou desescapado imediatamente. Sem necessidade de abrir um terminal, iniciar um REPL ou escrever um script avulso.
🔀
Alterne entre formatos
Alterne entre os modos de escape JavaScript, Python e JSON. Cada linguagem trata aspas simples, Unicode e caracteres de controle de forma diferente — a ferramenta aplica as regras corretas automaticamente.
🔒
Processamento com privacidade
Todo o escape e unescape acontece no seu navegador usando JavaScript. Suas strings nunca são enviadas a um servidor, o que importa quando você trabalha com chaves de API, tokens ou dados de usuários.
📋
Sem login ou instalação
Abra a página e comece a colar. Não há conta a criar, extensão a instalar nem parede de consentimento de cookies bloqueando a ferramenta.
Casos de Uso do Escape de String
Desenvolvimento Frontend
Aplique escape em conteúdo gerado pelo usuário antes de injetá-lo em atributos HTML, scripts inline ou template literals. Previne marcação quebrada e vetores de XSS provenientes de aspas ou colchetes angulares não escapados.
Integração com APIs Backend
Construa corpos de requisição JSON com strings incorporadas que contenham quebras de linha, tabulações ou aspas. O escape correto previne JSON malformado que causaria erros 400 na API receptora.
DevOps e Configuração
Escreva strings escapadas para arquivos de configuração JSON, heredocs YAML ou variáveis de ambiente. Uma barra invertida mal colocada em um ENV do Dockerfile ou em um ConfigMap do Kubernetes pode quebrar um deploy.
QA e Dados de Teste
Gere strings de teste com caracteres de controle incorporados, sequências Unicode e aspas aninhadas. Essas strings de casos extremos são necessárias para verificar se parsers e serializadores tratam corretamente os caracteres especiais.
Engenharia de Dados
Limpe dados duplamente escapados provenientes de exportações CSV, agregadores de log ou dumps de banco de dados. Campos que passam por múltiplas camadas de serialização frequentemente acumulam barras invertidas extras que precisam ser removidas.
Aprendizado e Depuração
Inspecione como diferentes linguagens representam a mesma string. Estudantes e desenvolvedores iniciantes em uma linguagem podem comparar o escape de JavaScript, Python e JSON lado a lado para entender as diferenças.
Referência de Sequências de Escape
A tabela abaixo lista sequências de escape comuns e se elas são suportadas em JavaScript, Python e JSON. As três linguagens compartilham o conjunto básico (nova linha, tabulação, barra invertida, aspas duplas), mas divergem em aspas simples, escapes hexadecimais e notação Unicode estendida.
Sequência
Significado
JavaScript
Python
JSON
\n
Newline (LF)
Yes
Yes
Yes
\r
Carriage return
Yes
Yes
Yes
\t
Tab
Yes
Yes
Yes
\\
Backslash
Yes
Yes
Yes
\"
Double quote
Yes
Yes
Yes
\'
Single quote
Yes
Yes
No
\b
Backspace
Yes
Yes
Yes
\f
Form feed
Yes
Yes
Yes
\v
Vertical tab
Yes
Yes
No
\0
Null character
Yes
Yes
No
\xNN
Hex byte
Yes
Yes
No
\uNNNN
Unicode (BMP)
Yes
Yes
Yes
\u{N..}
Unicode (full)
Yes
No
No
JavaScript vs Python vs JSON — Comparação de Escape
Embora esses três formatos compartilhem a mesma sintaxe baseada em barra invertida, eles diferem em quais sequências são válidas e como lidam com casos extremos. Escolher o modo errado produz uma saída que parece correta, mas falha no momento do parse.
JavaScript
Suporta escapes hexadecimais \x, \u{...} para a faixa completa de Unicode (além do BMP), \v para tabulação vertical e \0 para nulo. Tanto aspas simples quanto duplas podem ser escapadas. Template literals (crases) evitam a maioria das necessidades de escape.
Python
Mesmas sequências básicas que JavaScript, além de escapes hexadecimais \x e \N{nome} para caracteres Unicode nomeados. Strings brutas (r"...") desativam completamente o processamento de escape. Aspas simples e duplas são ambas escapáveis.
JSON
O formato mais restritivo. Apenas \" (aspas duplas), \\, \/, \n, \r, \t, \b, \f e \uNNNN são válidos. Sem escape de aspas simples (strings JSON sempre usam aspas duplas). Sem escapes hexadecimais, sem \v, sem \0. Qualquer caractere de controle (U+0000 a U+001F) deve usar a notação \uNNNN.
Exemplos de Código
Exemplos de escape e unescape de strings em JavaScript, Python, Go e linha de comando.
JavaScript
// Escape a string with special characters
const raw = 'Line 1\nLine 2\tTabbed "quoted"';
const escaped = JSON.stringify(raw);
// → '"Line 1\\nLine 2\\tTabbed \\"quoted\\""'
// Unescape a JSON string value
const input = '"Hello\\nWorld"';
const unescaped = JSON.parse(input);
// → "Hello\nWorld" (actual newline character)
// Template literals don't need quote escaping
const tpl = `She said "hello"`;
// → 'She said "hello"' — no backslashes needed
// Escape for use inside a RegExp
const query = 'price: $5.00 (USD)';
const safe = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// → "price: \\$5\\.00 \\(USD\\)"
Python
# Escape with repr() — shows escape sequences
raw = "Line 1\nLine 2\t'quoted'"
print(repr(raw))
# → "Line 1\nLine 2\t'quoted'"
# Raw strings skip escape processing
path = r"C:\Users\name\Documents"
print(path)
# → C:\Users\name\Documents (backslashes kept literal)
# JSON escaping with json module
import json
data = 'He said "hello\nworld"'
escaped = json.dumps(data)
# → '"He said \\"hello\\nworld\\""'
# Unicode escaping
text = "Caf\u00e9" # → "Café"
print(text.encode('unicode_escape').decode())
# → "Caf\\xe9"
# Use $'...' syntax for escape sequences in bash
echo $'Line 1\nLine 2\tTabbed'
# → Line 1
# Line 2 Tabbed
# printf interprets escape sequences
printf 'Path: C:\\Users\\name\n'
# → Path: C:\Users\name
# Use jq to escape a string for JSON
echo 'He said "hello"' | jq -Rs .
# → "He said \"hello\"\n"
# Unescape JSON string with jq
echo '"Line 1\\nLine 2"' | jq -r .
# → Line 1
# Line 2
Perguntas Frequentes
Qual é a diferença entre escape e encoding?
O escape adiciona barras invertidas antes de caracteres especiais dentro de um literal de string para que o parser da linguagem os trate como dados, não como sintaxe. O encoding transforma a string inteira em uma representação diferente — por exemplo, o encoding Base64 converte dados binários em texto ASCII, e o encoding de URL substitui caracteres inseguros por sequências percentuais-hexadecimais. O escape preserva a legibilidade; o encoding muda completamente o formato.
Por que minha string tem barras invertidas duplas (\\\\) em vez de simples?
Barras invertidas duplas aparecem quando uma string é escapada duas vezes. Isso ocorre frequentemente quando dados passam por múltiplas camadas de serialização — por exemplo, um valor JSON armazenado dentro de outra string JSON, ou uma linha de log que foi codificada em JSON antes de ser gravada em arquivo. Para corrigir, aplique unescape na string uma camada de cada vez até chegar ao conteúdo original.
Como escapo uma string para JSON em JavaScript?
Use JSON.stringify(). Ele envolve a string em aspas duplas e escapa todos os caracteres exigidos pelo JSON: barras invertidas, aspas duplas, quebras de linha, tabulações e caracteres de controle abaixo de U+0020. Se quiser apenas o conteúdo interno sem as aspas circundantes, use JSON.stringify(str).slice(1, -1).
Strings JSON podem conter aspas simples?
Não. A especificação JSON (RFC 8259) exige que todas as strings sejam delimitadas por aspas duplas. Aspas simples não são delimitadores de string válidos em JSON. Embora alguns parsers permissivos as aceitem, qualquer parser JSON em conformidade com o padrão rejeitará uma string delimitada por aspas simples. Se sua string contiver um caractere de aspas simples, ele pode aparecer sem escape dentro de um JSON delimitado por aspas duplas.
O que é uma raw string em Python?
Uma raw string (prefixada com r, como r"C:\Users\nome") instrui o interpretador Python a tratar barras invertidas como caracteres literais em vez de marcadores de escape. É útil para caminhos de arquivo no Windows, expressões regulares e qualquer string onde as barras invertidas devem ser preservadas. Observe que uma raw string não pode terminar com um número ímpar de barras invertidas, pois a barra invertida final escaparia a aspas de fechamento.
Como escapo caracteres Unicode em JavaScript?
JavaScript suporta duas formas de escape Unicode. A sintaxe \uNNNN trata caracteres no Plano Multilingual Básico (U+0000 a U+FFFF), como \u00e9 para 'e com acento agudo'. Para caracteres fora do BMP (emojis, scripts raros), use \u{NNNNN} com até seis dígitos hexadecimais — por exemplo, \u{1F600} para o emoji de rosto sorridente. A forma \u{'} foi introduzida no ES2015.
O escape de string está relacionado à segurança (XSS, injeção de SQL)?
O escape em nível de linguagem e o escape de segurança servem a propósitos diferentes, mas a ideia é a mesma: impedir que caracteres especiais sejam interpretados como código. Para prevenção de XSS, você escapa entidades HTML (<, >, &). Para injeção de SQL, você usa consultas parametrizadas em vez de escape manual. Esta ferramenta trata do escape de string em nível de linguagem (sequências com barra invertida), não do escape HTML ou SQL.