Skip to content

Codificador de entidades HTML gratuito — Escapar HTML

Codifica entidades HTML y escapa caracteres especiales (< > & " ') online: gratis, sin registro, 100 % en tu navegador. Salida con nombre, decimal o hex; nunca se sube.

Sin rastreo Se ejecuta en el navegador Gratis

Tu texto se codifica localmente en tu navegador y nunca se sube, registra ni almacena. Se queda en este dispositivo.

Opciones · Opciones de formato y codificación
Formato de entidad
0 caracteres
HTML codificado
0 caracteres
Revisado en cuanto a la corrección de la especificación de codificación de entidades (nombrada / decimal / hex), el escapado seguro contra XSS de los cinco caracteres especiales en contextos HTML y de atributo, la convención del apóstrofo ' segura y compatible, la privacidad sin red ni almacenamiento de la entrada, y la accesibilidad (controles etiquetados, anuncios en región activa al codificar y copiar). — Equipo de Codificación de Go Tools · Jun 17, 2026

¿Qué es la codificación de entidades HTML?

La codificación de entidades HTML —también llamada escapado de HTML— es el proceso de reemplazar caracteres que tienen un significado especial en HTML por una representación textual segura llamada entidad, de modo que el navegador los muestre como texto literal en lugar de interpretarlos como marcado. Los cinco caracteres que más importan son los que HTML usa para estructurar un documento: los corchetes angulares < y > que abren y cierran etiquetas, el ampersand & que inicia una entidad, y las comillas " y ' que delimitan los valores de atributo. Cuando cualquiera de estos aparece en contenido que debe mostrarse en vez de ejecutarse, debe escaparse, o el navegador leerá mal la página; en el mejor caso tu texto se renderiza mal, en el peor un atacante cuela una etiqueta <script>.

Conviene ser preciso sobre lo que hace esta herramienta. Codifica texto en entidades; no ensambla ni embellece un documento. Si quieres leer una cadena de código en una página como texto plano, o estás insertando entrada suministrada por el usuario en tu HTML y necesitas neutralizarla, esta es la herramienta adecuada. Si en cambio quieres indentar y ordenar marcado existente, ese es el trabajo del formateador de HTML; y para convertir entidades de vuelta en caracteres, usa el decodificador de entidades HTML.

Hay tres formas de escribir cualquier entidad, y son intercambiables. Una referencia nombrada usa una etiqueta legible (< para <, © para ©); una referencia numérica decimal escribe el punto de código Unicode del carácter en base 10 (< para <); y una referencia hexadecimal escribe el mismo punto de código en base 16 (< para <), coincidiendo con la notación U+XXXX del estándar Unicode. Las entidades nombradas se leen mejor pero existen solo para caracteres con un nombre definido; las numéricas pueden representar cualquier punto de código, por lo que son el respaldo seguro. La tabla siguiente lista las entidades que usarás con más frecuencia:

| Carácter | Nombrada | Decimal | Hex | |-----------|-------|---------|-----| | < | &lt; | &#60; | &#x3C; | | > | &gt; | &#62; | &#x3E; | | & | &amp; | &#38; | &#x26; | | " | &quot; | &#34; | &#x22; | | ' | &#x27; | &#39; | &#x27; | | (espacio) | &nbsp; | &#160; | &#xA0; | | © | &copy; | &#169; | &#xA9; | | ® | &reg; | &#174; | &#xAE; | | ™ | &trade; | &#8482; | &#x2122; | | € | &euro; | &#8364; | &#x20AC; | | £ | &pound; | &#163; | &#xA3; | | — | &mdash; | &#8212; | &#x2014; | | – | &ndash; | &#8211; | &#x2013; | | … | &hellip; | &#8230; | &#x2026; | | é | &eacute; | &#233; | &#xE9; |

Observa que el apóstrofo se escribe ' (o ') en lugar de ': el nombrado ' solo se estandarizó en HTML5 y XML y es inseguro en los analizadores antiguos de HTML4, así que la forma numérica —entendida en todas partes— es la opción compatible. Esta herramienta sigue la misma convención que la muy usada librería he, por lo que la salida por defecto para ' es '.

