Cómo decodificar entidades HTML
- Pega el texto escapado en HTML que quieres convertir de vuelta a texto plano en la caja de arriba, entidades con nombre como
&o<, entidades numéricas como'o', o una mezcla de ambas. - Haz clic en Decodificar HTML, el resultado en texto plano aparece al instante, justo debajo.
- Haz clic en Copiar al portapapeles para llevarte el texto decodificado, y pégalo donde necesites los caracteres reales.
Sin archivo que elegir, sin subida, todo es una operación de un clic dentro del navegador.
¿Por qué decodificar entidades HTML?
Las entidades HTML son los sustitutos escapados, seguros para incrustar, de caracteres que de otro modo serían ambiguos o inseguros dentro del marcado HTML: & para un & literal, </> para </>, "/' para caracteres de comilla, y referencias numéricas como é o 🎉 para cualquier cosa codificada por su punto de código Unicode en bruto. Eso es exactamente lo que quieres dentro de un documento HTML real, pero es la forma equivocada en cuanto copias ese mismo texto fuera del código fuente de una página, una exportación de un CMS, un feed RSS/Atom, o una respuesta de API que devuelve cadenas escapadas en HTML, y solo quieres leer o reutilizar el contenido real.
Esta es una tarea habitual para cualquiera que depure por qué una página muestra & literal en lugar de &, limpie texto copiado de ver-código-fuente o una página extraída, convierta una vieja exportación de CMS u hoja de cálculo de vuelta a texto plano, o trabaje con una API que devuelve cadenas escapadas en entidades HTML dentro de JSON. Esta página ejecuta la decodificación real en cuanto haces clic en el botón.
Entidades con nombre y numéricas, decodificadas correctamente
Esta herramienta reconoce dos formas distintas de entidad. Las entidades con nombre son las reconocibles como &, <, o ©, cada una se busca en una tabla modesta de nombres comunes (mira las preguntas frecuentes para la lista exacta; deliberadamente no pretende cubrir la tabla completa de más de 2000 referencias de caracteres con nombre de HTML5, ya que una implementación verdaderamente completa necesitaría un archivo de datos grande que la mayoría del texto pegado nunca llega a usar). Las entidades numéricas son ' (decimal) o '/' (hexadecimal, en cualquier caso), y se analizan como un punto de código en bruto y se convierten directamente, así que funcionan para cualquier carácter, incluidos los que no tienen entidad con nombre.
La decodificación numérica usa String.fromCodePoint en lugar del más conocido String.fromCharCode, lo cual importa para caracteres por encima del Plano Multilingüe Básico, la mayoría de los emoji, por ejemplo. String.fromCharCode solo entiende unidades de código UTF-16 de 16 bits, así que una entidad de emoji como 🎉 saldría como dos caracteres de mitad de sustituto rotos en lugar de 🎉. String.fromCodePoint reconstruye el punto de código real en un solo paso, así que el ciclo completo de codificar y luego decodificar siempre llega exactamente al carácter original.
Las entidades no reconocidas se dejan tal cual, no se corrompen
No todas las secuencias con forma &...; de un documento real están en la tabla de esta herramienta, y un & suelto (como en “Tom & Jerry” o “R&D”) no es una entidad válida en absoluto. En lugar de adivinar, eliminar silenciosamente o lanzar un error en cualquiera de esos casos, esta herramienta los deja exactamente tal como se escribieron, una entidad con nombre no reconocida como ¬real; pasa sin cambios, y un ampersand simple que no va seguido de un patrón de entidad válido nunca coincide en primer lugar. Lo único que cambia es el texto que esta herramienta realmente reconoce como una entidad real.
Sin DOM por diseño
Una forma habitual de construir un decodificador rápido de entidades HTML es apoyarse en el propio navegador, asignar la cadena escapada al innerHTML de un <textarea> oculto y leer de vuelta su .value, o usar DOMParser. Ambas funcionan bien en una pestaña de navegador real, pero ambas necesitan que exista un DOM real, algo que un simple entorno de pruebas Node.js no ofrece. Esta herramienta en cambio usa una única expresión regular más una tabla de búsqueda plana y String.fromCodePoint (JavaScript ordinario sin ninguna dependencia de DOM) así que su lógica exacta de decodificación puede probarse unitariamente directamente en Node, igual que cualquier otra herramienta de este sitio, en lugar de solo poder ejercitarse dentro de un navegador real.
Tu texto nunca sale de tu dispositivo
La decodificación de entidades HTML no necesita un servidor, es una sustitución de texto pura que se ejecuta al instante en JavaScript. Algunas herramientas online de “decodificador HTML” igualmente envían tu texto a través de un backend, lo cual es un riesgo innecesario si lo que pegas es contenido no publicado, documentación interna, o datos de usuarios que preferirías no entregar a los registros de acceso del servidor de un tercero.
Esta herramienta ejecuta la sustitución en el instante en que haces clic en el botón, usando solo el propio motor de JavaScript de tu navegador, nada se transmite, registra ni almacena, y funciona exactamente igual sin conexión una vez que la página ha cargado.
Usos habituales
- Limpiar texto copiado del código fuente de una página HTML o ver-código-fuente que muestra
&/<literal en lugar de los caracteres reales - Convertir una vieja exportación de CMS u hoja de cálculo de vuelta a texto plano y legible
- Leer el contenido real de un campo de respuesta de API o feed RSS/Atom que llega escapado en entidades HTML
- Decodificar una entidad numérica como
éo una entidad de emoji como🎉de vuelta a su carácter real - Depurar por qué una página muestra el nombre de una entidad literal en lugar del carácter que se supone que representa

