
Da Markdown a HTML e ritorno: un convertitore con anteprima dal vivo
Incolla del Markdown e vedi la pagina finita con accanto HTML pulito. Incolla dell'HTML e ottieni Markdown adatto a un README o a un articolo di blog. Entrambe le direzioni funzionano nel tuo browser: il testo non viene inviato da nessuna parte né conservato.
.md: il file viene letto localmente. È supportato CommonMark nella sua estensione tipica più le estensioni GFM: tabelle, barrato, elenchi di attività.
Incolla del Markdown sopra: l'HTML comparirà qui.
.html: il file viene letto localmente. L'analisi passa da DOMParser, quindi funziona sia con un frammento sia con una pagina intera.
Incolla dell'HTML sopra: il Markdown comparirà qui.
Il testo non lascia il tuo browser: la conversione avviene in locale, senza inviare nulla a un server.
Che cosa è supportato esattamente
Dal lato Markdown — CommonMark nella sua estensione tipica più le estensioni GFM: titoli con cancelletti e con sottolineatura, paragrafi, linee orizzontali; elenchi puntati, numerati e annidati, in forma compatta e spaziata; elenchi di attività fra parentesi quadre; citazioni, anche con continuazione pigra di riga; codice recintato con nome del linguaggio e codice con rientro; tabelle GFM con allineamento delle colonne; collegamenti, immagini, collegamenti automatici, collegamenti a definizioni in fondo al documento; grassetto, corsivo, barrato, codice in riga, caratteri sfuggiti, a capo forzato. Dal lato HTML l'analisi passa dal DOMParser del browser stesso, quindi funzionano sia un frammento sia una pagina intera con head. Le tabelle con celle unite non si trasferiscono in Markdown: lì quella sintassi non esiste, perciò restano tag e lo strumento lo dice. Ciò che manca di proposito: l'evidenziazione della sintassi nei blocchi di codice, le note a piè di pagina, le formule e le direttive di specifici generatori di siti statici. Non è più Markdown, ma il dialetto di un singolo strumento.
Un a capo: due Markdown diversi
La fonte più frequente di divergenze fra i convertitori è proprio l'a capo singolo all'interno di un paragrafo. Secondo CommonMark è uno spazio normale: due righe si incollano in un unico paragrafo. Così si comportano Pandoc, i generatori di documentazione e la maggior parte dei siti statici. GitHub fa il contrario nei commenti, nelle descrizioni delle issue e nelle revisioni: ogni a capo diventa un tag br. È esattamente per questo che un testo che stava bene in una issue si appiccica in un unico blocco una volta spostato nel README. La casella «Un singolo a capo è un br» commuta fra queste due abitudini. Per impostazione predefinita vale la regola di CommonMark.
Perché l'anteprima non mostra tutto ciò che c'è nell'HTML
Per specifica, Markdown ammette HTML al proprio interno. È comodo e allo stesso tempo significa che qualsiasi testo incollato può contenere codice eseguibile. I visualizzatori online più diffusi mettono il risultato in innerHTML così com'è. La libreria marked su cui sono costruiti non ha alcuna sanificazione integrata dalla versione quattro: un tag script preso dal Markdown altrui lì viene semplicemente eseguito. Qui l'anteprima è costruita con nodi DOM secondo una lista bianca: script, iframe, object, i gestori di eventi come onclick e i collegamenti con schema javascript: non ci arrivano, e l'elenco di ciò che è stato tagliato compare sotto il risultato. Nella scheda «Codice HTML» vedi l'output completo senza tagli: è testo, non una pagina, ed eseguirlo è impossibile. L'HTML dell'originale può arrivare all'anteprima solo quando sei tu ad attivare la casella corrispondente. Per impostazione predefinita i tag vengono sfuggiti e mostrati come testo.
