
Markdown till HTML och tillbaka: en konverterare med direkt förhandsvisning
Klistra in Markdown så ser du den färdiga sidan med ren HTML bredvid. Klistra in HTML så får du Markdown som duger till en README eller ett blogginlägg. Båda riktningarna körs i din webbläsare: texten skickas ingenstans och sparas inte någonstans.
.md här — filen läses lokalt. CommonMark stöds i sin vanliga omfattning plus GFM-tilläggen: tabeller, genomstrykning och uppgiftslistor.
Klistra in Markdown ovan — HTML visas här.
.html här — filen läses lokalt. Tolkningen går via DOMParser, så den fungerar både med ett utdrag och med en hel sida.
Klistra in HTML ovan — Markdown visas här.
Texten lämnar aldrig din webbläsare — konverteringen körs lokalt, utan att något skickas till en server.
Vad som exakt stöds
På Markdown-sidan — CommonMark i sin vanliga omfattning plus GFM-tilläggen: rubriker med brädgårdar och med understrykning, stycken, vågräta linjer; punktlistor, numrerade och nästlade listor, i både tät och gles form; uppgiftslistor inom hakparenteser; citat, inklusive lat radfortsättning; inhägnad kod med språknamn och indragen kod; GFM-tabeller med kolumnjustering; länkar, bilder, autolänkar och referenslänkar längst ner i dokumentet; fet stil, kursiv, genomstrykning, kod i löptext, escapade tecken och hård radbrytning. På HTML-sidan går tolkningen via webbläsarens egen DOMParser, så både ett utdrag och en hel sida med head fungerar. Tabeller med sammanslagna celler går inte att föra över till Markdown — den syntaxen finns inte där, så de förblir taggar och verktyget säger till. Vad som medvetet saknas: syntaxfärgning i kodblock, fotnoter, formler och direktiv från enskilda statiska webbplatsgeneratorer. Det är inte längre Markdown utan ett enskilt verktygs dialekt.
En radbrytning: två olika Markdown
Den vanligaste källan till skillnader mellan konverterare är just den enkla radbrytningen inuti ett stycke. Enligt CommonMark är den ett vanligt mellanslag: två rader klistras ihop till ett stycke. Så beter sig Pandoc, dokumentationsgeneratorer och de flesta statiska webbplatser. GitHub gör tvärtom i kommentarer, ärendebeskrivningar och granskningar: varje brytning blir en br-tagg. Just därför klumpar en text som såg bra ut i ett ärende ihop sig till ett enda stycke när den flyttas till en README. Kryssrutan «En enkel radbrytning är ett br» växlar mellan dessa två vanor. Som standard gäller CommonMark-regeln.
Varför förhandsvisningen inte visar allt som finns i HTML:en
Enligt specifikationen tillåter Markdown HTML inuti sig själv. Det är bekvämt och betyder samtidigt att vilken inklistrad text som helst kan innehålla körbar kod. Populära webbläsare på nätet lägger resultatet i innerHTML som det är. Biblioteket marked som de bygger på har sedan version fyra ingen inbyggd sanering alls — en script-tagg från någon annans Markdown körs helt enkelt där. Här byggs förhandsvisningen av DOM-noder enligt en vitlista: script, iframe, object, händelsehanterare av typen onclick och länkar med schemat javascript: når den inte, och listan över det bortklippta visas under resultatet. På fliken «HTML-kod» ser du hela utdata utan nedskärningar — det är text, inte en sida, och den går inte att köra. HTML från källan kan nå förhandsvisningen bara när du själv har slagit på motsvarande kryssruta. Som standard escapas taggar och visas som text.
