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.
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
¿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 | |-----------|-------|---------|-----| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | (espacio) | |   |   | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | é | é | é | é |
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:
// < → < > → > & → & " → " ' → '
// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
return str
.replace(/&/g, '&') // & first, so later entities are not double-escaped
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, '''); // numeric form — safe in HTML4, HTML5 and XML
}
const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → <a href="x">Tom & Jerry's</a>
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>
<a href="x">Tom & Jerry's</a>
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'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
<>&"'
<>&"'
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
<>&"'
<>&"'
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é (named) · café (decimal) · café (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
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
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
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
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
¿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 < y se renderiza como texto literal. Escapa siempre & primero.
replace < and > first, then & → < becomes &lt;
escape & first, then the rest → < stays <
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.
It's here → may render as It's here
It'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 & y el usuario ve & en vez de &. Escapa exactamente una vez, en el momento de la salida.
& encoded again → &amp; shows as &
& 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.
href="/search?q=a&b c" → the space still breaks the URL
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.
café on a UTF-8 page → needless, harder to read
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.
title="He said "hi"" → attribute breaks out
title="He said "hi"" → 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?
¿Qué significa escapar HTML y por qué lo haría?
¿Cuál es la diferencia entre entidades nombradas, decimales y hex?
¿Por qué el apóstrofo se codifica como ' y no como '?
¿Necesito codificar caracteres no ASCII como é, — o 😀?
¿Escapar HTML me protege de los ataques XSS?
¿Cómo invierto esto: convertir entidades de vuelta en caracteres?
¿Codificar cambiará el texto visible o romperá mi diseño?
Herramientas relacionadas
Ver todas las herramientas →Decodificador y Codificador Base64
Codificación y Formato
Decodifica y codifica Base64 online de forma gratuita. Conversión en tiempo real con soporte completo de UTF-8 y emojis. 100% privado — funciona en tu navegador. Sin registro.
Conversor de Base64 a Imagen
Codificación y Formato
Decodifica una cadena Base64 o data URI de vuelta a una imagen en tu navegador. Previsualiza, lee dimensiones y MIME, luego descarga como PNG, JPG, GIF, SVG. Sin subir.
Convertidor de CSV a JSON
Codificación y Formato
Convierte CSV a JSON en tu navegador. RFC 4180, inferencia de tipos, fila de cabecera, seguro para big-int. 100% privado, sin carga.
Conversor de .env a JSON
Codificación y Formato
Pega un archivo .env y obtén JSON al instante. Tus contraseñas, claves API y tokens nunca salen del navegador: 100% privado, sin subidas, gratis.
Decodificador de entidades HTML gratuito — Desescapar HTML
Codificación y Formato
Decodifica entidades HTML y desescapa HTML online: gratis, sin registro, 100 % en tu navegador. Convierte referencias nombradas, decimales y hex de vuelta en caracteres; nunca se sube.
Conversor de HTML a Markdown
Codificación y Formato
Convierte HTML a Markdown limpio en tu navegador — tablas GFM, listas de tareas y enlaces. Elige encabezados ATX/Setext y enlaces en línea o por referencia. Ideal para migrar contenido web o alimentar LLMs. 100% privado.