Codificar / Decodificar Entidades HTML

Escapa o convierte entidades HTML al instante mientras escribes.

100% en tu navegador — no se sube nada

Convertir 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ácterEntidad con nombreNumé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 &amp; dentro de JavaScript ni de una cadena de consulta. Cada contexto pide su propia codificación.

ContextoQué codificarEjemplo
Texto HTML& < > se vuelven &amp; &lt; &gt;Ben & Jerry -> Ben &amp; Jerry
Valor de atributo& < > y la comilla que lo envuelve (" -> &quot;, ' -> &#x27;)title="a"b" se rompe; escribe title="a&quot;b"
Cadena de JavaScriptNo entidades HTML; usa \uXXXX (OWASP)</script> -> \u003C/script>
URL / valor de consultaPercent-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;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 &amp; Jerry. Pasa esa cadena ya escapada por el codificador una segunda vez y el & de &amp; se vuelve a escapar: &amp; se convierte en &amp;amp;. La página entonces muestra el texto literal &amp; en lugar de &.

  1. En el HTML de origen, busca &amp;amp; — o &amp;lt;, &amp;#241; — una entidad con nombre o numérica con amp; pegado delante.
  2. En la página, ver un &amp;, &lt; o &#241; como texto visible es la señal: al valor le sobra una vuelta de escape.
  3. 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 &lt; 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.

Herramientas relacionadas