Codificar / Decodificar Entidades HTML
Escapa o convierte entidades HTML al instante mientras escribes.
100% en tu navegador — no se sube nadaConvertir caracteres especiales a entidades HTML
Sobre este codificador de entidades HTML
En modo codificar, los caracteres que rompen el HTML —el ampersand, los signos de mayor y menor, y las comillas— se convierten en entidades seguras como & o <. Un modo opcional convierte además todo lo que no sea ASCII: la ñ y las vocales acentuadas se vuelven entidades con nombre como ñ y á, y el resto recibe un código hexadecimal. El modo decodificar hace lo inverso y entiende entidades con nombre, decimales y hexadecimales, y deja intacto lo que no sea una entidad válida.
Es útil para desarrolladores que escapan contenido de usuarios antes de mostrarlo, para quienes pegan texto en un CMS o en plantillas de correo HTML donde los acentos se dañan, y para limpiar HTML extraído lleno de códigos como é. Todo corre localmente en tu navegador con JavaScript: el texto que pegas nunca se sube ni se guarda en ningún servidor.
La ñ y los acentos que salen como mojibake
El caso más común en español no es un ataque, sino texto que sale roto: José aparece como José, mañana como mañana. Casi siempre es un choque de codificación — bytes UTF-8 leídos como Latin-1 — pero cuando el destino no respeta UTF-8 (correo HTML, feeds RSS, sistemas viejos), la salida segura es convertir cada carácter no ASCII a su entidad. Cada letra tiene una entidad con nombre y una numérica, y el navegador acepta las dos por igual.
| Carácter | Entidad con nombre | Numérica (decimal) |
|---|---|---|
| ñ | ñ | ñ |
| á | á | á |
| é | é | é |
| í | í | í |
| ó | ó | ó |
| ú | ú | ú |
| ü | ü | ü |
La tabla completa de nombres de entidades vive en su propia página de referencia; aquí basta con saber que codificar todo lo no ASCII deja el texto a salvo de cualquier lectura equivocada de la codificación.
El mismo carácter se escapa distinto según el contexto
Un mismo texto no tiene un solo escape correcto: el lugar donde cae decide. Las cinco reglas de HTML cubren el texto y los valores de atributo, pero en cuanto el valor entra en un bloque <script> o en una URL, las entidades HTML son la herramienta equivocada, porque el navegador nunca decodifica & dentro de JavaScript ni de una cadena de consulta. Cada contexto pide su propia codificación.
| Contexto | Qué codificar | Ejemplo |
|---|---|---|
| Texto HTML | & < > se vuelven & < > | Ben & Jerry -> Ben & Jerry |
| Valor de atributo | & < > y la comilla que lo envuelve (" -> ", ' -> ') | title="a"b" se rompe; escribe title="a"b" |
| Cadena de JavaScript | No entidades HTML; usa \uXXXX (OWASP) | </script> -> \u003C/script> |
| URL / valor de consulta | Percent-encoding, %HH (otro paso) | ñ -> %C3%B1, el espacio -> %20 |
Por eso "solo escápalo" falla. Primero pregunta en qué contexto va el valor y luego elige el codificador: este para HTML, el URL Encoder para las URLs.
El error del doble escape: &amp;
El ampersand es un carácter especial en sí mismo, así que escapar no es idempotente: hacerlo dos veces no da lo mismo que hacerlo una. Codifica Ben & Jerry y obtienes Ben & Jerry. Pasa esa cadena ya escapada por el codificador una segunda vez y el & de & se vuelve a escapar: & se convierte en &amp;. La página entonces muestra el texto literal & en lugar de &.
- En el HTML de origen, busca &amp; — o &lt;, &#241; — una entidad con nombre o numérica con amp; pegado delante.
- En la página, ver un &, < o ñ como texto visible es la señal: al valor le sobra una vuelta de escape.
- Arréglalo decodificando una vez (pégalo en modo decodificar), no escapando de nuevo. Escapa en una sola capa: o la plantilla escapa el dato, o el dato ya viene escapado, nunca las dos.
Tablas de referencia
Preguntas frecuentes
¿Para qué sirven las entidades HTML?
Permiten mostrar caracteres reservados como texto —por ejemplo, escribir < para que se vea el signo de menor sin que el navegador lo interprete como una etiqueta— y representar acentos o símbolos en sistemas que no manejan bien UTF-8.
¿Cuándo conviene codificar todo lo no ASCII?
Cuando el destino no garantiza UTF-8: plantillas de correo HTML, sistemas antiguos o feeds RSS que dañan los acentos. En una página moderna con charset UTF-8 basta con escapar los cinco caracteres esenciales (&, <, >, y las comillas).
¿Mi texto se envía a algún servidor?
No. La codificación y la decodificación ocurren completamente en tu navegador con JavaScript. Nada se sube ni se guarda, así que puedes procesar contenido privado o confidencial sin riesgo.