Converter HTML para Markdown aparece com mais frequência do que você imagina. Você está migrando posts do WordPress para o Hugo ou o Astro. Você exportou páginas do Notion e o HTML está cheio de divs de empacotamento. Você quer recortar uma página web para suas anotações sem arrastar junto tags e estilos inline. Tudo isso termina no mesmo passo: transformar HTML em Markdown limpo.
Este guia cobre os principais casos de uso, um fluxo de conversão no navegador, alternativas em linha de comando e armadilhas comuns.
Resposta rápida
Cole seu HTML em HTML to Markdown e pressione Run. O Markdown aparece instantaneamente. Nada para instalar, e a conversão roda inteiramente no navegador — seus dados nunca saem da sua máquina.
A saída segue duas especificações: o CommonMark para a sintaxe principal, e a especificação do GitHub Flavored Markdown para tabelas, listas de tarefas, texto tachado e autolinks.
Quando a conversão aparece
Migrando do WordPress ou de um CMS
O WordPress exporta artigos como HTML. Movê-los para um gerador de site estático como Hugo, Astro ou Jekyll significa converter cada post para Markdown. Para alguns poucos posts dá para fazer na mão, mas uma ferramenta de conversão preserva a estrutura sem o trabalho tedioso.
Limpando exports do Notion
O Notion suporta exportação em HTML, mas a saída fica repleta de atributos class específicos do Notion e wrappers div profundamente aninhados. Converter para Markdown remove o ruído e deixa um arquivo de texto legível que você pode jogar em qualquer ferramenta que entenda Markdown.
Recortando páginas web
Quando você quer citar ou salvar o conteúdo de uma página web, copiar o HTML bruto traz junto tags e estilos. Converter para Markdown mantém a estrutura — títulos, listas, links — enquanto descarta a camada de apresentação. Isso também é útil ao alimentar conteúdo para um LLM, já que o Markdown é mais eficiente em tokens do que o HTML.
Reaproveitando conteúdo de e-mails HTML
Extrair o corpo de um e-mail HTML para um documento normalmente significa remover tags na mão. Um conversor preserva títulos, listas e links como Markdown enquanto remove todo o resto.
Converta com o FormatArc
O HTML to Markdown recebe o HTML colado e produz Markdown. Não há nada para instalar.
Passo 1: Abra a ferramenta
Acesse HTML to Markdown.
Passo 2: Cole seu HTML
Cole o código-fonte HTML no painel da esquerda. A ferramenta lida com <table>, <ul>, <ol>, <a>, <img> e o restante das tags comuns.
Passo 3: Pressione Run
Pressione Run e o Markdown aparece no painel da direita.


A conversão roda inteiramente no navegador. Documentos internos e conteúdo não publicado permanecem na sua máquina.
Referência de elementos HTML para Markdown
A maioria dos elementos HTML comuns tem correspondência em Markdown, mas o Markdown é uma linguagem menor do que o HTML, então alguns atributos e estruturas não têm equivalente e são descartados. A tabela abaixo lista a correspondência em nível de elemento com o GitHub Flavored Markdown, junto com o que se perde. Os nomes dos elementos seguem o WHATWG HTML Living Standard, hoje a referência oficial do HTML (a última instantânea datada do W3C, a já superada HTML 5.2 Recommendation, tem sobretudo interesse histórico); o lado do Markdown segue o CommonMark e a especificação do GitHub Flavored Markdown.
| Elemento HTML | Equivalente em GFM Markdown | Notas de conversão / perda |
|---|---|---|
Títulos <h1>–<h6> |
# a ###### (ATX) |
Um # por nível de título, então <h1> corresponde a # e <h6> a ######. O CommonMark define apenas seis níveis, igual ao HTML. |
Lista não ordenada <ul> |
Marcadores -, * ou + |
O aninhamento de itens é preservado por meio da indentação. A escolha do caractere de marcador depende do conversor. |
Lista ordenada <ol> |
Marcadores 1., 2., … |
O atributo start (um primeiro número personalizado) e type (a, i, etc.) não têm equivalente em Markdown e são descartados. |
Tabela <table> |
Tabela com pipes do GFM | A linha de cabeçalho e o alinhamento de colunas (align) são convertidos. colspan/rowspan, conteúdo de nível de bloco dentro das células e <caption> não têm equivalente em tabelas com pipes. |
Link <a href> |
[text](url) |
href e o texto do link são mantidos. Atributos como target, rel e title são descartados, exceto que title corresponde à forma opcional [text](url "title"). |
Imagem <img src alt> |
 |
