HTML a Markdown en Python: mejores herramientas y técnicas

Última actualización: August 19, 2026
HTML a Markdown en Python: mejores herramientas y técnicas

Déjame contarte una historia. Hace unos años, andaba metido hasta el cuello en un proyecto que implicaba pelearme con miles de páginas web: HTML desordenado, estilos en línea y más <div> de los que cualquiera querría ver. ¿Mi objetivo? Pasar todo ese contenido a un formato limpio y fácil de leer para la wiki interna de mi equipo, que, como muchas herramientas modernas, funcionaba con Markdown. Lo admito: al principio recurrí al método de toda la vida, copiar, pegar y rezar. Pero después del tercer café y de reventar la quinta tabla, me quedó clarísimo que tenía que haber una forma mejor.

HTML to Markdown power.png

Y resulta que no era el único. Tanto si estás creando documentación, preparando datos de entrenamiento para un modelo de IA o simplemente quieres que tus apuntes dejen de parecer un plato de espaguetis y se vean más como una lista de compras bien ordenada, convertir HTML a Markdown es una habilidad clave para cualquier usuario de negocio. ¿Y Python? Es la navaja suiza para este trabajo: accesible, flexible y con librerías que hacen que el proceso sea casi entretenido. En esta guía te voy a explicar por qué hacerlo, cómo hacerlo y en qué fijarte para no caer en esos casos raros que siempre aparecen, con consejos prácticos de punta a punta.

¿Qué es la conversión de HTML a Markdown?

Vamos por partes: HTML (HyperText Markup Language) es el lenguaje que da forma a la web. Va perfecto para los navegadores, pero no tanto cuando quieres leer o editar contenido directamente, salvo que te guste descifrar paredes enteras de signos de menor y mayor que. Markdown, en cambio, es una sintaxis ligera de texto plano que se lee y se escribe con mucha facilidad. En lugar de <h1>Título</h1>, escribes # Título. En vez de <strong>negrita</strong>, escribes **negrita**. Es tan legible que incluso tus compañeros no técnicos pueden entrarle sin problema.

Convertir HTML a Markdown significa transformar todas esas etiquetas HTML en su equivalente en Markdown. Por ejemplo:

<h1>This is a Heading</h1>
<p>This is a paragraph with <strong>bold</strong> and <em>italic</em> text.</p>
<a href="https://example.com">This is a link</a>

se convierte en:

# This is a Heading

This is a paragraph with **bold** and *italic* text.

