Utilia

Escapar y desescapar cadenas

Escapa o desescapa una cadena para JSON, JavaScript, plantillas literales, SQL, CSV, atributos HTML, expresiones regulares y URL en tu navegador.

Cómo escapar o desescapar una cadena

  1. Elige el destino en Formato: cadena JSON, cadena JavaScript, plantilla literal JavaScript, literal de cadena SQL, campo CSV, valor de atributo HTML, expresión regular o componente de URL.
  2. Escribe o pega tu texto en el cuadro de entrada.
  3. Pulsa Escapar para convertir texto plano en un literal seguro, o Desescapar para convertir un literal de nuevo en texto plano. El resultado se actualiza mientras escribes, en la última dirección que elegiste.
  4. Ajusta las opciones que aparecen para cada formato: Añadir comillas alrededor, Escapar los caracteres no ASCII o Espacios como + (datos de formulario).
  5. Pulsa Copiar, o Usar el resultado como entrada para invertir la operación y comprobar el viaje de ida y vuelta.

Bajo los botones se muestra el número de caracteres antes y después. Todo se ejecuta en tu navegador; no se sube nada.

Qué hace cada formato

  • Cadena JSON: escapa ", \ y los caracteres de control (\n, \t, \u0000…), exactamente como JSON.stringify. Con Escapar los caracteres no ASCII, todo carácter por encima de U+007E pasa a \uXXXX (los emojis se convierten en un par sustituto como \ud83d\ude00). Al desescapar se acepta el texto con o sin sus comillas dobles, y se toleran los saltos de línea reales.
  • Cadena JavaScript (‘…’): escapa la barra invertida, la comilla simple, los saltos de línea y los caracteres de control, además de U+2028 y U+2029, que rompen los motores antiguos. Al desescapar entiende \x41, \u0041, \u{1F600}, los escapes octales heredados como \101 y las continuaciones de línea.
  • Plantilla literal JavaScript (`…`): escapa los acentos graves, las barras invertidas y ${ para que no se evalúe ninguna expresión; los saltos de línea y las tabulaciones se quedan como están, porque las plantillas literales los admiten.
  • Literal de cadena SQL (‘…’): duplica las comillas simples (O'Brien → 'O''Brien'), como en SQL estándar. Al desescapar se rechaza cualquier comilla sin duplicar. Las barras invertidas no se tocan: MySQL en su modo predeterminado también trata \ como carácter de escape, así que revisa las reglas de tu base de datos.
  • Campo CSV (RFC 4180): envuelve el campo entre comillas dobles y duplica las comillas interiores cuando contiene una coma, un punto y coma, una tabulación, una comilla, un salto de línea o un espacio al principio o al final. Añadir comillas alrededor fuerza las comillas.
  • Valor de atributo HTML: sustituye &, <, >, " y ' por entidades, lo que es seguro tanto en atributos con comillas simples como dobles. Al desescapar decodifica las referencias numéricas y &amp;, &lt;, &gt;, &quot;, &apos; y &nbsp;.
  • Expresión regular (texto literal): escapa con barra invertida . * + ? ^ $ { } ( ) | [ ] \ /, además de los saltos de línea y las tabulaciones, para que el patrón coincida literalmente con el texto. El resultado es válido con o sin el flag u.
  • Componente de URL (codificación por porcentaje): funciona como encodeURIComponent y codifica como bytes UTF-8 todo salvo letras, dígitos y - _ . ! ~ * ' ( ). Espacios como + (datos de formulario) usa la convención application/x-www-form-urlencoded.

Escapar no es una barrera de seguridad en SQL

Cuando eliges SQL, la herramienta muestra un recordatorio que merece la pena repetir: la verdadera solución contra la inyección SQL es una consulta parametrizada (sentencia preparada), en la que el valor se envía por separado del texto SQL. Escapar a mano es frágil: depende de la base de datos, del juego de caracteres de la conexión y de ajustes como el tratamiento de la barra invertida en MySQL. Usa este resultado para leer registros, escribir datos de prueba o depurar una consulta, nunca para construir consultas con datos introducidos por usuarios.

Para CSV, la herramienta también avisa cuando un valor empieza por =, +, - o @: una hoja de cálculo podría ejecutarlo como fórmula (inyección CSV). Las comillas no lo evitan; la mitigación habitual es anteponer al valor un apóstrofo o un espacio.

Preguntas frecuentes

¿Qué diferencia hay entre una cadena JSON y una cadena JavaScript?

JSON solo admite comillas dobles y un pequeño conjunto de escapes (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript acepta además comillas simples, acentos graves, \x41, \u{…}, \v y \0. Los escapes JSON válidos son JavaScript válido, pero no al revés.

¿Por qué falla el desescapado con «Secuencia de escape no válida»?

El texto contiene una barra invertida seguida de algo que el formato no permite, como \u12 con menos de cuatro dígitos hexadecimales, o una barra invertida suelta al final. El mensaje de error muestra la secuencia defectuosa.

¿En CSV hay que poner comillas en todos los campos?

No. La RFC 4180 solo exige comillas cuando el campo contiene una coma, una comilla doble o un salto de línea. Esta herramienta también entrecomilla los puntos y comas, las tabulaciones y los espacios al principio o al final, porque muchas hojas de cálculo los usan como delimitadores o los recortan. Esto es especialmente útil en países donde Excel usa el punto y coma como separador.

¿Basta con escapar un atributo HTML para evitar XSS?

Es correcto para texto colocado dentro del valor de un atributo entre comillas. No basta para atributos que son en sí código o URL, como onclick o href="javascript:…"; esos necesitan validación, no solo escape.

¿Se envía mi texto a un servidor?

No. Todas las conversiones se hacen localmente en tu navegador, así que puedes pegar sin riesgo valores de configuración o datos que no compartirías.