§

Lipește HTML

§

Brut

§

Previzualizare

Previzualizarea este sanitizată prin DOMPurify — tagurile script, gestionarii de evenimente și URI-urile javascript: sunt eliminate înainte de redare.

Markdown este lingua franca a documentației software americane și britanice. Fiecare README GitHub, răspuns Stack Overflow și comentariu Reddit trece printr-un parser Markdown, iar cele peste 100M+ postări ale dezvoltatorilor pe Stack Overflow se bazează pe CommonMark pentru o redare de încredere. Laboratoarele federale americane rulează conducte MkDocs și Sphinx care transformă fișierele sursă Markdown în portaluri de documentație statică, în timp ce creatorii de conținut GOV.UK redactează pagini de servicii în Markdown înainte de publicare. Notion, Obsidian și Bear oferă note prima facie Markdown pentru milioane de utilizatori americani și britanici, iar buletinele informative Substack compilează schițe Markdown în emailuri HTML. Convertirea HTML-ului exportat înapoi în Markdown este o muncă zilnică pentru scriitori tehnici, întreținători de open-source și ingineri de platformă pe ambele piețe.

Ce este conversia HTML în Markdown?

HTML este markup-ul redat pe care browserul îl afișează — <h1>, <ul>, <table>, <a> și restul. Markdown este un format ușor de text simplu care folosește punctuație minimă (# pentru titluri, * pentru accent, - pentru elemente de listă) pentru a codifica aceeași structură. GitHub Flavored Markdown (GFM) extinde specificația originală CommonMark cu tabele, text tăiat, liste de sarcini și linkuri automate. Convertirea HTML în Markdown transformă HTML-ul redat sau exportat înapoi în Markdown editabil în text simplu — exact ceea ce are nevoie o migrare de conținut dintr-un CMS sau o curățare de README.

Ce funcții GitHub Flavored Markdown sunt suportate în ieșire?

Motorul turndown@7.2.0 inclus cu extensia turndown-plugin-gfm emite supermulțimea completă GFM din HTML-ul tău: titluri ATX # până la ###### din <h1><h6>, liste ordonate și neordonate cu imbricare, bold **text** și italic *text*, text tăiat ~~text~~ din <del>, linkuri inline [text](url) și imagini ![alt](src), blocuri de cod delimitate cu indicii de limbaj (```js), porțiuni de cod inline `cod`, tabele cu conducte din <table>, liste de sarcini GFM - [ ] / - [x] din intrări checkbox, citate bloc > și reguli orizontale ---. Panoul de previzualizare re-rendă Markdown-ul emis cu marked@12.0.2 pentru a putea confirma conversia vizual.

Cum funcționează conversia HTML în Markdown?

Fiecare conversie rulează local în browserul tău folosind trei biblioteci incluse — fără CDN, fără fetch, fără telemetrie. Pașii principali sunt:

  1. Sanitizare: HTML-ul lipit este mai întâi procesat prin DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }) pentru a elimina elementele <script>, fiecare gestionar de evenimente on* și URI-urile javascript: înainte ca orice să parcurgă markup-ul. DOMPurify este același sanitizator XSS folosit de Mozilla MDN, Atlassian și Microsoft 365.
  2. Conversie: turndownService.turndown parcurge DOM-ul curățat și emite GitHub Flavored Markdown — titlurile devin prefixe #, listele devin elemente - / 1., <table> devine un tabel cu conducte, și așa mai departe. Markdown-ul este scris în <textarea>-ul de ieșire doar pentru citire prin value (niciodată innerHTML), deci este inerent sigur.
  3. Redare: Markdown-ul emis este re-analizat de marked.parse, sanitizat din nou prin DOMPurify și atribuit innerHTML-ului panoului de previzualizare pentru a obține o confirmare vizuală că Markdown-ul face un parcurs complet până la structura așteptată. Modul live debouncează intrarea la 150 ms, astfel încât ieșirea să se actualizeze pe măsură ce lipești, fără a suprasolicita parserul.

De ce să convertești HTML în Markdown cu această unealtă?

  • Confidențialitate: fiecare pas de sanitizare, convertire și redare are loc în browserul tău. HTML-ul — inclusiv postările exportate din CMS, documentația internă și sursa confidențială a paginii — nu ajunge niciodată la serverele noastre.
  • XSS-sigur implicit: HTML-ul lipit este procesat prin DOMPurify înainte ca turndown să îl parcurgă, iar panoul de previzualizare rulează din nou HTML-ul re-redat prin DOMPurify înainte de innerHTML, astfel încât lipirea unui markup care conține taguri <script> sau gestionari onerror= produce o previzualizare inertă și Markdown curat.
  • GFM-complet: elementele <table> se convertesc în tabele Markdown cu conducte, <del> în text tăiat, iar listele cu checkboxuri în liste de sarcini GFM. Majoritatea convertoarelor online pierd tabelele pe calea HTML → Markdown — extensia inclusă turndown-plugin-gfm le păstrează.

Care sunt aplicațiile comune ale conversiei HTML în Markdown?