src e alt são mantidos. width, height, srcset, loading e atributos semelhantes não têm sintaxe em Markdown e são descartados. |
Código <pre> / <code> |
Bloco com cercas/indentado; `code` inline |
<pre><code> vira um bloco de código; um <code> isolado vira código inline. A dica class="language-…" pode ser emitida como a info string de um bloco com cercas (ex.: ```js). |
Citação <blockquote> |
Prefixo > |
Cada linha recebe o prefixo > . Citações aninhadas usam > repetidos. O atributo cite não tem equivalente em Markdown e é descartado. |
Negrito <strong> / <b> |
**text** |
Tanto <strong> (semântico) quanto <b> (de apresentação) colapsam na mesma sintaxe **; a distinção semântica não é preservada. |
Itálico <em> / <i> |
*text* |
Tanto <em> quanto <i> colapsam na mesma sintaxe *; a distinção semântica não é preservada. |
Qualquer coisa sem uma linha acima — style, class, wrappers <div>/<span>, manipuladores de eventos inline e outras marcações de apresentação — é removida, deixando Markdown estrutural. O GFM permite HTML inline, então um conversor pode manter uma construção não suportada como um fragmento de HTML bruto em vez de descartá-la.
Alternativas em CLI e bibliotecas
Além da ferramenta no navegador, você pode converter pela linha de comando ou dentro de um programa. Escolha uma ferramenta que combine com a stack de linguagem que você já usa.
Pandoc (CLI universal)
pandoc -f html -t markdown -o output.md input.html
O Pandoc é o conversor mais universal — ele lida com HTML, Word, EPUB, LaTeX e muitos outros formatos. Use -t gfm para emitir tabelas no GitHub Flavored Markdown. Ideal para conversões em lote e documentos-fonte complexos. Requer instalação local.
Turndown (JavaScript / Node.js)
import TurndownService from "turndown";
const turndown = new TurndownService();
const markdown = turndown.convert("<h1>Hello</h1><p>World</p>");
console.log(markdown);
A biblioteca padrão para projetos Node.js. Plugins (turndown-plugin-gfm) adicionam suporte a tabelas, texto tachado e listas de tarefas. Também roda no navegador caso você precise de um conversor auto-hospedado.
Alternativas em Python e Go
Se o seu pipeline de build roda em Python ou Go em vez de Node, duas bibliotecas dominam cada ecossistema.
markdownify (Python)
pip install markdownify
from markdownify import markdownify
html = "<h1>Title</h1><p>Hello <strong>world</strong></p>"
print(markdownify(html, heading_style="ATX"))
O markdownify envolve o BeautifulSoup, então tolera HTML bagunçado vindo de scraping do mundo real. Opções como heading_style="ATX", bullets="-*+" e strip=["script", "style"] dão controle fino sobre a saída.
html2text (Python)
pip install html2text
import html2text
print(html2text.html2text("<h1>Title</h1><p>Hello world</p>"))
Distribuído originalmente por Aaron Swartz, o html2text é mais antigo, mas ainda recebe manutenção ativa. Funciona como CLI (html2text input.html) e é conveniente para conversões pontuais de páginas web salvas.
html-to-markdown (Go)
go install github.com/JohannesKaufmann/html-to-markdown/cli/html2markdown@latest
html2markdown < input.html > output.md
O padrão da comunidade Go. Vem tanto como biblioteca quanto como binário de CLI, com um sistema de plugins para tabelas, texto tachado e regras personalizadas. Útil quando você precisa de um único binário linkado estaticamente para uma imagem Docker ou um runner de CI.
Escolhendo entre eles
| Ferramenta | Instalação | Linguagem | Melhor para |
|---|---|---|---|
| FormatArc | Nenhuma (navegador) | — | Conversões pontuais, dados privados |
| Pandoc | Homebrew/apt | CLI | Tarefas em lote, formatos-fonte variados |
| Turndown | npm | JavaScript | Serviços Node.js, apps de navegador |
| markdownify | pip | Python | Pipelines de web scraping |
| html2text | pip | Python | Conversão de páginas web salvas |
| JohannesKaufmann | go install | Go | CLI linkado estaticamente em CI/Docker |
Tabela HTML para Markdown
Tabelas HTML são onde a maioria dos conversores tropeça, então vale a pena tratar isso como um tópico à parte.
A sintaxe de tabela com pipes do Markdown — definida pela especificação do GitHub Flavored Markdown — consegue representar o caso comum: uma linha de cabeçalho, linhas de corpo e alinhamento de colunas. Mas ela não consegue representar toda construção HTML.
O que converte de forma limpa
Uma <table> padrão com <thead>, <tbody>, células <td> simples e align="left|center|right" nos cabeçalhos faz a ida e volta de forma limpa:
<table>
<thead><tr><th>Name</th><th align="right">Price</th></tr></thead>
<tbody>
<tr><td>Apple</td><td align="right">120</td></tr>
<tr><td>Banana</td><td align="right">80</td></tr>
</tbody>
</table>
Vira:
| Name | Price |
|--------|------:|
| Apple | 120 |
| Banana | 80 |
O que não converte
Três padrões não têm equivalente direto em Markdown:
colspan/rowspan— tabelas com pipes são estritamente retangulares. Células mescladas acabam achatadas ou divididas, dependendo do conversor.- Elementos aninhados dentro de células — conteúdo de nível de bloco como
<ul>,<pre>ou outra<table>dentro de um<td>não sobrevive à conversão. Elementos inline (<strong>,<em>,<a>,<code>) ficam tranquilos. - Quebras de linha em células —
<br>dentro de uma célula pode ou não ser preservado, dependendo do parser. A maioria das ferramentas ou descarta a quebra ou emite uma tag<br>literal (o que o GFM permite como HTML inline).
Soluções alternativas
Quando a estrutura é complexa demais para tabelas com pipes, você tem duas opções práticas:
- Converta a página para Markdown e mantenha a tabela como HTML bruto inline. O GFM permite HTML inline, então
<table>...</table>dentro do Markdown ainda renderiza no GitHub, no Hashnode e na maioria dos geradores de site estático. - Achate a tabela em uma lista de registros antes de converter. Isso é comum quando a tabela é de fato dados, e não layout — passe pelo CSV to Markdown se você conseguir expressar os dados em linhas e colunas.
Para detalhes sobre escrever tabelas com pipes na mão — alinhamento, escapar pipes, células multilinha — veja o guia de sintaxe de tabelas Markdown e o guia de tabelas GFM.
Para um passo a passo completo de GFM com o conversor aberto em uma nova aba, veja HTML to Markdown.
Problemas comuns e correções
Remoção de atributos style e class
Os atributos style e class não têm equivalente em Markdown, então são removidos durante a conversão. Se você precisa da informação de estilo, guarde uma cópia do HTML original.
Para projetos em que os estilos importam (newsletters, exports com marca), converta para Markdown pela estrutura e depois reaplique o CSS na etapa de renderização via Markdown to HTML.
Caminhos de imagem
<img src="..."> vira , mas caminhos relativos no HTML original podem não resolver no ambiente de destino. Durante uma migração, copie os arquivos de imagem separadamente e atualize os caminhos.
Rode a conversão em HTML to Markdown primeiro para confirmar o texto alternativo e a estrutura dos links, e depois trate a realocação das imagens em uma etapa separada.
Perguntas frequentes
Isso suporta tabelas do GitHub Flavored Markdown?
Sim. Elementos <table> do HTML são convertidos em tabelas com pipes do GFM (| col1 | col2 |), e a linha de cabeçalho mais as dicas simples de alinhamento são preservadas quando presentes. Para detalhes sobre escrever tabelas com pipes na mão — pipes, alinhamento, escapar o conteúdo das células — veja o guia de sintaxe de tabelas Markdown.
A conversão é feita no navegador?
Sim. Tanto a análise do HTML quanto a geração do Markdown rodam inteiramente no seu navegador usando JavaScript. Rascunhos internos em HTML e conteúdo não publicado permanecem na sua máquina — nada é enviado para servidores.
Qual a diferença disso para o Pandoc ou o Turndown?
O Pandoc e o Turndown são motores de conversão poderosos, mas o Pandoc exige uma instalação local e o Turndown um projeto Node.js. A ferramenta no navegador é mais rápida para conversões pontuais: cole, clique em Run, copie o resultado. Para tarefas em lote e pipelines de build, o Pandoc ainda é a melhor opção.
Imagens e caminhos relativos são preservados?
<img src="..."> é convertido em , mantendo tanto a URL de origem quanto o texto alternativo. Caminhos relativos no HTML original são mantidos como estão, então, durante uma migração, normalmente é preciso copiar os arquivos de imagem separadamente e atualizar os caminhos no Markdown resultante.
Por que os atributos class e style são removidos?
O Markdown não tem equivalente para CSS inline ou atributos class, então o conversor os remove de propósito. O resultado é um Markdown limpo e portável que qualquer renderizador consegue ler. Se você precisa do estilo original, guarde uma cópia do HTML-fonte — para o caminho inverso, veja o guia de Markdown para HTML.
Encerrando
A conversão de HTML para Markdown é útil para migração de CMS, recorte de páginas web, limpeza de exports e muito mais. Para conversões pontuais rápidas, colar em HTML to Markdown é o caminho mais veloz.
Para o caminho inverso — Markdown para HTML — veja o guia de Markdown para HTML. Para transformar dados CSV em uma tabela Markdown, confira o guia de CSV para Markdown.