[This is a link](https://example.com)

Este proceso es justo lo contrario de lo que originalmente se diseñó para Markdown (de Markdown a HTML), pero hoy se ha vuelto imprescindible en los flujos de trabajo modernos, sobre todo porque Markdown sigue ganando terreno tanto en equipos de negocio como técnicos (Google Developer Docs).

Y, por cierto, si alguna vez necesitas hacer el camino inverso (de Markdown a HTML), Python también te lo pone bastante fácil. Pero eso lo veremos más adelante.

¿Por qué convertir HTML a Markdown? Beneficios clave para negocio

Entonces, ¿para qué complicarse convirtiendo HTML a Markdown? La respuesta corta es esta: Markdown es más limpio, más legible y muchísimo más fácil de manejar. Pero vayamos a lo concreto. Así es como esta conversión puede impulsar tu flujo de trabajo:

Caso de uso¿Por qué convertir a Markdown?
Documentación técnicaLos archivos Markdown son texto plano: perfectos para control de versiones, colaboración y edición rápida. Nada de más conflictos de merge por etiquetas <div> perdidas (Document360).
Toma de notas y bases de conocimientoMarkdown se entiende incluso en su forma cruda, se mueve sin problema entre apps como Notion y Obsidian, y no depende de formatos propietarios (Markdown Guide).
Migración de contenido¿Estás moviendo HTML viejo (blogs antiguos, páginas de intranet) a sistemas modernos? Markdown hace la migración más fluida y el contenido más fácil de actualizar (cantoni.org).
Preparación de datos para entrenamiento de IALos LLM y los modelos de NLP aman el texto limpio y estructurado. Markdown quita el ruido del HTML y te deja contenido listo para LLM (Apify).
Edición y colaboración de contenidoLa sintaxis de Markdown es intuitiva incluso para quienes no son desarrolladores; se acabó eso de “espera, ¿dónde termina este <span>?”. Aguanta muy bien el paso del tiempo y se edita fácil en cualquier editor de texto (Markdown Guide).

Y un dato curioso: la simplicidad de Markdown es una gran razón por la que se ha convertido en el formato por defecto para todo, desde archivos README hasta wikis internas (Google Developer Docs). Es el formato de “escribe una vez, úsalo donde quieras”.

Panorama de herramientas de Python para convertir HTML a Markdown

Python es mi lenguaje favorito para este tipo de tareas de procesamiento de texto, y además tiene un ecosistema muy sólido para convertir HTML a Markdown. Estas son las opciones principales:

Herramienta / libreríaTipoPuntos fuertesLimitaciones / notas
markdownifyLibrería de PythonFácil de usar, personalizable, conserva la estructura (títulos, tablas, imágenes, enlaces), extensiblePuede omitir cierto HTML complejo; requiere BeautifulSoup
html2textLibrería de PythonSencilla, aguanta HTML mal formado, salida minimalista, muchos flags para ignorar elementosLas tablas pueden aplanarse, menos control sobre el formato avanzado
PandocHerramienta independiente (con wrappers para Python)Maneja HTML complejo, admite muchas variantes de Markdown, ideal para lotesRequiere instalación aparte; puede ser demasiado para tareas pequeñas
Aspose.HTML for Python via .NETLibrería comercial de Python/.NETNivel empresarial, compatible con variantes de Markdown, opciones avanzadasLicencia de pago, configuración más pesada

Vamos a desglosarlas un poco más.

Comparando librerías de Python: ¿cuál encaja con lo que necesitas?

markdownify

  • Ideal para: La mayoría de usuarios de negocio, documentación y casos en los que quieres un Markdown muy parecido al HTML original.
  • Ventajas: API sencilla, personalizable (por ejemplo, elegir el estilo de encabezados o eliminar etiquetas), maneja imágenes, enlaces y tablas (GitHub).
  • Desventajas: Puede perder contenido si el HTML está muy anidado o tiene estructuras poco comunes (Reddit).

html2text

  • Ideal para: Conversiones rápidas, extraer texto legible de páginas web desordenadas, cuando prefieres simplicidad antes que fidelidad estructural.
  • Ventajas: Soporta HTML mal formado, es fácil ignorar enlaces e imágenes, salida minimalista (GitHub).
  • Desventajas: Las tablas no siempre quedan como tablas Markdown y hay menos control sobre el estilo de salida.

Pandoc

  • Ideal para: Conversiones exigentes, trabajos por lotes, documentos complejos o cuando necesitas una variante concreta de Markdown.
  • Ventajas: Convierte casi cualquier cosa en casi cualquier cosa, admite extensiones, maneja tablas, notas al pie y fórmulas (cantoni.org).
  • Desventajas: Hay que instalarlo por separado y usarlo desde la línea de comandos o mediante un wrapper de Python.

Aspose.HTML for Python via .NET

  • Ideal para: Entornos empresariales y situaciones donde necesitas opciones avanzadas o integración con otras herramientas de Aspose.
  • Ventajas: Compatible con variantes de Markdown y opciones de guardado personalizables (Aspose Docs).
  • Desventajas: Requiere licencia comercial y una configuración más compleja.

Mi consejo: Para la mayoría de necesidades del día a día, empieza por markdownify o html2text. Si te topas con una pared —tablas complejas, notas al pie o necesidad de GitHub Flavored Markdown—, Pandoc es tu aliado.

Guía paso a paso: convertir HTML a Markdown en Python

Vamos a lo práctico. Así puedes convertir HTML a Markdown en Python, incluso si no eres desarrollador. Te voy a mostrar dos ejemplos: uno con markdownify y otro con html2text.

Ejemplo: usar markdownify para convertir HTML a Markdown

Primero, instala la librería:

pip install markdownify

Ahora supongamos que tienes este HTML:

<h2>Example Title</h2>
<p>This is a <strong>bold</strong> word and an <em>italic</em> word.</p>
<p>Visit <a href="http://example.com">our site</a> for more info.</p>

Y este es el código en Python:

from markdownify import markdownify as md

html_content = """
<h2>Example Title</h2>
<p>This is a <strong>bold</strong> word and an <em>italic</em> word.</p>
<p>Visit <a href="http://example.com">our site</a> for more info.</p>
"""

markdown_text = md(html_content, heading_style="ATX")
print(markdown_text)

Markdown resultante:

## Example Title

This is a **bold** word and an *italic* word.

Visit [our site](http://example.com) for more info.
  • Los títulos se convierten en ##, la negrita y la cursiva se transforman bien y los enlaces quedan como [texto](url).
  • Las imágenes (<img>) pasan a ![alt](url).
  • Las tablas se convierten a tablas Markdown, con barras y guiones.

Puedes ajustar el comportamiento de markdownify. Por ejemplo, para eliminar las etiquetas <style> y <script>:

markdown_text = md(html_content, strip=['style', 'script'])

Y si necesitas algo más avanzado, incluso puedes crear una subclase del conversor para tratar etiquetas personalizadas (GitHub Docs).

Ejemplo: usar html2text para convertir HTML a Markdown

Instala la librería:

pip install html2text

Aquí usamos el mismo HTML que antes:

import html2text

html_content = """
<h2>Example Title</h2>
<p>This is a <b>bold</b> word and an <i>italic</i> word.</p>
<p>Visit <a href="http://example.com">our site</a> for more info.</p>
"""

converter = html2text.HTML2Text()
converter.ignore_links = False  # Mantener los enlaces
markdown_text = converter.handle(html_content)
print(markdown_text)

Markdown resultante:

## Example Title

This is **bold** word and an *italic* word.

Visit [our site](http://example.com) for more info.
  • Por defecto, html2text ajusta las líneas a 78 caracteres (puedes poner converter.body_width = 0 para desactivar el ajuste).
  • Puedes ignorar imágenes (converter.ignore_images = True) o sacar los enlaces en formato de referencia.
  • Las tablas puede que no queden como tablas Markdown; conviene probarlo si las tablas son importantes para ti.

Opciones avanzadas: personalizar la conversión de HTML a Markdown

A veces necesitas algo más que una conversión directa. Tal vez quieras excluir ciertas etiquetas HTML, tratar estilos en línea o usar una variante concreta de Markdown, como GitHub Flavored Markdown.

Excluir o transformar elementos HTML concretos

  • markdownify: Usa el parámetro strip para eliminar etiquetas o crea una subclase del conversor para un tratamiento personalizado (GitHub).
  • html2text: Usa flags de ignorar (ignore_links, ignore_images). Si necesitas un filtrado más complejo, preprocesa el HTML con BeautifulSoup.
  • Pandoc: Usa opciones de línea de comandos o filtros para controlar la conversión.
  • Aspose: Configura las opciones de guardado para elegir la variante de Markdown (Aspose Docs).

Trabajar con estilos en línea y scripts

  • La mayoría de convertidores eliminan <style> y <script>; Markdown no los soporta (Aspose Docs).
  • Si necesitas conservar fragmentos de código, asegúrate de que estén dentro de etiquetas <pre><code>; los convertidores los transformarán en bloques de código Markdown.

Elegir una variante de Markdown

  • Pandoc: Especifica la variante de salida (-to=gfm para GitHub, -to=commonmark, etc.).
  • Aspose: Usa MarkdownSaveOptions para seleccionar la variante.
  • markdownify: No ofrece compatibilidad explícita con variantes, pero puedes ajustar la salida para acercarte a lo que necesitas.

Manejar casos límite

  • Medios incrustados: Markdown no admite incrustaciones de vídeo; quizá tengas que dejar un enlace o HTML en bruto.
  • Imágenes en Base64: Algunos convertidores incluyen los datos Base64 en el Markdown, lo que puede hacerlo enorme; lo recomendable es extraer las imágenes y enlazarlas en vez de incrustarlas (Reddit).
  • Tablas complejas: Si las tablas tienen colspan o elementos anidados, puede que Markdown no capture toda la estructura; conviene probar y ajustar según haga falta.

Trabajar con imágenes, enlaces y tablas

Imágenes:

  • <img src="logo.png" alt="Logo"> se convierte en ![Logo](logo.png).
  • Si no quieres imágenes, usa ignore_images o strip=['img'].

Enlaces:

  • <a href="url">texto</a> se convierte en [texto](url).
  • Formato inline vs. formato de referencia: markdownify usa inline; html2text puede usar referencias.
  • Para datos de entrenamiento de IA, quizá quieras eliminar las URLs y conservar solo el texto del enlace.

Tablas:

  • markdownify y Pandoc convierten tablas HTML en tablas Markdown, con barras y guiones.
  • html2text puede sacar las tablas como texto plano.
  • Si son tablas complejas, revisa el resultado y ajústalo según sea necesario.

El camino inverso: convertir Markdown a HTML en Python

A veces necesitas pasar Markdown de vuelta a HTML, por ejemplo, para mostrar contenido en un sitio web. Python hace esto muy fácil.

Usando Python-Markdown:

import markdown

md_text = "# Hello\nThis is **Markdown**."
html_output = markdown.markdown(md_text)
print(html_output)

Resultado:

<h1>Hello</h1>
<p>This is <strong>Markdown</strong>.</p>

Otras opciones son Mistune y markdown2. Y, por supuesto, Pandoc funciona en ambos sentidos.

Limitaciones y buenas prácticas para convertir HTML a Markdown

Seamos honestos: la conversión de HTML a Markdown no es perfecta. Esto es lo que debes vigilar y cómo sacar mejores resultados.

Limitaciones

  • No todo se convierte bien: Los scripts, estilos, formularios y elementos interactivos se descartan (Aspose Docs).
  • Limpieza manual: A veces tendrás que retocar la salida Markdown: corregir saltos de línea, ajustar tablas o eliminar HTML residual.
  • Diferencias entre variantes de Markdown: No todos los renderizadores soportan las mismas funciones (por ejemplo, tablas o notas al pie). Prueba el resultado en el entorno final.

Buenas prácticas

  • Limpia el HTML antes de convertirlo: Usa BeautifulSoup o una librería de lectura para extraer solo el contenido que te interesa (cantoni.org).
  • Automatiza en proyectos grandes: Escribe un script para convertir archivos por lotes e intégralo con tu flujo de web scraping o documentación.
  • Prueba e itera: Haz una prueba con una muestra, revisa el Markdown en tu herramienta final y ajusta el proceso según haga falta.
  • Maneja los errores con elegancia: Si te encuentras HTML mal formado, pásalo primero por un sanitizador.

Conclusión y puntos clave

Convertir HTML a Markdown en Python es una habilidad práctica y muy útil, tanto si estás creando documentación, preparando datos para IA o simplemente quieres que tus notas sean menos... pesadas. Aquí va el resumen:

Conclusion & Key Takeaways.png

  • Por qué importa: Markdown es más limpio, legible y fácil de gestionar que HTML. Es la lengua franca de la documentación moderna y de la toma de notas (Markdown Guide).
  • Mejores herramientas: Para la mayoría, empieza con markdownify o html2text. Para trabajos complejos, Pandoc es la herramienta más potente. Aspose está ahí si necesitas funciones empresariales.
  • Cómo hacerlo: Instala la librería que prefieras, ejecuta un script sencillo y disfruta de una salida Markdown limpia. Personaliza según lo que necesites.
  • Limitaciones: Puede hacer falta algo de limpieza manual y no todas las funciones de HTML tienen equivalente en Markdown.
  • Siguientes pasos: Prueba el código de ejemplo con tu propio HTML. Convierte por lotes tus viejas páginas web. Integra la conversión en tu flujo de trabajo. Y si te animas a ir más lejos, explora las funciones avanzadas de Pandoc o las extensiones de Python-Markdown.

Markdown consiste en hacer tu contenido portable, legible y preparado para el futuro. Con Python y las herramientas adecuadas, puedes convertir incluso el HTML más caótico en algo por lo que tu equipo —y tu yo del futuro— te lo agradecerá.

¡Feliz conversión! Y si buscas más consejos de automatización, scraping con IA o simplemente quieres profundizar en flujos de datos, visita el Thunderbit Blog para encontrar más guías e historias desde la trinchera.

Preguntas frecuentes

1. ¿Qué beneficios tiene convertir HTML a Markdown para usuarios de negocio?

Convertir HTML a Markdown mejora la legibilidad, la portabilidad y el mantenimiento del contenido. Es especialmente útil para documentación, toma de notas, datos de entrenamiento de IA y migración de contenido antiguo a herramientas modernas que admiten Markdown.

2. ¿Qué herramientas de Python son mejores para convertir HTML a Markdown?

Las opciones más populares son markdownify (ideal para salidas estructuradas), html2text (perfecta para conversiones rápidas y limpias), Pandoc (potente para documentos complejos) y Aspose.HTML (opción comercial de nivel empresarial).

3. ¿Cómo convierto HTML a Markdown usando Python?

Puedes usar librerías como markdownify o html2text. Instala la librería con pip, pasa tu contenido HTML y la herramienta devolverá Markdown. Cada librería ofrece opciones de personalización como eliminar etiquetas o definir el formato de salida.

4. ¿Hay limitaciones al convertir HTML a Markdown?

Sí. Los elementos interactivos como scripts y formularios no se traducen bien, y las tablas complejas o los medios incrustados pueden requerir ajustes manuales. Además, Markdown varía ligeramente según la variante, lo que puede afectar al renderizado.

5. ¿Puedo convertir Markdown de vuelta a HTML con Python?

Sí, totalmente. Librerías como markdown, mistune y markdown2 pueden renderizar Markdown a HTML, lo que facilita integrar contenido Markdown en páginas web u otros sistemas basados en HTML.

Lecturas recomendadas:

Shuai Guan
Shuai Guan
CEO de Thunderbit | Experto en automatización de datos con IA Shuai Guan es el CEO de Thunderbit y exalumno de Ingeniería de la University of Michigan. Con casi una década de experiencia en tecnología y arquitectura SaaS, se especializa en convertir modelos de IA complejos en herramientas prácticas de extracción de datos sin código. En este blog comparte ideas directas, probadas en la práctica y sin filtros sobre web scraping y estrategias de automatización para ayudarte a crear flujos de trabajo más inteligentes y basados en datos. Cuando no está optimizando flujos de datos, aplica ese mismo ojo para el detalle a su pasión por la fotografía.
Topics
HTML a MarkdownConvertir HTML a MarkdownPython Markdown a HTML
Tabla de contenidos
Thunderbit · Agente de datos web con IA

Extrae datos de cualquier página en 1 clic

Con la confianza de más de 250.000 usuarios
plan gratuito disponible
De la página web a la hoja de cálculo
Describe lo que necesitas — el agente de IA de Thunderbit lo extrae y lo exporta a Excel, Google Sheets, Airtable o Notion. Empieza gratis.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week