Encabezados en Markdown: los 6 niveles de título
Cómo crear títulos y subtítulos en Markdown con almohadillas. Los seis niveles, la sintaxis subrayada alternativa, los enlaces ancla automáticos y los errores que impiden que un encabezado se procese.
Los encabezados son la columna vertebral de cualquier documento: definen la jerarquía, generan el índice y, en una página web, le dicen a Google de qué trata cada sección.
En Markdown se escriben con almohadillas #, una por cada nivel de profundidad.
Los seis niveles
Markdown admite seis niveles de encabezado, igual que HTML (<h1> a <h6>). Se escriben poniendo entre una y seis almohadillas al principio de la línea, seguidas de un espacio.
# Encabezado 1
## Encabezado 2
### Encabezado 3
#### Encabezado 4
##### Encabezado 5
###### Encabezado 6
El resultado es este:
No existe un séptimo nivel: si escribes siete almohadillas, la mayoría de procesadores lo tratan como texto normal.
El espacio después de la almohadilla es obligatorio
Este es, con diferencia, el fallo más común y el que más desconcierta:
#Esto NO es un encabezado
# Esto SÍ es un encabezado
El Markdown original de John Gruber era permisivo y aceptaba #Título sin espacio. CommonMark y GitHub Flavored Markdown exigen el espacio. Como hoy casi todo el ecosistema (GitHub, Obsidian, Notion, Discord, Reddit) sigue una de esas dos especificaciones, la regla práctica es: pon siempre el espacio.
Si escribes #Título en GitHub verás literalmente #Título en el resultado, con la almohadilla incluida.
Cerrar el encabezado (opcional)
Puedes cerrar un encabezado repitiendo las almohadillas al final de la línea:
### Encabezado 3 ###
El resultado es idéntico a no cerrarlo. Es puramente estético, una costumbre heredada de quienes venían de otros lenguajes de marcado. El número de almohadillas del cierre ni siquiera tiene que coincidir con el de apertura.
La sintaxis alternativa: subrayado
Existe una segunda forma de escribir encabezados, llamada Setext, que consiste en subrayar el texto con signos igual o guiones:
Esto es un encabezado 1
=======================
Esto es un encabezado 2
-----------------------
Limitaciones importantes:
- Solo funciona para los dos primeros niveles. No hay forma de escribir un
<h3>así. - Basta con un solo carácter (
=o-) para que funcione, aunque por legibilidad se suele igualar al ancho del texto.
Es una sintaxis válida y perfectamente soportada, pero está en desuso: cuesta más de mantener y no escala más allá del nivel 2. Si estás empezando, quédate con las almohadillas.
Cuidado: los guiones también crean líneas horizontales
Un efecto secundario que sorprende a mucha gente:
Un párrafo cualquiera
---
Eso no genera un párrafo seguido de una línea horizontal: genera un encabezado de nivel 2 con el texto “Un párrafo cualquiera”. Para que los guiones se interpreten como línea horizontal tiene que haber una línea en blanco por encima.
Enlaces ancla automáticos
Casi todos los procesadores modernos generan automáticamente un id para cada encabezado, lo que permite enlazar directamente a una sección concreta.
La regla habitual: se pasa a minúsculas, se sustituyen los espacios por guiones y se eliminan los signos de puntuación.
| Encabezado | Ancla generada |
|---|---|
## Instalación | #instalación |
## Primeros pasos | #primeros-pasos |
## ¿Qué es Markdown? | #qué-es-markdown |
Para enlazarlo desde cualquier punto del documento:
Salta a la sección de [primeros pasos](#primeros-pasos).
Es exactamente el mecanismo que hace funcionar el índice que ves en el lateral de esta página. Tienes el detalle completo en enlaces.
⚠️ El tratamiento de tildes y caracteres especiales varía entre plataformas. GitHub conserva las tildes; otros procesadores las eliminan. Si un ancla no funciona, mira el HTML generado para ver el id real.
Buenas prácticas
Un solo <h1> por documento. Es el título de la página. Si tu generador de sitios ya pinta el título a partir del frontmatter —como hace esta web—, empieza el cuerpo directamente en ## para no acabar con dos <h1>.
No te saltes niveles. Pasar de ## a #### rompe la jerarquía para los lectores de pantalla y para los rastreadores. Baja de uno en uno.
No uses encabezados para dar formato. Si quieres una línea grande y en negrita pero que no sea una sección, usa negrita. Un encabezado es una promesa estructural, no un tamaño de letra.
Deja una línea en blanco antes y después. No siempre es obligatorio, pero evita sorpresas en procesadores estrictos.
Compatibilidad
| Sintaxis | Original | CommonMark | GitHub (GFM) |
|---|---|---|---|
# Título (con espacio) | ✅ | ✅ | ✅ |
#Título (sin espacio) | ✅ | ❌ | ❌ |
Cierre ### Título ### | ✅ | ✅ | ✅ |
Subrayado === / --- | ✅ | ✅ | ✅ |
| Ancla automática | ❌ | ❌ | ✅ |
Pruébalo
Escribe tus encabezados y comprueba el resultado al instante en el previsualizador de Markdown, o convierte el documento entero a HTML para ver las etiquetas <h1>–<h6> que se generan.