El escape de cadenas es el proceso de insertar una barra invertida (u otro marcador) antes de los caracteres que tienen un significado especial dentro de un literal de cadena. Cuando el analizador de un lenguaje de programación encuentra una comilla doble dentro de una cadena delimitada por comillas dobles, la interpreta como el final de la cadena. Escapar la comilla con una barra invertida — escribir \" en lugar de " — le indica al analizador que la trate como un carácter literal, no como un delimitador. Todo lenguaje que utilice literales de cadena tiene reglas de escape, aunque las secuencias exactas varían.
Las secuencias de escape más comunes corresponden a espacios en blanco y caracteres de control que no pueden aparecer directamente en el código fuente. Un salto de línea se convierte en \n, un tabulador en \t y una barra invertida literal en \\. Estas convenciones se remontan al lenguaje de programación C (ISO/IEC 9899) y han sido adoptadas por JavaScript (ECMA-262), Python, Java, Go y Rust. JSON (RFC 8259) utiliza la misma sintaxis, pero admite un conjunto más reducido de secuencias.
El desescapado (a veces llamado "de-escaping") es la operación inversa: convertir las secuencias de escape de vuelta a sus caracteres originales. Esto es habitual al leer archivos de registro, analizar respuestas de API o depurar datos que han sido doblemente escapados. Ambas operaciones son mecánicas y propensas a errores cuando se hacen a mano, por lo que los desarrolladores recurren a una herramienta de escape/desescapado al trabajar con cadenas multilínea, comillas anidadas o caracteres Unicode.
¿Por qué usar una herramienta de escape de cadenas online?
Añadir o eliminar barras invertidas manualmente es tedioso y fácil de hacer mal, especialmente con comillas anidadas o entradas multilínea. Una herramienta de escape de cadenas en el navegador ofrece resultados instantáneos sin necesidad de configurar un REPL ni escribir scripts desechables.
⚡
Conversión instantánea
Pega tu texto y obtén el resultado escapado o desescapado de inmediato. No es necesario abrir una terminal, iniciar un REPL ni escribir un script de un solo uso.
🔀
Cambia entre formatos
Alterna entre los modos de escape de JavaScript, Python y JSON. Cada lenguaje trata de forma diferente las comillas simples, Unicode y los caracteres de control; la herramienta aplica las reglas correctas de forma automática.
🔒
Procesamiento con privacidad
Todo el escape y desescapado ocurre en tu navegador mediante JavaScript. Tus cadenas nunca se envían a un servidor, lo que importa cuando trabajas con claves de API, tokens o datos de usuarios.
📋
Sin registro ni instalación
Abre la página y empieza a pegar. No hay que crear ninguna cuenta, instalar ninguna extensión ni atravesar muros de consentimiento de cookies.
Casos de uso del escape de cadenas
Desarrollo frontend
Escapa contenido generado por el usuario antes de inyectarlo en atributos HTML, scripts inline o literales de plantilla. Previene marcado roto y vectores XSS derivados de comillas o corchetes angulares sin escapar.
Integración de API backend
Construye cuerpos de solicitudes JSON con cadenas embebidas que contienen saltos de línea, tabuladores o comillas. Un escape correcto evita JSON malformado que provocaría errores 400 en la API receptora.
DevOps y configuración
Escribe cadenas escapadas para archivos de configuración JSON, heredocs de YAML o variables de entorno. Una barra invertida mal colocada en un ENV de Dockerfile o en un ConfigMap de Kubernetes puede romper un despliegue.
QA y datos de prueba
Genera cadenas de prueba con caracteres de control embebidos, secuencias Unicode y comillas anidadas. Estas cadenas de casos extremos son necesarias para verificar que los analizadores y serializadores gestionan correctamente los caracteres especiales.
Ingeniería de datos
Limpia datos doblemente escapados procedentes de exportaciones CSV, agregadores de registros o volcados de bases de datos. Los campos que pasan por múltiples capas de serialización suelen acumular barras invertidas adicionales que deben eliminarse.
Aprendizaje y depuración
Inspecciona cómo representan la misma cadena distintos lenguajes. Los estudiantes y desarrolladores que se inician en un lenguaje pueden comparar el escape de JavaScript, Python y JSON en paralelo para entender las diferencias.
Referencia de secuencias de escape
La tabla siguiente muestra las secuencias de escape más comunes e indica si están admitidas en JavaScript, Python y JSON. Los tres lenguajes comparten el conjunto básico (salto de línea, tabulador, barra invertida, comilla doble), pero difieren en las comillas simples, los escapes hexadecimales y la notación Unicode extendida.
Secuencia
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
Escape en JavaScript vs Python vs JSON
Aunque estos tres formatos comparten la misma sintaxis basada en barra invertida, difieren en qué secuencias son válidas y en cómo gestionan los casos extremos. Elegir el modo incorrecto produce una salida que parece correcta pero falla en tiempo de análisis.
JavaScript
Admite escapes hexadecimales \x, \u{...} para el rango completo de Unicode (más allá del BMP), \v para tabulador vertical y \0 para nulo. Se pueden escapar tanto comillas simples como dobles. Los literales de plantilla (backticks) evitan la mayoría de las necesidades de escape.
Python
Las mismas secuencias básicas que JavaScript, más escapes hexadecimales \x y \N{name} para caracteres Unicode con nombre. Las cadenas raw (r"...") desactivan completamente el procesamiento de escapes. Son escapables tanto las comillas simples como las dobles.
JSON
El formato más restrictivo. Solo son válidos \" (comilla doble), \\, \/, \n, \r, \t, \b, \f y \uNNNN. No existe escape de comilla simple (las cadenas JSON siempre usan comillas dobles). Sin escapes hexadecimales, sin \v, sin \0. Cualquier carácter de control (U+0000 a U+001F) debe representarse con la notación \uNNNN.
Ejemplos de código
Ejemplos para escapar y desescapar cadenas en JavaScript, Python, Go y la línea de comandos.
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
Preguntas frecuentes
¿Cuál es la diferencia entre escape y codificación?
El escape añade barras invertidas antes de los caracteres especiales dentro de un literal de cadena para que el analizador del lenguaje los trate como datos y no como sintaxis. La codificación transforma toda la cadena en una representación diferente; por ejemplo, la codificación Base64 convierte datos binarios en texto ASCII, y la codificación URL reemplaza los caracteres no seguros con secuencias porcentaje-hex. El escape preserva la legibilidad; la codificación cambia el formato por completo.
¿Por qué mi cadena tiene barras invertidas dobles (\\\\) en lugar de simples?
Las barras invertidas dobles aparecen cuando una cadena se escapa dos veces. Esto ocurre con frecuencia cuando los datos pasan por múltiples capas de serialización; por ejemplo, un valor JSON almacenado dentro de otra cadena JSON, o una línea de registro que fue codificada en JSON antes de escribirse en un archivo. Para solucionarlo, desescapa la cadena capa por capa hasta llegar al contenido original.
¿Cómo escopo una cadena para JSON en JavaScript?
Usa JSON.stringify(). Envuelve la cadena entre comillas dobles y escapa todos los caracteres que JSON requiere: barras invertidas, comillas dobles, saltos de línea, tabuladores y caracteres de control por debajo de U+0020. Si solo quieres el contenido interno sin las comillas envolventes, usa JSON.stringify(str).slice(1, -1).
¿Pueden las cadenas JSON contener comillas simples?
No. La especificación JSON (RFC 8259) requiere que todas las cadenas estén delimitadas por comillas dobles. Las comillas simples no son delimitadores de cadena válidos en JSON. Aunque algunos analizadores permisivos las aceptan, cualquier analizador JSON conforme al estándar rechazará una cadena envuelta en comillas simples. Si tu cadena contiene un carácter de comilla simple, puede aparecer tal cual dentro de un JSON con comillas dobles; no necesita escape.
¿Qué es una cadena raw en Python?
Una cadena raw (con el prefijo r, como r"C:\Users\name") indica al intérprete de Python que trate las barras invertidas como caracteres literales en lugar de marcadores de escape. Es útil para rutas de archivo en Windows, expresiones regulares y cualquier cadena donde las barras invertidas deban conservarse. Ten en cuenta que una cadena raw no puede terminar con un número impar de barras invertidas, ya que la barra invertida final escaparía la comilla de cierre.
¿Cómo escopo caracteres Unicode en JavaScript?
JavaScript admite dos formas de escape Unicode. La sintaxis \uNNNN maneja caracteres del Plano Multilingüe Básico (U+0000 a U+FFFF), como \u00e9 para 'e con acento agudo'. Para caracteres fuera del BMP (emojis, scripts raros), usa \u{NNNNN} con hasta seis dígitos hexadecimales; por ejemplo, \u{1F600} para el emoji de cara sonriente. La forma \u{'} se introdujo en ES2015.
¿Está relacionado el escape de cadenas con la seguridad (XSS, inyección SQL)?
El escape a nivel de lenguaje y el escape de seguridad tienen propósitos distintos, pero la idea es la misma: evitar que los caracteres especiales se interpreten como código. Para prevenir XSS, se escapan entidades HTML (<, >, &). Para evitar inyección SQL, se usan consultas parametrizadas en lugar de escape manual. Esta herramienta gestiona el escape de cadenas a nivel de lenguaje (secuencias de barra invertida), no el escape HTML ni SQL.