La distinción entre un juego de caracteres y una entidad vale la pena retener, porque explica la opción «Codificar todo lo no ASCII». Un juego de caracteres (como UTF-8) determina cómo se almacenan los caracteres como bytes; una entidad es una forma de escribir un carácter usando solo los caracteres ASCII llanos & # ; y letras o dígitos. En una página UTF-8 moderna, é, — y 😀 son caracteres en bruto válidos y no necesitan entidad alguna, que es por lo que el modo por defecto los deja en paz. Solo los fuerzas a entidades cuando el texto debe pasar por un sistema que no maneja UTF-8 en bruto, en cuyo caso cada punto de código no ASCII se reescribe como una referencia numérica o nombrada segura en ASCII. Y como todo esto se ejecuta en tu navegador, el marcado que escapas —incluso una plantilla privada o un borrador sin publicar— nunca cruza la red. Para conversiones relacionadas, las herramientas Escapar JSON y Codificar/Decodificar Base64 gestionan el escapado para cadenas JavaScript y el transporte seguro de binarios respectivamente.

// Server-side templates auto-escape, but when you build HTML by hand you must escape yourself.
// The five reserved characters and their safe entities:
//   <  →  &lt;     >  →  &gt;     &  →  &amp;     "  →  &quot;     '  →  &#x27;

// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
  return str
    .replace(/&/g, '&amp;')   // & first, so later entities are not double-escaped
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#x27;'); // numeric form — safe in HTML4, HTML5 and XML
}

const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → &lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;
document.getElementById('out').innerHTML = `<p>${safe}</p>`; // renders as literal text

// ---------------------------------------------------------------
// In practice, prefer the platform's built-in escaping where it exists:
//   - React / Vue / Angular escape interpolated text by default
//   - Use textContent instead of innerHTML when you only need text:
//       el.textContent = userInput;  // the browser escapes for you
//   - Server frameworks (Jinja, ERB, Blade) auto-escape unless you opt out

Características clave

Escapa correctamente los cinco caracteres reservados

< > & " ' se convierten en sus entidades seguras exactamente como lo haría una librería endurecida de prevención de XSS, incluido el ' seguro y compatible para el apóstrofo en vez del ' inseguro en HTML4. Este es el conjunto preciso que neutraliza la entrada no confiable en contextos de elemento y atributo HTML.

Salida nombrada, decimal y hex

Obtén los mismos caracteres como entidades nombradas legibles (<, ©), referencias numéricas decimales (<) o referencias hexadecimales (<). Elige la forma que tu sistema receptor espera; las tres resuelven a caracteres idénticos al analizarse.

Modo opcional de codificar todo lo no ASCII

Por defecto solo se escapan los caracteres reservados, manteniendo acentos y emojis como UTF-8 en bruto legible. Marca una casilla para convertir cada punto de código por encima de 0x7F en una entidad segura en ASCII para juegos de caracteres heredados o sistemas que corrompen UTF-8.

Codificación instantánea y en vivo

La salida se actualiza a medida que escribes: sin botón de enviar, sin latencia de ida y vuelta. Pega un bloque grande de marcado y el resultado escapado aparece de inmediato, listo para copiar.

Referencia rápida de entidades incorporada

Una tabla de referencia de las entidades más comunes —los cinco reservados más ©, ®, ™, €, —,   y más— está justo en la página en forma nombrada, decimal y hex, para que nunca tengas que buscar una entidad en otro sitio.

Cambio al decodificador con un clic

Invertir dirección salta directamente al decodificador de entidades HTML para revertir la operación. Codificar y decodificar son inversos exactos, así que puedes hacer ida y vuelta del texto sin pérdida.

100 % privado, solo en el navegador

Toda la codificación ocurre en tu dispositivo con JavaScript: sin peticiones de red, sin registro, sin almacenamiento, verificable en DevTools → Red. El marcado privado, las plantillas de correo y los borradores sin publicar nunca salen de la pestaña.

