Markdown ↔ HTML Converter
Convert Markdown to HTML and back. GFM (tables, task lists) supported. Browser-only.
Markdown ↔ HTML Converter
—Runs entirely in your browser. Your input never leaves your device.
What next?
How it works
Por que converter
Markdown é a linguagem dos READMEs, do GitHub, do dev.to e da maioria dos blogs técnicos. HTML é a linguagem da web — onde o conteúdo é finalmente exibido. Você converte quando publica (MD → HTML), quando importa (HTML → MD), ou quando migra entre CMSs.
A conversão usa marked (MD→HTML) e turndown (HTML→MD). Ambas client-side, ambas implementam CommonMark + extensões GFM (tabelas, task lists, strikethrough).
CommonMark vs GFM
CommonMark é a especificação estável de Markdown — todos os parsers sérios implementam. Define como **bold**, listas, headers, links, code blocks funcionam.
GitHub Flavored Markdown (GFM) estende com:
- Tabelas (
| col | col |) - Task lists (
- [ ],- [x]) - Strikethrough (
~~texto~~) - Autolinks para URLs nuas
- Code fences com língua (
```js)
O conversor ativa GFM por padrão. Renderizadores que só suportam CommonMark vão ignorar essas features.
Segurança: XSS via HTML cru em MD
Markdown permite HTML cru inline:
Olá <script>alert('xss')</script>
Por padrão, marked renderiza isso como <script> real. Se você renderiza MD de usuários externos, sanitize o HTML resultante com DOMPurify ou similar. Não confie no parser sozinho.
Para conteúdo confiável (seu próprio README), HTML cru pode ser útil — embed de iframe, classes CSS específicas, atributos data.
Round-trip não é lossless
Converter MD → HTML → MD não retorna ao original. Alguns motivos:
- Ênfase pode normalizar (
_italic_vira*italic*) - Espaçamento entre parágrafos muda
- Listas aninhadas podem mudar indentação
- HTML cru no MD original vira tags HTML que turndown converte de volta, possivelmente perdendo atributos
- Code blocks com syntax highlight perdem o language hint se o HTML não preservar
class="language-x"
Para conteúdo crítico, mantenha o original (geralmente MD) como source-of-truth e gere HTML apenas para renderização.
Casos de uso comuns
- Importar posts antigos do WordPress (HTML) para um blog estático (MD)
- Exportar conversas do Slack (HTML) para documentação (MD)
- Converter notas do Notion para um README
- Gerar HTML de um README para preview offline
- Limpar HTML de email para extrair só o texto formatado
Limites
Ambas libs são rápidas. ~1MB de MD ou HTML processa em sub-segundo. Tudo no navegador, nada para servidor.
FAQ
Tabelas funcionam?
Sim, com GFM ativado (padrão). Sintaxe: | header | header | na primeira linha, | --- | --- | na segunda, dados nas seguintes. Strict CommonMark não tem tabelas.
Por que código sem syntax highlight?
A conversão gera apenas <code class="language-js">...</code>. O highlight visual depende de você incluir Prism.js, highlight.js, ou Shiki na página final. O conversor não embute CSS de highlight.
HTML cru no MD é seguro?
Para seu próprio conteúdo, sim — você controla o que escreve. Para MD de usuários (comentários, posts), sanitize o HTML resultante com DOMPurify antes de injetar no DOM. marked não sanitiza por padrão.
Round-trip MD → HTML → MD é igual?
Não. Algumas transformações são lossy: normalização de ênfase (_ vs *), espaçamento, indentação de listas aninhadas, atributos HTML que turndown não preserva. Mantenha o MD como source-of-truth.
Posso processar arquivos grandes?
Até ~1MB é tranquilo. Acima, navegador pausa alguns segundos. Para batches grandes, use marked/turndown via Node CLI.
Meu conteúdo passa por servidor?
Não. marked e turndown são bibliotecas JS puras rodando no navegador. Zero requisições. Funciona offline.