HTML in Markdown umwandeln — Webseiten- oder E-Mail-HTML für READMEs
HTML aus Webseite, E-Mail oder exportiertem Dokument einfügen und Markdown erhalten: GFM-Tabellen, Aufgabenlisten mit Checkboxen, Codeblöcke mit Sprachkennung, verschachtelte Listen und Zitate. Inline-Styles und Klassen entfallen, Bild-URLs bleiben erhalten, script und style werden entfernt, fehlerhaftes HTML wird korrigiert, und nichts wird abgerufen oder hochgeladen.
Was diese HTML-zu-Markdown-Umwandlung behält — und was sie verwirft
GFM-Tabellen, Aufgabenlisten und Codesprachen bleiben
<table> wird zur Pipe-Tabelle, Checkboxen in <li> werden zu - [x] / - [ ], und <code class="language-js"> behält die Sprache als ```js-Block. Eine Checkbox außerhalb eines Listeneintrags ergibt nur den maskierten Text \[x].
Styles und Klassen entfallen, Bild-URLs bleiben
style, class, id und andere Darstellungsattribute werden nicht übernommen, nur Struktur und Semantik. <img> wird zu  mit der ursprünglichen Remote-URL; nichts wird heruntergeladen oder neu gehostet.
Script, Style und Einbettungen werden entfernt
<script> und <style> verschwinden samt Inhalt, <iframe> kollabiert zu einem leeren []()-Link, <video> entfällt. HTML-Kommentare bleiben als <!-- --> im Markdown erhalten.
Verschachtelte Listen und Zitate bleiben
Verschachtelte <ul>/<ol> behalten ihre Ebene mit zwei Leerzeichen Einrückung, verschachtelte <blockquote> werden zu > >, und ein eigener Schritt entfernt <p> in <li>, damit keine zusätzlichen Leerzeilen entstehen.
Fehlerhaftes HTML funktioniert, alles bleibt lokal
parse5 korrigiert nicht geschlossene Tags automatisch, daher lässt sich ein Fragment oder ein ganzes <html>-Dokument ohne Vorbereitung einfügen (<title> & Co. im head werden ignoriert). Kein URL-Abruf, kein Upload, kein Server — das Ergebnis erscheint in einem schreibgeschützten Textfeld zum Kopieren.
FAQ zu HTML-zu-Markdown
Welche Konvertierungsbibliothek wird verwendet?
Eine unified-11-Pipeline: rehype-parse 9 (parse5) parst das HTML, ein kleiner eigener Visitor entfernt <p> in <li>, rehype-remark 10 (hast-util-to-mdast) erzeugt den Markdown-Baum, und remark-stringify 11 mit remark-gfm 4 serialisiert ihn.
Werden Tabellen, Aufgabenlisten und Codesprachen wiederhergestellt?
Ja bei Tabellen (Pipe-Tabellen mit Kopfzeilentrenner), Aufgabenlisten (Checkboxen in <li> werden zu - [x] / - [ ]) und Codesprache (class="language-js" wird zum ```js-Block). Eine Checkbox außerhalb eines Listeneintrags wird nur zu maskiertem Text \[x].
Was passiert mit Inline-Styles, Klassen und Bildern?
style, class und andere Darstellungsattribute entfallen; nur Struktur und Semantik bleiben. Bilder behalten ihre Original-URL als , ohne Download oder Re-Hosting; ein Link mit Authentifizierung löst später nicht mehr auf.
Werden script, style und iframe entfernt?
<script> und <style> werden samt Inhalt entfernt. <iframe> wird zu einem leeren []()-Link, <video> verschwindet. HTML-Kommentare werden nicht entfernt — sie bleiben als <!-- --> im Markdown, was in einem README unerwünscht sein kann.
Werden verschachtelte Listen und Zitate behandelt?
Ja. Verschachtelte Listen behalten ihre Ebene mit zwei Leerzeichen, verschachtelte Zitate werden zu > >, und <p> in Listeneinträgen wird durch ein eigenes Plugin entfernt, damit keine Leerzeilen entstehen.
Muss ich das HTML vorher bereinigen?
Nein. parse5 korrigiert nicht geschlossene Tags und lose Fragmente, und sowohl ein Fragment als auch ein vollständiges <html>-Dokument werden akzeptiert; head-Elemente wie <title> werden ignoriert. Die Ausgabe kann normalisiert werden, daher vor dem Commit einmal lesen.
Kann es eine URL abrufen, und wird etwas hochgeladen?
Kein URL-Abruf und kein Upload. Die Seite läuft vollständig im Browser; HTML einfügen (oder die Einfüge-Tastenkombination nutzen, die text/html aus der Zwischenablage liest) und das Markdown aus einem schreibgeschützten Textfeld kopieren. Bei reinem Text wird auf text/plain zurückgegriffen.

