📄

Markdown

Markdown es un lenguaje de marcado minimalista que convierte texto plano con sintaxis simple en HTML válido. Creado en 2004 por John Gruber y Aaron Swartz, hoy es el estándar de facto para documentación técnica, READMEs y foros.

Markdown nació con un objetivo: que escribir contenido formateado para web sea tan fácil como escribir un email. Antes de Markdown, publicar en blogs o foros requería escribir HTML crudo (<p>texto</p>) o usar editores WYSIWYG lentos y con output sucio.

La sintaxis es deliberadamente minimalista. Títulos se marcan con #, negritas con **texto**, listas con guiones. Un parser convierte eso a HTML semánticamente correcto. Ejemplo:

## Título\n- Item 1\n- Item 2

Se convierte en:

<h2>Título</h2>\n<ul>\n <li>Item 1</li>\n <li>Item 2</li>\n</ul>

Hoy GitHub, Reddit, Discord, Stack Overflow, Notion y prácticamente toda herramienta de documentación soporta Markdown. Los archivos README.md de proyectos open-source están escritos en Markdown. Incluso WhatsApp usa una variante simplificada (*negritas*, _itálicas_).

La especificación original de Gruber es intencionalmente laxa, lo que generó dialectos. CommonMark (2014) estandarizó la sintaxis core:

  • Encabezados: # H1, ## H2, hasta ###### H6.
  • Énfasis: *itálica* o _itálica_, **negrita** o __negrita__.
  • Listas: - Item (desordenada) o 1. Item (ordenada).
  • Links: [texto](url) o [texto](url "título").
  • Imágenes: ![alt](url).
  • Código inline: `código`. Bloques: tres backticks o indentación de 4 espacios.
  • Citas: > Texto citado.
  • Línea horizontal: --- o ***.

Extensiones populares (GitHub Flavored Markdown, GFM) añaden tablas (| col1 | col2 |), checkboxes (- [ ] tarea), strikethrough (~~tachado~~) y syntax highlighting con ```javascript.

Parsers comunes: marked (JavaScript), markdown-it (JS con plugins), Python-Markdown, kramdown (Ruby). La mayoría soportan extensiones vía plugins.

Documentación técnica: READMEs, wikis internas, docs de APIs. Markdown es legible en crudo (sin renderizar), ideal para `git diff` y code review.

Blogs y CMSs headless: sitios estáticos generados con Next.js, Gatsby o Hugo suelen usar Markdown para posts. Los frontmatters YAML (---\ntitle: Post\n---) añaden metadata.

Foros y plataformas colaborativas: Reddit, Discord, Slack usan Markdown para que usuarios formateen sin botones. Reduce complejidad del editor y evita XSS (el HTML lo genera el servidor, no el usuario).

Toma de notas: Obsidian, Notion (parcial), Roam Research y Logseq usan Markdown como formato subyacente. Portabilidad total: tus notas son archivos .md que podés abrir en cualquier editor.

No usar para: layouts complejos (Markdown no tiene grillas ni flexbox), emails HTML (mejor usar MJML o HTML directo con inline CSS), o contenido que requiere interactividad (formularios, widgets).

Markdown vs HTML: Markdown es más rápido de escribir y leer. HTML da control total pero es verboso. Muchos proyectos embeben HTML dentro de Markdown para casos especiales (<details>, iframes).

Markdown vs reStructuredText (RST): RST es más potente (soporta directivas complejas, footnotes avanzadas) pero la sintaxis es más críptica. Python y Sphinx usan RST; el resto del mundo usa Markdown.

Markdown vs AsciiDoc: AsciiDoc es más maduro para documentación larga (libros técnicos, manuales). Markdown escala mal en proyectos con cientos de páginas interconectadas sin extensiones como MDX.

Markdown vs WYSIWYG (Notion, Google Docs): los editores WYSIWYG son más amigables para no-técnicos pero generan HTML propietario. Markdown es texto plano, versionable con Git y portable entre herramientas.

La tendencia actual: MDX (Markdown + JSX), que permite embeber componentes React dentro de Markdown. Lo usa Next.js, Docusaurus y Gatsby para docs interactivas.

Ejemplos

  • # Título principal\n## Subtítulo\nTexto con **negrita** y *itálica*.
  • [Link a Genfy](https://genfy.io)\n![Logo](https://genfy.io/logo.png)
  • ```javascript\nconst x = 42;\nconsole.log(x);\n```
  • - [ ] Tarea pendiente\n- [x] Tarea completada
  • > Cita famosa\n> — Autor

Preguntas frecuentes

¿Puedo usar HTML dentro de Markdown?

Sí. La mayoría de parsers permiten embeber HTML crudo cuando Markdown no alcanza. Por ejemplo, <details>, <video> o tablas complejas. El HTML se pasa sin modificar al output final.

¿Qué es CommonMark?

Una especificación estricta de Markdown creada en 2014 para resolver ambigüedades del spec original de Gruber. Define comportamiento exacto para edge cases y es la base de GitHub Flavored Markdown (GFM) y muchos parsers modernos.

¿Markdown soporta tablas?

La especificación original no, pero GitHub Flavored Markdown (GFM) y otras extensiones sí. Sintaxis: | Col1 | Col2 | seguido de |------|------| y luego las filas. No todos los parsers lo soportan sin configuración.