Codificador / decodificador de entidades HTML: escapa y desescapa HTML

Escapa texto para HTML con entidades con nombre o numéricas, decodifica referencias del tipo & de vuelta a caracteres y busca en una tabla de referencia de entidades.

Codificado
<p class="note">Fish & chips — £4.50 at Café "Ōshima" 🐟</p>

Referencia de entidades HTML

CarácterCon nombreDecimalHexCopiar
""""
&&&&
''''
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
·&nbsp;&#160;&#xA0;
¡&iexcl;&#161;&#xA1;
¢&cent;&#162;&#xA2;
£&pound;&#163;&#xA3;
¤&curren;&#164;&#xA4;
¥&yen;&#165;&#xA5;
¦&brvbar;&#166;&#xA6;
§&sect;&#167;&#xA7;
¨&uml;&#168;&#xA8;
©&copy;&#169;&#xA9;
ª&ordf;&#170;&#xAA;
«&laquo;&#171;&#xAB;
¬&not;&#172;&#xAC;
·&shy;&#173;&#xAD;
®&reg;&#174;&#xAE;
¯&macr;&#175;&#xAF;
°&deg;&#176;&#xB0;
±&plusmn;&#177;&#xB1;
²&sup2;&#178;&#xB2;
³&sup3;&#179;&#xB3;
´&acute;&#180;&#xB4;
µ&micro;&#181;&#xB5;
&para;&#182;&#xB6;
·&middot;&#183;&#xB7;
¸&cedil;&#184;&#xB8;
¹&sup1;&#185;&#xB9;
º&ordm;&#186;&#xBA;
»&raquo;&#187;&#xBB;
¼&frac14;&#188;&#xBC;
½&frac12;&#189;&#xBD;
¾&frac34;&#190;&#xBE;
¿&iquest;&#191;&#xBF;
À&Agrave;&#192;&#xC0;
Á&Aacute;&#193;&#xC1;
Â&Acirc;&#194;&#xC2;
Ã&Atilde;&#195;&#xC3;
Ä&Auml;&#196;&#xC4;
Å&Aring;&#197;&#xC5;
Æ&AElig;&#198;&#xC6;
Ç&Ccedil;&#199;&#xC7;
È&Egrave;&#200;&#xC8;
É&Eacute;&#201;&#xC9;
Ê&Ecirc;&#202;&#xCA;
Ë&Euml;&#203;&#xCB;
Ì&Igrave;&#204;&#xCC;
Í&Iacute;&#205;&#xCD;
Î&Icirc;&#206;&#xCE;
Ï&Iuml;&#207;&#xCF;
Ð&ETH;&#208;&#xD0;
Ñ&Ntilde;&#209;&#xD1;
Ò&Ograve;&#210;&#xD2;
Ó&Oacute;&#211;&#xD3;
Ô&Ocirc;&#212;&#xD4;
Õ&Otilde;&#213;&#xD5;
Ö&Ouml;&#214;&#xD6;
×&times;&#215;&#xD7;
Ø&Oslash;&#216;&#xD8;
Ù&Ugrave;&#217;&#xD9;
Ú&Uacute;&#218;&#xDA;
Û&Ucirc;&#219;&#xDB;
Ü&Uuml;&#220;&#xDC;
Ý&Yacute;&#221;&#xDD;
Þ&THORN;&#222;&#xDE;
ß&szlig;&#223;&#xDF;
à&agrave;&#224;&#xE0;
á&aacute;&#225;&#xE1;
â&acirc;&#226;&#xE2;
ã&atilde;&#227;&#xE3;
ä&auml;&#228;&#xE4;
å&aring;&#229;&#xE5;
æ&aelig;&#230;&#xE6;
ç&ccedil;&#231;&#xE7;
è&egrave;&#232;&#xE8;
é&eacute;&#233;&#xE9;
ê&ecirc;&#234;&#xEA;
ë&euml;&#235;&#xEB;
ì&igrave;&#236;&#xEC;
í&iacute;&#237;&#xED;
î&icirc;&#238;&#xEE;
ï&iuml;&#239;&#xEF;
ð&eth;&#240;&#xF0;
ñ&ntilde;&#241;&#xF1;
ò&ograve;&#242;&#xF2;
ó&oacute;&#243;&#xF3;
ô&ocirc;&#244;&#xF4;
õ&otilde;&#245;&#xF5;
ö&ouml;&#246;&#xF6;
÷&divide;&#247;&#xF7;
ø&oslash;&#248;&#xF8;
ù&ugrave;&#249;&#xF9;
ú&uacute;&#250;&#xFA;
û&ucirc;&#251;&#xFB;
ü&uuml;&#252;&#xFC;
ý&yacute;&#253;&#xFD;
þ&thorn;&#254;&#xFE;
ÿ&yuml;&#255;&#xFF;
Α&Alpha;&#913;&#x391;
Β&Beta;&#914;&#x392;
Γ&Gamma;&#915;&#x393;
Δ&Delta;&#916;&#x394;
Ε&Epsilon;&#917;&#x395;
Ζ&Zeta;&#918;&#x396;
Η&Eta;&#919;&#x397;
Θ&Theta;&#920;&#x398;
Ι&Iota;&#921;&#x399;
Κ&Kappa;&#922;&#x39A;
Λ&Lambda;&#923;&#x39B;
Μ&Mu;&#924;&#x39C;
Ν&Nu;&#925;&#x39D;
Ξ&Xi;&#926;&#x39E;
Ο&Omicron;&#927;&#x39F;
Π&Pi;&#928;&#x3A0;
Ρ&Rho;&#929;&#x3A1;
Σ&Sigma;&#931;&#x3A3;
Τ&Tau;&#932;&#x3A4;
Υ&Upsilon;&#933;&#x3A5;
Φ&Phi;&#934;&#x3A6;
Χ&Chi;&#935;&#x3A7;
Ψ&Psi;&#936;&#x3A8;
Ω&Omega;&#937;&#x3A9;
α&alpha;&#945;&#x3B1;
β&beta;&#946;&#x3B2;
γ&gamma;&#947;&#x3B3;
δ&delta;&#948;&#x3B4;
ε&epsilon;&#949;&#x3B5;
ζ&zeta;&#950;&#x3B6;
η&eta;&#951;&#x3B7;
θ&theta;&#952;&#x3B8;
ι&iota;&#953;&#x3B9;
κ&kappa;&#954;&#x3BA;
λ&lambda;&#955;&#x3BB;
μ&mu;&#956;&#x3BC;
ν&nu;&#957;&#x3BD;
ξ&xi;&#958;&#x3BE;
ο&omicron;&#959;&#x3BF;
π&pi;&#960;&#x3C0;
ρ&rho;&#961;&#x3C1;
ς&sigmaf;&#962;&#x3C2;
σ&sigma;&#963;&#x3C3;
τ&tau;&#964;&#x3C4;
υ&upsilon;&#965;&#x3C5;
φ&phi;&#966;&#x3C6;
χ&chi;&#967;&#x3C7;
ψ&psi;&#968;&#x3C8;
ω&omega;&#969;&#x3C9;
Œ&OElig;&#338;&#x152;
œ&oelig;&#339;&#x153;
Š&Scaron;&#352;&#x160;
š&scaron;&#353;&#x161;
Ÿ&Yuml;&#376;&#x178;
ƒ&fnof;&#402;&#x192;
ˆ&circ;&#710;&#x2C6;
˜&tilde;&#732;&#x2DC;
ϑ&thetasym;&#977;&#x3D1;
ϒ&upsih;&#978;&#x3D2;
ϖ&piv;&#982;&#x3D6;
·&ensp;&#8194;&#x2002;
·&emsp;&#8195;&#x2003;
·&thinsp;&#8201;&#x2009;
·&zwnj;&#8204;&#x200C;
·&zwj;&#8205;&#x200D;
·&lrm;&#8206;&#x200E;
·&rlm;&#8207;&#x200F;
–&ndash;&#8211;&#x2013;
—&mdash;&#8212;&#x2014;
‘&lsquo;&#8216;&#x2018;
’&rsquo;&#8217;&#x2019;
‚&sbquo;&#8218;&#x201A;
“&ldquo;&#8220;&#x201C;
”&rdquo;&#8221;&#x201D;
„&bdquo;&#8222;&#x201E;
†&dagger;&#8224;&#x2020;
‡&Dagger;&#8225;&#x2021;
•&bull;&#8226;&#x2022;
…&hellip;&#8230;&#x2026;
‰&permil;&#8240;&#x2030;
′&prime;&#8242;&#x2032;
″&Prime;&#8243;&#x2033;
‹&lsaquo;&#8249;&#x2039;
›&rsaquo;&#8250;&#x203A;
‾&oline;&#8254;&#x203E;
⁄&frasl;&#8260;&#x2044;
€&euro;&#8364;&#x20AC;
ℑ&image;&#8465;&#x2111;
℘&weierp;&#8472;&#x2118;
ℜ&real;&#8476;&#x211C;
™&trade;&#8482;&#x2122;
ℵ&alefsym;&#8501;&#x2135;
←&larr;&#8592;&#x2190;
↑&uarr;&#8593;&#x2191;
→&rarr;&#8594;&#x2192;
↓&darr;&#8595;&#x2193;
↔&harr;&#8596;&#x2194;
↵&crarr;&#8629;&#x21B5;
⇐&lArr;&#8656;&#x21D0;
⇑&uArr;&#8657;&#x21D1;
⇒&rArr;&#8658;&#x21D2;
⇓&dArr;&#8659;&#x21D3;
⇔&hArr;&#8660;&#x21D4;
∀&forall;&#8704;&#x2200;
∂&part;&#8706;&#x2202;
∃&exist;&#8707;&#x2203;
∅&empty;&#8709;&#x2205;
∇&nabla;&#8711;&#x2207;
∈&isin;&#8712;&#x2208;
∉&notin;&#8713;&#x2209;
∋&ni;&#8715;&#x220B;
∏&prod;&#8719;&#x220F;
∑&sum;&#8721;&#x2211;
−&minus;&#8722;&#x2212;
∗&lowast;&#8727;&#x2217;
√&radic;&#8730;&#x221A;
∝&prop;&#8733;&#x221D;
∞&infin;&#8734;&#x221E;
∠&ang;&#8736;&#x2220;
∧&and;&#8743;&#x2227;
∨&or;&#8744;&#x2228;
∩&cap;&#8745;&#x2229;
∪&cup;&#8746;&#x222A;
∫&int;&#8747;&#x222B;
∴&there4;&#8756;&#x2234;
∼&sim;&#8764;&#x223C;
≅&cong;&#8773;&#x2245;
≈&asymp;&#8776;&#x2248;
≠&ne;&#8800;&#x2260;
≡&equiv;&#8801;&#x2261;
≤&le;&#8804;&#x2264;
≥&ge;&#8805;&#x2265;
⊂&sub;&#8834;&#x2282;
⊃&sup;&#8835;&#x2283;
⊄&nsub;&#8836;&#x2284;
⊆&sube;&#8838;&#x2286;
⊇&supe;&#8839;&#x2287;
⊕&oplus;&#8853;&#x2295;
⊗&otimes;&#8855;&#x2297;
⊥&perp;&#8869;&#x22A5;
⋅&sdot;&#8901;&#x22C5;
⌈&lceil;&#8968;&#x2308;
⌉&rceil;&#8969;&#x2309;
⌊&lfloor;&#8970;&#x230A;
⌋&rfloor;&#8971;&#x230B;
⟨&lang;&#10216;&#x27E8;
⟩&rang;&#10217;&#x27E9;
◊&loz;&#9674;&#x25CA;
♠&spades;&#9824;&#x2660;
♣&clubs;&#9827;&#x2663;
♥&hearts;&#9829;&#x2665;
♦&diams;&#9830;&#x2666;

253 de 253 entidades. Los caracteres invisibles (espacios, unidores, guion opcional) se muestran como ·.

Funciona por completo en tu navegador. Nada de lo que introduces se nos envía ni se guarda. Ver todas las herramientas gratis.

¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.

Este codificador y decodificador de entidades HTML convierte caracteres a referencias de caracteres HTML y viceversa. Al codificar, los cinco caracteres que tienen un significado especial en el marcado (< > & " ') se convierten en &lt; &gt; &amp; &quot; y &#39;, para que el texto se pueda mostrar en una página o colocar en un atributo sin que se interprete como HTML. También puedes codificar todos los caracteres no ASCII, algo útil cuando una plantilla, un email o un sistema antiguo estropea el UTF-8.

Al decodificar se tratan las entidades con nombre como &eacute; y &hellip;, las referencias decimales como &#233; y las hexadecimales como &#xE9;, siguiendo las reglas del propio analizador de HTML5, incluidas sus peculiaridades con los puntos de código no válidos. Los nombres que no están en la tabla integrada de 253 entradas los busca el analizador HTML de tu navegador, así que se decodifican los más de 2000 nombres de HTML5. Los nombres desconocidos se dejan como están y se listan, en lugar de desaparecer sin avisar. Esta herramienta convierte texto; no es un sanitizador de HTML.

Cómo usarla

  1. Elige Codificar o Decodificar.
  2. Para codificar, elige el alcance: solo los cinco caracteres peligrosos (suficiente para HTML normal), todos los no ASCII, o todo excepto letras, dígitos y espacios.
  3. Elige referencias con nombre, decimales o hexadecimales. El modo con nombre usa la forma decimal para los caracteres que no tienen nombre.
  4. Escribe o pega; la salida se actualiza mientras escribes. Intercambiar pasa la salida a la entrada para comprobar la conversión de ida y vuelta.
  5. Busca en la tabla de referencia por nombre, carácter, código decimal o grupo (por ejemplo "arrow" o "greek") y copia una entidad.

Preguntas frecuentes

¿Qué caracteres hay que escapar en HTML?

En el contenido de texto hay que escapar < y &, porque inician etiquetas y entidades. Dentro del valor de un atributo, escapa también la comilla que delimita el atributo: " como &quot; o ' como &#39;. Escapar > como &gt; no es estrictamente necesario, pero es habitual e inofensivo. Todo lo demás, incluidas las letras acentuadas y los emojis, puede aparecer tal cual en una página UTF-8.

¿Qué diferencia hay entre &nbsp; y un espacio normal?

&nbsp; es U+00A0, un espacio de no separación. Los navegadores no cortan la línea en él ni agrupan varios en uno, a diferencia de los espacios normales. Es útil para mantener juntos en una línea "10 kg" o "Sr. Pérez". Usar filas de &nbsp; para maquetar es señal de que el trabajo le corresponde al CSS.

¿Uso &apos; o &#39;?

&apos; está definido en XML y en HTML5, pero no en HTML 4, así que los navegadores muy antiguos y algunos clientes de correo no lo reconocen. &#39; funciona en todas partes, por eso este codificador lo usa para el apóstrofo incluso en el modo con nombre. En una página HTML5 moderna, cualquiera de los dos vale.

¿Basta con codificar en HTML para evitar XSS?

Escapar < > & " ' evita la inyección en el texto HTML y en los valores de atributo entre comillas, que es el caso más común. No hace que un valor sea seguro dentro de un bloque <script>, un atributo style, un atributo sin comillas o una URL como href="javascript:...". Cada uno de esos contextos necesita su propia codificación o validación. Usa un motor de plantillas que escape por defecto, y un sanitizador como DOMPurify cuando tengas que aceptar HTML de los usuarios.

¿Por qué veo &amp;amp; o é en mi texto?

&amp;amp; significa que el texto se codificó en HTML dos veces: & se convirtió en &amp; y luego ese & se volvió a codificar. Decodifica una vez por cada capa de más. Ver é en lugar de é no es un problema de entidades, sino una discrepancia de codificación: se leyeron bytes UTF-8 como Windows-1252 o Latin-1. Corrige la declaración del juego de caracteres o la codificación de la conexión a la base de datos; las entidades solo ocultan el síntoma.

Referencias con nombre, decimales y hexadecimales

HTML ofrece tres formas de escribir el mismo carácter. Una referencia con nombre como &copy; es legible, pero solo existe para los caracteres a los que HTML les ha dado nombre. Una referencia decimal como &#169; y una hexadecimal como &#xA9; funcionan para cualquier punto de código Unicode, incluidos los emojis: 🌲 es &#127794; o &#x1F332;, una sola referencia para todo el carácter, no dos para sus mitades UTF-16.

Los 253 nombres de la tabla de esta herramienta son el juego de HTML 4 más &apos;. Los admiten todos los navegadores, clientes de correo y bibliotecas HTML. HTML5 añadió unos 2000 más, sobre todo símbolos matemáticos (&NotEqualTilde;, &bigotimes;), que se decodifican en los navegadores modernos pero conviene escribir como UTF-8 sin más o como referencias numéricas si el contenido va a pasar por herramientas antiguas.

Los nombres distinguen entre mayúsculas y minúsculas: &Eacute; es É y &eacute; es é. Unos pocos, como &COPY; y &AMP;, también existen en mayúsculas por motivos históricos, pero las formas en minúsculas son las estándar.

Cuándo codificar y cuándo no

• Mostrar en una página lo que escribe el usuario: escapa los cinco caracteres peligrosos en el momento de la salida, en la plantilla, no al guardar en la base de datos.

• Ejemplos de código en una entrada de blog o en documentación: escapa < y & para que las etiquetas se muestren como texto.

• Plantillas de email y sistemas antiguos con un UTF-8 poco fiable: codificar todo lo no ASCII como referencias numéricas hace que el contenido sobreviva a cualquier juego de caracteres.

• Páginas UTF-8 modernas: no codifiques letras acentuadas, comillas tipográficas ni emojis. Los caracteres sin codificar ocupan menos, se pueden buscar y son más fáciles de editar.

• JSON, URL y cadenas de JavaScript: ahí las entidades HTML no significan nada. Usa el escape de JSON, la codificación por porcentaje o los escapes de cadenas de JavaScript, respectivamente.

Cómo se decodifican las referencias numéricas

La especificación de HTML5 define qué debe hacer un analizador con las referencias numéricas extrañas, y este decodificador la sigue. &#0;, las referencias a puntos de código sustitutos (&#xD800;) y los valores por encima de U+10FFFF se convierten en el carácter de sustitución U+FFFD. Las referencias del rango &#128; a &#159; se leen como Windows-1252, así que &#150; es un guion medio y &#128; es el signo del euro, porque eso es lo que querían decir las páginas antiguas al escribirlas.

Las referencias con nombre solo se decodifican cuando terminan en punto y coma. Los navegadores también aceptan en el texto algunos nombres heredados sin él, como &copy o &amp, pero ese comportamiento depende de lo que venga después, así que el contenido siempre debería incluir el punto y coma.

Herramientas gratis relacionadas

  • Codificador / decodificador de URL — Codifica o decodifica texto con codificación porcentual para URL en modo componente, URL completa o formulario, y edita los parámetros de consulta de una URL en una tabla.
  • Codificador / decodificador Base64 — Codifica texto o archivos en Base64, convierte imágenes en data URI con fragmentos CSS e <img>, y decodifica Base64 a un archivo con vista previa. Nada sale de tu navegador.
  • Generador de metaetiquetas — Rellena el título, la descripción y los datos de la tarjeta social de una página y obtén un bloque <head> completo y bien escapado, con contadores de longitud en vivo.
  • Formateador JSON — Formatea, minifica y valida JSON, con los errores de análisis localizados por línea y columna. En tu navegador, sin subir nada.