Disponible en 15 idiomas

La interfaz completa —etiquetas, instrucciones y orientación— está localizada a 15 idiomas, para que la herramienta y sus consejos de escapado sean claros sin importar dónde trabaje tu equipo.

Ejemplos prácticos

Escapar un fragmento de HTML (el modo «caracteres especiales» por defecto)

<a href="x">Tom & Jerry's</a>
&lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;

En el modo «caracteres especiales» por defecto, el codificador reescribe solo los cinco caracteres que tienen significado en el marcado HTML: < pasa a <, > pasa a >, & pasa a &, " pasa a " y ' pasa a '. El apóstrofo se emite como el numérico ' en lugar del nombrado ' porque ' no está definido en HTML4 y los analizadores antiguos pueden fallar con él, mientras que la forma hex se entiende en todas partes. Tras codificar, el navegador muestra la cadena como texto literal: la etiqueta <a> se ve, no se pulsa, que es exactamente como se muestra marcado dentro de una página de forma segura.

Los caracteres no ASCII se conservan en el modo por defecto

Visit our café — it's 😀
Visit our café — it&#x27;s 😀

El modo «caracteres especiales» toca solo los cinco caracteres reservados de HTML, así que las letras acentuadas (café), la raya (—) y el emoji (😀) pasan sin cambios. Esto mantiene la salida legible y ligera en bytes, que es lo que quieres para páginas UTF-8 que ya declaran <meta charset="utf-8">. Solo se escapa el apóstrofo de «it's», a '. Si necesitas convertir cada carácter no ASCII en una entidad para un juego de caracteres heredado, marca «Codificar todo lo no ASCII»; mira el ejemplo de abajo.

Entidades numéricas decimales

<>&"'
&#60;&#62;&#38;&#34;&#39;

Cambia el formato a Decimal y cada carácter especial se escribe como una referencia numérica decimal: < es <, > es >, & es &, " es " y ' es '. Las entidades decimales son la forma numérica más ampliamente compatible —todo analizador HTML y XML conforme las entiende—, lo que las convierte en una opción segura cuando no puedes asegurar que el sistema receptor admita entidades nombradas como ©.

Entidades numéricas hexadecimales

<>&"'
&#x3C;&#x3E;&#x26;&#x22;&#x27;

El formato Hex escribe cada carácter como una referencia numérica hexadecimal: < es <, > es >, & es &, " es " y ' es '. Hex y decimal son intercambiables —ambos referencian el mismo punto de código Unicode—, pero el hex se corresponde uno a uno con la notación U+XXXX que ves en el estándar Unicode, así que es la forma que muchos desarrolladores prefieren al documentar o razonar sobre puntos de código concretos.

Codificar todos los caracteres no ASCII

café
caf&eacute;  (named)  ·  caf&#233;  (decimal)  ·  caf&#xE9;  (hex)

Marca «Codificar todos los caracteres no ASCII» y cada punto de código por encima de 0x7F se convierte en una entidad, no solo los cinco reservados. La é de café pasa a la nombrada é, la decimal é o la hex é según el formato que elijas; las tres referencian el mismo carácter, U+00E9. Este modo es para páginas servidas en un juego de caracteres no Unicode, o para sistemas que corrompen UTF-8 en bruto, donde forzar todo a entidades ASCII de 7 bits garantiza que el texto sobrevive al transporte intacto.

