Subrayado en Markdown: por qué no existe y cómo hacerlo igualmente
Markdown no tiene sintaxis de subrayado, y es intencionado. Cómo subrayar con las etiquetas u e ins de HTML, el caso especial de Discord y qué usar en su lugar.
Buscas el equivalente de **negrita** para subrayar y no lo encuentras. No es que se te escape: Markdown no tiene sintaxis de subrayado. Ni la original de Gruber, ni CommonMark, ni la extendida de GitHub.
Y no es un olvido.
Por qué se dejó fuera
En una página web, el texto subrayado significa una cosa: es un enlace. Es la convención más antigua y más interiorizada de la interfaz de un navegador; la gente lleva treinta años haciendo clic en lo que está subrayado.
Markdown nació para escribir texto que se convierte en HTML, así que añadir una sintaxis cómoda para fabricar falsos enlaces habría sido tirarse piedras sobre el propio tejado. Los asteriscos y guiones bajos se reservaron para negrita y cursiva, que transmiten énfasis sin colisionar con nada.
La solución: HTML embebido
Markdown acepta HTML dentro del documento. Para subrayar, la etiqueta es <u>:
Esto va <u>subrayado</u> dentro del párrafo.
Esto va subrayado dentro del párrafo.
Funciona en cualquier procesador que no filtre el HTML, que son la mayoría. Es la respuesta corta y la que vas buscando.
Un aviso: en un bloque de HTML de varias líneas, deja una línea en blanco antes y después. Si lo pegas justo debajo de un párrafo, algunos procesadores tratan el conjunto como un solo bloque HTML y dejan de interpretar el Markdown de dentro.
<u> o <ins>: no son lo mismo
Hay dos etiquetas que pintan igual y significan cosas distintas:
| Etiqueta | Qué significa | Cuándo usarla |
|---|---|---|
<u> | Texto que se anota de forma no textual, sin más | Subrayado puramente visual |
<ins> | Contenido insertado en el documento | Marcar una adición, junto a <del> |
Si estás mostrando cambios sobre un texto, la pareja correcta es <ins> y <del>, no <u>:
El plazo era <del>el viernes</del> <ins>el lunes</ins>.
El plazo era
el viernesel lunes.
Para todo lo demás, <u>.
El caso raro: Discord
Discord usa su propio dialecto y ahí sí hay atajo, pero con un significado distinto al estándar:
__texto__ → subrayado en Discord
__texto__ → negrita en Markdown estándar
Es la fuente de confusión número uno con este tema. Si copias un mensaje de Discord a GitHub, a Obsidian o a tu blog, lo que allí salía subrayado aquí saldrá en negrita. No es un fallo del destino: es que Discord reasignó esa sintaxis.
Fuera de Discord, __texto__ es exactamente lo mismo que **texto**. Lo tienes en detalle en negrita y cursiva.
Compatibilidad
| Plataforma | <u>texto</u> | Atajo propio |
|---|---|---|
| GitHub / GitLab | ✅ | — |
| Obsidian | ✅ | Ctrl/Cmd + U inserta <u> |
| Notion | ✅ | Ctrl/Cmd + U (formato propio) |
| VS Code (vista previa) | ✅ | — |
| Typora | ✅ | Ctrl/Cmd + U |
| Discord | ❌ | __texto__ |
| ❌ | — | |
| Slack | ❌ | — |
Las plataformas que lo marcan con ❌ filtran el HTML por seguridad: ahí no hay forma de subrayar, y verás la etiqueta escrita tal cual o simplemente desaparecerá.
Casi siempre hay algo mejor
Antes de subrayar, merece la pena pararse un segundo, porque el subrayado suele ser la peor de las opciones disponibles:
- Para dar énfasis, usa negrita. Es lo que espera el lector y lo que entienden todas las plataformas.
- Para un matiz o un término que introduces, usa cursiva.
- Para resaltar como con un rotulador, algunos procesadores (Obsidian, y GitHub desde 2024) admiten
==texto==. - Para marcar algo eliminado o corregido, usa tachado o la pareja
<del>/<ins>.
El subrayado se queda para cuando reproduces un documento que ya venía subrayado, o cuando una guía de estilo te lo impone.
Un apunte de accesibilidad
Volvemos al principio: el subrayado se lee como un enlace. Alguien que recorra la página por encima intentará hacer clic, y no pasará nada.
Los lectores de pantalla, además, no anuncian el subrayado por defecto, igual que ocurre con el tachado. Es decir: molesta a quien ve la página y no aporta nada a quien no la ve. Si la distinción es importante, dila con palabras y no solo con el formato.
No lo confundas con los encabezados subrayados
Buscando “subrayado en Markdown” es fácil acabar en la sintaxis setext, que es otra cosa: consiste en subrayar una línea con = o - para convertirla en un título.
Un título de nivel 1
====================
Ahí el subrayado no se ve en el resultado; es la marca que le dice al procesador que esa línea es un encabezado. Lo tienes explicado en encabezados.
Pruébalo
Comprueba si tu procesador respeta la etiqueta <u> pegando el texto en el previsualizador de Markdown.