Ferramentas / Visualizador de Markdown

Visualizador de Markdown

Digite Markdown e acompanhe o resultado ao lado, em tempo real. Copie o HTML gerado quando precisar.

Processamento local: nada do que você digita sai do seu navegador.

Como usar

Escreva ou cole o texto na caixa da esquerda. A visualização é atualizada a cada tecla. Use Copiar HTML para levar o resultado para o seu projeto.

Sintaxe suportada

  • Títulos com # até ######.
  • **negrito**, *itálico*, ~~riscado~~ e `código`.
  • Listas com -, * ou 1., com subitens por indentação.
  • Blocos de código com três crases, citações com >, linhas --- e links [texto](url).

Segurança

Todo HTML digitado é escapado e links com esquemas perigosos, como javascript:, são removidos. Tabelas, imagens e HTML bruto não são suportados.

Como implementar em código

Exemplos prontos para usar no seu projeto.

// npm install marked dompurify
import { marked } from 'marked';
import DOMPurify from 'dompurify';

const html = DOMPurify.sanitize(marked.parse('# Olá\n\nTexto com **negrito**.'));
document.querySelector('#preview').innerHTML = html;

Sempre sanitize o HTML gerado (DOMPurify) antes de usar innerHTML.

# pip install markdown bleach
import markdown
import bleach

html = markdown.markdown("# Olá\n\nTexto com **negrito**.")
seguro = bleach.clean(html, tags=bleach.sanitizer.ALLOWED_TAGS | {"p", "h1", "h2", "h3", "pre", "ul", "ol", "li"})
package main

// go get github.com/yuin/goldmark github.com/microcosm-cc/bluemonday
import (
	"bytes"

	"github.com/microcosm-cc/bluemonday"
	"github.com/yuin/goldmark"
)

func markdownParaHtml(md string) (string, error) {
	var buf bytes.Buffer
	if err := goldmark.Convert([]byte(md), &buf); err != nil {
		return "", err
	}
	return string(bluemonday.UGCPolicy().SanitizeBytes(buf.Bytes())), nil
}
// dart pub add markdown
import 'package:markdown/markdown.dart';

final html = markdownToHtml(
  '# Olá\n\nTexto com **negrito**.',
  extensionSet: ExtensionSet.gitHubFlavored,
);
// No Flutter, o pacote flutter_markdown exibe o texto direto em widgets.

O HTML gerado deve ser sanitizado antes de exibir em uma WebView.

// Maven: org.commonmark:commonmark
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;

public class Md {
    static String paraHtml(String md) {
        Node doc = Parser.builder().build().parse(md);
        // escapeHtml(true) escapa HTML bruto digitado no texto
        return HtmlRenderer.builder().escapeHtml(true).build().render(doc);
    }
}
<?php
// composer require erusev/parsedown
$p = new Parsedown();
$p->setSafeMode(true); // escapa HTML e bloqueia links perigosos
echo $p->text("# Olá\n\nTexto com **negrito**.");
// dotnet add package Markdig
using Markdig;

var pipeline = new MarkdownPipelineBuilder().DisableHtml().Build(); // desativa HTML bruto
string html = Markdown.ToHtml("# Olá\n\nTexto com **negrito**.", pipeline);

Perguntas frequentes

Posso colar HTML no Markdown?

O HTML digitado é mostrado como texto, não executado. É uma proteção contra scripts maliciosos.

Tabelas e imagens funcionam?

Não. Este é um subconjunto: títulos, ênfase, listas, código, links e citações.

O texto é enviado para algum servidor?

Não. O Markdown é processado no seu navegador.

Veja também

Precisa de um sistema ou app sob medida?

A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.

Fale com a VcInova