Cómo usar el codificador de entidades HTML

  1. 1

    Pega tu HTML o texto

    Suelta el marcado o el texto plano que quieres escapar en el cuadro de entrada. La salida codificada se actualiza en vivo a medida que escribes: no hay botón de enviar y no se envía nada a ningún sitio.

  2. 2

    Elige el formato de entidad

    Nombrado es el valor por defecto legible (<, &, ©). Cambia a Decimal (<) o Hex (<) cuando un sistema receptor prefiera referencias numéricas o no puedas garantizar que se admitan entidades nombradas.

  3. 3

    Opcionalmente, codifica todo lo no ASCII

    Deja esto desactivado para páginas UTF-8 modernas, de modo que acentos y emojis sigan siendo caracteres en bruto legibles. Márcalo solo cuando el texto deba sobrevivir a un juego de caracteres heredado de un solo byte, lo que convierte cada carácter por encima de 0x7F en una entidad segura en ASCII.

  4. 4

    Copia el resultado codificado

    Pulsa Copiar para poner la cadena escapada en tu portapapeles, lista para pegar en una plantilla, una página de documentación o un campo de base de datos. Borrar reinicia ambos paneles para el siguiente fragmento.

  5. 5

    ¿Necesitas lo inverso? Invierte la dirección

    Usa Invertir dirección para cambiar al decodificador de entidades HTML cuando quieras convertir entidades de vuelta en los caracteres que representan.

Errores comunes al codificar HTML

Escapar el ampersand al final, causando doble escapado

Si reemplazas < y > antes que &, las entidades que acabas de crear ven su & reescapado, así que < se convierte en &lt; y se renderiza como texto literal. Escapa siempre & primero.

✗ Incorrecto
replace < and > first, then &  →  &lt;  becomes  &amp;lt;
✓ Correcto
escape & first, then the rest  →  &lt;  stays  &lt;

Usar ' para el apóstrofo en contextos heredados

' no está definido en HTML4 y algunos clientes de correo lo muestran literalmente. Usa el numérico ' o ', que todo analizador entiende, al apuntar a entornos antiguos o mixtos.

✗ Incorrecto
It&apos;s here  →  may render as  It&apos;s here
✓ Correcto
It&#x27;s here  →  renders as  It's here

Codificar los datos dos veces

Pasar texto ya escapado por el codificador otra vez lo codifica doblemente: & pasa a &amp; y el usuario ve & en vez de &. Escapa exactamente una vez, en el momento de la salida.

✗ Incorrecto
&amp;  encoded again  →  &amp;amp;  shows as  &amp;
✓ Correcto
&amp;  left as-is  →  renders as  &

Usar escapado HTML para un contexto de URL o JavaScript

Las entidades HTML no hacen seguro un valor dentro de una URL o un script en línea. Un espacio en una URL necesita %20, y una cadena en JavaScript necesita escapado de JS/JSON. Ajusta la codificación al lugar donde aterriza el valor.

✗ Incorrecto
href="/search?q=a&amp;b c"  →  the space still breaks the URL
✓ Correcto
href="/search?q=a%26b%20c"  →  URL-encoded, valid

Codificar lo no ASCII innecesariamente en una página UTF-8

Forzar café a café en una página UTF-8 moderna infla la fuente y perjudica la legibilidad sin beneficio. Deja lo no ASCII en bruto salvo que un juego de caracteres heredado de verdad requiera entidades.

✗ Incorrecto
caf&eacute; on a UTF-8 page  →  needless, harder to read
✓ Correcto
café on a UTF-8 page  →  valid and clean

Olvidar escapar las comillas dentro del valor de un atributo