Convertirea HTML în Markdown apare frecvent în migrarea de conținut, documentație și arhivare:

  • Migrare CMS: exportarea unei postări WordPress sau Ghost ca HTML și convertirea în Markdown pentru o reconstrucție de site static Hugo / Jekyll / 11ty / Astro. Conversia păstrează nivelurile titlurilor, linkurile, listele și accentul inline.
  • Curățare README: lipirea HTML-ului redat al unei pagini wiki sau al unui articol web și transformarea lui înapoi în Markdown editabil pentru un README de proiect sau un site de documentație, în loc să rescrii structura manual.
  • Arhivare și note: capturarea unui email HTML sau a unui fragment web și convertirea în Markdown pentru stocare în Obsidian, Notion sau o bază de cunoștințe în text simplu — Markdown rămâne prietenos cu diff-urile și supraviețuiește schimbărilor de format.

Cum arată un exemplu de conversie HTML în Markdown?

Lipirea <h2>Titlu</h2><ul><li>a</li><li>b<ul><li>imbricat</li></ul></li></ul> produce Markdown cu ## Titlu, o listă cu puncte imbricată și un panou de previzualizare care re-rendă aceeași structură imbricată. Lipirea unui <table> cu un rând de antet și două rânduri de date produce tabelul cu conducte | col | col | echivalent — confirmând că conversia păstrează titlurile, listele și tabelele.

Acest convertor HTML în Markdown rulează în întregime în browserul meu?

Da. Fiecare pas de sanitizare, convertire și redare rulează local ca JavaScript în fila browserului tău. Cele trei biblioteci incluse — turndown@7.2.0 (cu turndown-plugin-gfm@1.0.2), marked@12.0.2 și DOMPurify@3.1.7 — sunt livrate din aceeași origine ca pagina, deci nu există dependență de CDN, niciun fetch, niciun XMLHttpRequest, niciun navigator.sendBeacon pe intrare. Uneltele funcționează și offline odată ce pagina s-a încărcat, deoarece este un pachet static HTML/CSS/JS cu bibliotecile vendor copiate alături. Postările exportate, documentele interne și sursa confidențială a paginii rămân pe dispozitivul tău.

Este panoul de previzualizare redat sigur împotriva XSS?

Da. HTML-ul lipit este procesat prin DOMPurify.sanitize înainte ca turndown să îl parcurgă, iar fiecare șir HTML atribuit innerHTML-ului previzualizării trece prin DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }) de asemenea. DOMPurify este sanitizatorul XSS open-source întreținut de Cure53; este aceeași bibliotecă folosită de Mozilla MDN, Atlassian și Microsoft 365 pentru a întări HTML-ul furnizat de utilizator. Profilul implicit html elimină elementele <script>, fiecare atribut de gestionare a evenimentelor on* (onerror, onclick, etc.) și schemele URI javascript:. Lipirea <img src=x onerror=alert(1)> produce o previzualizare în care document.querySelector('#output-preview img[onerror]') returnează null și nu se declanșează nicio alertă.

Tabelele GFM sunt convertite din HTML?

Da. Direcția HTML → Markdown folosește turndown-plugin-gfm, care adaugă o regulă turndown personalizată ce parcurge nodurile <table> și emite Markdown-ul echivalent cu tabel cu conducte — un rând de antet, un rând de aliniere |---|---|, apoi rânduri de date. Majoritatea convertoarelor online pierd tabelele pe această cale; acesta le păstrează. Textul tăiat (<del>text</del>~~text~~) și listele de sarcini (<input type="checkbox">- [ ] / - [x]) se convertesc la fel.

Se va converti HTML-ul meu corect?

Pentru setul de funcții GFM canonic — titluri h1 până la h6, liste ordonate și neordonate cu imbricare, bold / italic / text tăiat, linkuri inline, imagini inline, blocuri de cod delimitate cu etichete de limbaj, porțiuni de cod inline, tabele cu conducte, liste de sarcini, citate bloc, reguli orizontale și linkuri automate — conversia este curată și previzibilă. Cazuri limită: comentariile HTML (<!-- ... -->) sunt eliminate (Markdown nu are sintaxă de comentarii); stilizarea inline și atributele de clasă sunt eliminate deoarece Markdown nu are echivalent; iar tagurile inline neobișnuite precum <sub> / <sup> sunt convertite în text simplu. Acestea sunt comportamente documentate ale turndown, nu erori.

Evidențierea sintaxei în blocurile de cod delimitate este suportată?

Nu în v1. Blocurile de cod delimitate se redau în previzualizare cu font monospațiat și un fundal subtil, dar fără evidențierea tokenurilor per limbaj. Adăugarea evidențierii sintaxei ar necesita includerea Prism sau highlight.js, fiecare adăugând 15–40 KB plus un fișier gramatical per limbaj și o matrice de teme care ar necesita alinierea cu paleta Terminal Workshop. Deocamdată, renderul se concentrează pe corectitudine și siguranță XSS; dacă există cerere din partea utilizatorilor pentru evidențiere inline, un comutator opțional este o urmărire realizabilă.

Acest Convertor HTML în Markdown include turndown@7.2.0 (+ turndown-plugin-gfm@1.0.2), marked@12.0.2 și DOMPurify@3.1.7 din aceeași origine, emite setul complet GFM și sanitizează fiecare șir HTML redat înainte de a atinge DOM-ul. Fără încărcare, fără CDN, fără telemetrie — fiecare octet rămâne în browserul tău.