Insertar una " sin escapar en un atributo permite que el valor se salga e inyecte nuevos atributos: un vector de XSS. Escapa siempre " (e idealmente ') en contexto de atributo, lo que esta herramienta hace por defecto.

✗ Incorrecto
title="He said "hi""  →  attribute breaks out
✓ Correcto
title="He said &quot;hi&quot;"  →  contained

Quién usa esta herramienta

Mostrar ejemplos de código en una página web
¿Escribes un tutorial o documentación que necesita mostrar HTML literal? Escapa el fragmento para que <strong>negrita</strong> aparezca como texto en vez de renderizarse. Pega el marcado, copia la salida escapada y suéltala dentro de un bloque <pre> o <code>.
Sanear la entrada de usuario contra XSS
Antes de insertar cualquier cadena suministrada por el usuario en tu HTML, escapa los cinco caracteres reservados para que una carga como <script>…</script> se vuelva texto inerte. Esta es la defensa fundamental contra el cross-site scripting cuando construyes marcado a mano.
Almacenar marcado en un campo de base de datos o JSON
¿Necesitas guardar un fragmento de HTML como cadena plana sin que se interprete aguas abajo? Codifícalo primero para que los corchetes angulares y ampersands sobrevivan al almacenamiento y se vuelvan a mostrar intactos, luego decodifica a la salida.
Crear plantillas de correo y contenido de CMS
Los clientes de correo y los gestores de contenido son implacables con los caracteres especiales en bruto. Escapa el conjunto reservado —y opcionalmente todo lo no ASCII— para que tu plantilla se renderice de forma consistente en clientes que quizá no compartan tu juego de caracteres.
Convertir texto para un juego de caracteres heredado
¿Apuntas a un sistema que no maneja UTF-8 en bruto? Activa «Codificar todo lo no ASCII» para reescribir cada letra acentuada, símbolo y emoji como una entidad segura en ASCII, garantizando que el texto sobreviva al transporte por canalizaciones limpias de 7 bits.
Escapar valores de atributo XML y SVG
XML y el SVG en línea comparten los caracteres reservados de HTML. Codifica comillas y corchetes angulares para que una cadena con marcado incrustado encaje de forma segura en el valor de un atributo sin romper la estructura del documento.
Consultar una entidad rápidamente
¿Olvidaste si el símbolo de marca registrada es ™ o ™? Escribe el carácter, lee su entidad nombrada, decimal y hex en la salida, o consulta la tabla de referencia rápida incorporada sin salir de la página.

Cómo funciona el codificador

Modo de caracteres especiales (por defecto)
Por defecto solo se escapan los cinco caracteres reservados de HTML — & < > " ' — siguiendo las reglas de serialización de HTML de WHATWG para una salida segura. & se reemplaza primero para que las entidades producidas para los otros caracteres no se escapen dos veces. Todos los demás caracteres, incluidos los no ASCII, pasan sin cambios.
El apóstrofo usa '
En lugar del nombrado ' —que no está definido en HTML4 y es inseguro en algunos analizadores antiguos—, la comilla simple se emite como el numérico ' (decimal '), referenciando U+0027. Esto coincide con la convención de librerías bien probadas como he y garantiza que la salida sea segura en HTML4, HTML5 y XML por igual.
Codificación nombrada, decimal y hex
El selector de formato controla cómo se escribe cada carácter escapado: Nombrado usa etiquetas definidas donde existen (<, ©), Decimal escribe el punto de código Unicode en base 10 (<) y Hex lo escribe en base 16 (<). Las formas numéricas referencian los mismos puntos de código que las nombradas y son intercambiables al analizarse.
Opción de codificar todo lo no ASCII
Cuando se activa, cada carácter con un punto de código por encima de 0x7F se convierte en una entidad en el formato elegido: café pasa a café (nombrado), café (decimal) o café (hex). Los caracteres astrales como los emojis se codifican con su punto de código completo (😀 → 😀). Esto produce una salida ASCII limpia de 7 bits para el transporte heredado.
Juego de caracteres frente a entidades
Un juego de caracteres define cómo se almacena el texto como bytes; una entidad es una forma de escribir un carácter usando solo ASCII. En una página UTF-8 los caracteres no ASCII no necesitan entidad, por lo que el valor por defecto los deja en bruto. Codificar todo solo es necesario cuando la salida debe atravesar un juego de caracteres no Unicode o un sistema hostil a UTF-8.
Local en el navegador, cero red
La codificación se ejecuta de forma síncrona en JavaScript en el hilo principal; no hay llamada a API, ni ida y vuelta a un trabajador o servidor, ni persistencia. La entrada nunca sale de la página, lo que puedes confirmar observando un panel de Red vacío mientras escribes.

Buenas prácticas para escapar HTML

Escapa en la salida, en el contexto correcto
Codifica los datos en el momento en que los insertas en HTML, no cuando los recibes, y ajusta la codificación al contexto. La codificación de entidades HTML es para el contenido de elemento y atributo HTML; usa codificación de URL dentro de URLs y escapado de JavaScript/JSON dentro de bloques de script. Escapar en el contexto equivocado deja un hueco.
Escapa siempre la entrada no confiable
Toda cadena que se origine en un usuario, una subida o una API externa debe escaparse antes de aterrizar en tu marcado. Esta es la defensa central contra XSS: una carga como <script>alert(1)</script> se vuelve texto inerte una vez que los corchetes angulares son entidades.
Prefiere el escapado incorporado donde exista
React, Vue y la mayoría de los motores de plantillas del servidor escapan el texto interpolado automáticamente; asignar element.textContent también escapa por ti. Usa esta herramienta para conversiones puntuales y para entender la salida, pero en el código de aplicación apóyate en el autoescapado del framework en vez de hacerlo a mano.
Deja lo no ASCII en bruto en páginas UTF-8
Si tu página declara <meta charset="utf-8">, no codifiques acentos y emojis en entidades: el UTF-8 en bruto es más corto, más legible e igual de correcto. Reserva «Codificar todo lo no ASCII» para los casos reales de juegos de caracteres heredados que de verdad lo requieran.
Usa el apóstrofo numérico en contextos mixtos
Cuando la salida pueda ser consumida por analizadores antiguos, procesadores XML o clientes de correo, prefiere el numérico ' sobre el nombrado ' para la comilla simple. La forma numérica se entiende en todas partes; la nombrada no, y un literal «'» perdido en el texto renderizado es un fallo común y evitable.

Preguntas frecuentes

¿Se envía mi texto a tu servidor cuando lo codifico?
No. Cada carácter se codifica por completo en tu navegador con JavaScript: abre DevTools → Red y verás que no se dispara ninguna petición al escribir o pegar. Nada se sube, nada se registra, nada se escribe en disco. Esa privacidad importa porque el marcado que la gente escapa suele ser sensible: un fragmento de un CMS privado, una plantilla de correo interna, una respuesta de soporte al cliente o un borrador de blog sin publicar. En un codificador del lado del servidor, cada uno de esos viajaría por la red a una máquina que no controlas; aquí el texto nunca sale de la pestaña. Esta es la razón de fondo para escapar HTML en el cliente en vez de pegarlo en un sitio web que, en principio, podría guardar una copia de todo lo que procesa.
¿Qué significa escapar HTML y por qué lo haría?
Escapar HTML significa reemplazar los caracteres que el navegador interpretaría como marcado por sus entidades equivalentes, de modo que se muestren como texto literal. El caso clásico es mostrar código en una página: si quieres que un visitante lea la cadena <strong>negrita</strong> en vez de ver la palabra «negrita» renderizada en negrita, escapas los corchetes angulares a <strong>negrita</strong>. El otro caso, más importante, es la seguridad: al insertar entrada de usuario no confiable en una página, escapar los cinco caracteres reservados (< > & " ') impide que esa entrada se salga de su contexto e inyecte una etiqueta <script>, la defensa fundamental contra el cross-site scripting (XSS). Todo texto que se origine en un usuario y acabe en tu HTML debe escaparse primero.
¿Cuál es la diferencia entre entidades nombradas, decimales y hex?
Las tres producen el mismo carácter; solo difieren en cómo se escribe la referencia. Una entidad nombrada usa una etiqueta legible —< para <, & para &, © para ©—, que es fácil de leer pero solo funciona con caracteres que tienen un nombre definido. Una entidad numérica decimal escribe el punto de código Unicode en base 10, como < para < o é para é. Una entidad hexadecimal escribe el mismo punto de código en base 16, como < para < o é para é, reflejando la notación U+XXXX del estándar Unicode. Las entidades nombradas son las más legibles y son el valor por defecto correcto para los caracteres reservados comunes; las numéricas (decimal o hex) pueden codificar cualquier punto de código, incluidos los que no tienen nombre, lo que las hace la opción segura cuando no puedes garantizar que el consumidor admita una entidad nombrada concreta.
¿Por qué el apóstrofo se codifica como ' y no como '?
Porque ' no es seguro en todas partes. La entidad nombrada ' solo se introdujo en HTML5 y XML; no está definida en HTML4, así que algunos analizadores antiguos y clientes de correo la muestran como el texto literal «'» en lugar de un apóstrofo. La referencia numérica ' (o su gemela decimal ') apunta al mismo carácter exacto, U+0027, y la entiende todo analizador conforme jamás escrito. Siguiendo el comportamiento de librerías bien probadas como he, esta herramienta emite el universalmente compatible ' para el apóstrofo, de modo que la salida es segura para colocar en cualquier contexto HTML, XML o de atributo sin sorpresas.
¿Necesito codificar caracteres no ASCII como é, — o 😀?
Normalmente no. Si tu página declara <meta charset="utf-8"> —como hace prácticamente cualquier página moderna—, entonces las letras acentuadas, las rayas y los emojis son perfectamente válidos como UTF-8 en bruto y no necesitan codificación alguna. Por eso el modo por defecto «caracteres especiales» los deja intactos, manteniendo la salida corta y legible. Solo necesitas codificar caracteres no ASCII cuando el texto se vaya a servir o almacenar en un juego de caracteres heredado de un solo byte, o se pase por un sistema que corrompe UTF-8 en bruto. En esos casos marca «Codificar todos los caracteres no ASCII» y cada punto de código por encima de 0x7F se convierte en una entidad segura en ASCII. En caso de duda, deja el valor por defecto y asegúrate de que la declaración de juego de caracteres sea correcta.
¿Escapar HTML me protege de los ataques XSS?
Escapar es la base de la defensa contra XSS, pero depende del contexto, así que la respuesta honesta es «sí, cuando se aplica correctamente». Codificar los cinco caracteres reservados antes de colocar entrada no confiable en el contenido de un elemento HTML detiene de forma fiable que un atacante inyecte etiquetas o scripts: una carga como <script>alert(1)</script> se vuelve texto inerte. La salvedad es que HTML tiene varios contextos, cada uno con sus propias reglas de escapado: dentro del valor de un atributo debes escapar las comillas (lo que esta herramienta hace), dentro de un bloque <script> o de un manejador de eventos en línea necesitas escapado de JavaScript, y dentro de una URL necesitas codificación de URL. Usa codificación de entidades HTML para contextos HTML y de atributo; para URLs recurre al codificador/decodificador de URL, y para incrustar una cadena en JavaScript o JSON consulta la herramienta Escapar JSON. Escapa en el momento de la salida, en el contexto donde aterrizan los datos.
¿Cómo invierto esto: convertir entidades de vuelta en caracteres?
Usa el decodificador de entidades HTML complementario. Toma una cadena llena de entidades como <div> & © y la convierte de vuelta en los caracteres reales <div> & ©, gestionando entidades nombradas, referencias decimales, referencias hexadecimales e incluso entidades heredadas sin terminar como &copy sin punto y coma final. Codificar y decodificar son inversos exactos para los caracteres reservados, así que puedes hacer ida y vuelta del texto por ambas herramientas sin pérdida. Si estás depurando por qué una página muestra el literal &lt; en vez de <, el decodificador es la forma más rápida de ver a qué resuelven realmente las entidades.
¿Codificar cambiará el texto visible o romperá mi diseño?
No; ese es justamente el objetivo. Una entidad es solo una grafía alternativa de un carácter: cuando un navegador analiza < renderiza un único glifo <, idéntico al carácter en bruto. Así que una página correctamente escapada se ve exactamente igual para un visitante que con caracteres en bruto; la única diferencia es que el navegador trata la versión escapada como texto y no como marcado. Lo único que cambia el escapado es la longitud y el aspecto de la cadena fuente, por lo que escapas solo lo que hace falta escapar. Si tu objetivo es limpiar e indentar marcado desordenado en vez de escaparlo, ese es otro trabajo: usa el formateador de HTML en su lugar.

Herramientas relacionadas

Ver todas las herramientas →