Markdown blev skabt af John Gruber i 2004 med et enkelt, elegant mål: skriv almindelig tekst, der læses naturligt, og konverter den derefter til rent HTML. To årtier senere er det overalt — GitHub README-filer, pull request-beskrivelser, Slack-beskeder, Notion-dokumenter, blogindlæg, AI-chat-svar. Det er et af de værktøjer, du vil bruge hver dag resten af din karriere, uanset om du tænker bevidst på det eller ej.

Hvad Markdown faktisk er

Markdown er almindelig tekst med let, læsbar syntaks lagt ovenpå. Et # i begyndelsen af en linje bliver et <h1>. At pakke et ord ind i **dobbelte asterisker** gør det fed. Backticks producerer inline kode. Den centrale designfilosofi er, at Markdown-kilde bør være læsbar som den er — selv inden den renderes. Hvis du nogensinde har skrevet en e-mail med *asterisker omkring betoning* eller brugt bindestreger til en punktliste, var du allerede ved at skrive noget meget tæt på Markdown.

Her er et hurtigt før-og-efter. Markdown til venstre producerer HTML til højre:

markdown
## Getting Started

Install the package with **npm**:

`npm install my-library`

Then import it in your project — see the [docs](https://example.com) for details.
html
<h2>Getting Started</h2>
<p>Install the package with <strong>npm</strong>:</p>
<p><code>npm install my-library</code></p>
<p>Then import it in your project — see the <a href="https://example.com">docs</a> for details.</p>

Du skriver den øverste halvdel; en Markdown-processor producerer den nederste halvdel. Det oversættelsestrin er usynligt, når det først er i din editor eller CI-pipeline.

Kernesyntaks — den del, alle varianter deler

Uanset hvilken Markdown-variant du bruger, virker disse byggeklodser overalt:

  • Overskrifter# H1, ## H2, ### H3 (op til seks niveauer)
  • Fed og kursiv**fed**, *kursiv*, ***begge***
  • Links[linktekst](https://url.com)
  • Billeder![alt-tekst](billede.png)
  • Inline kode`backtick` omslutter et kodestykke; triple backticks åbner en afgrænset kodeblok
  • Blokcitater — start en linje med >
  • Usorterede lister — linjer, der starter med - eller *
  • Sorterede lister — linjer, der starter med 1., 2. osv.
  • Vandret linje — tre eller flere bindestreger: ---

Her er et realistisk README-uddrag, der bruger alle ovenstående sammen:

markdown
# json-transform

> A zero-dependency library for transforming JSON structures.

## Installation

```bash
npm install json-transform
```

## Usage

```js
import { transform } from 'json-transform';

const result = transform(input, schema);
```

## Features

- **Fast** — processes 10k objects/sec on average hardware
- *Typed* — ships with full TypeScript definitions
- Zero runtime dependencies

See the [full documentation](https://json-transform.dev/docs) for advanced options.

---

MIT License
Tip: du kan bruge vores Markdown-forhåndsvisning-værktøj til at indsætte enhver Markdown og se den renderet øjeblikkeligt — nyttigt til at kontrollere syntaks inden du pusher til GitHub.

Variantproblemet — CommonMark, GFM og andre

Her er fangsten: "Markdown" er ikke én ting. Grubers originale 2004-spec var bevidst løs, hvilket førte til år med inkompatible implementeringer. Forskellige parsere håndterede kanttilfælde — nestede lister, tomme linjer inde i blokcitater, prioritet mellem betoning og links — på forskellige måder. Den samme kildefil ville rendere forskelligt i forskellige værktøjer.

CommonMark (lanceret i 2014) rettede dette. En gruppe udviklere — herunder folk fra GitHub, Stack Overflow og Reddit — skrev en streng, utvetydig specifikation, der dækkede hvert kanttilfælde med en testsuite på 652 eksempler. De fleste moderne værktøjer bruger nu CommonMark som deres baseline.

GitHub udvidede derefter CommonMark med sine egne tilføjelser og offentliggjorde GitHub Flavored Markdown (GFM). GFM er det, du skriver i GitHub README-filer, issues og pull requests. Mange andre værktøjer har også adopteret GFM-udvidelser, men ikke alle — så hvad der renderes på GitHub, renderes måske ikke på samme måde i din statiske webstedsgenerator eller noter-app. At vide, hvilken variant dit værktøj understøtter, sparer meget hovedpine.

GitHub Flavored Markdown-udvidelser

GFM tilføjer fem funktioner oven på CommonMark, som du vil bruge konstant på GitHub og ethvert værktøj, der understøtter GFM-supersættet:

Tabeller — pipe-adskilte kolonner med en separatorrække af bindestreger:

markdown
| Method  | Returns       | Mutates? |
|---------|---------------|----------|
| map()   | new array     | No       |
| filter()| new array     | No       |
| sort()  | same array    | Yes      |

Opgavelister — afkrydsningsfelter i issues og pull requests:

markdown
- [x] Write unit tests
- [x] Update CHANGELOG
- [ ] Add migration guide
- [ ] Tag release

Gennemstregning — pak tekst ind i dobbelte tildetegn:

markdown
~~deprecated API~~ — use `newMethod()` instead

Afgrænsede kodeblokke med sprogantydninger — sprogidentifikatoren efter den åbnende afgrænsning udløser syntaksfremhævning:

markdown
```python
def parse_config(path: str) -> dict:
    with open(path) as f:
        return json.load(f)
```

Autolinks — bare URL'er som https://example.com gøres automatisk klikbare uden at behøve [tekst](url)-syntaks. Dette er praktisk i issue-kommentarer, men kan være overraskende, hvis du indsætter en URL, du ikke vil have linket.

Brug vores Markdown-formateringsværktøj til at rydde op i inkonsekvent afstand, normalisere listeindrykning og standardisere afgrænsede kodebloks-afgrænsere — praktisk inden du commitder dokumenter til et repo.

Hvor du vil bruge Markdown i praksis

Markdown dukker op på flere steder, end de fleste udviklere forventer, når de første gang møder det:

  • GitHub og GitLab — README-filer, issues, pull request-beskrivelser, wikis og endda commit-beskedlignende tekster. Hvert repository du rører, vil have mindst en README.md.
  • Statiske webstedsgeneratorer — Jekyll, Hugo, Eleventy, Astro og Next.js accepterer alle Markdown-indholdsfiler. Du skriver indlæg i .md-filer, og generatoren konverterer dem til HTML-sider på byggetidspunktet.
  • Dokumentationsværktøjer — MkDocs, Docusaurus og GitBook er bygget helt rundt om Markdown-kilde. Open source-biblioteker bruger næsten universelt et af disse.
  • Notesapps — Obsidian, Notion, Bear og Typora bruger alle Markdown som deres native format (med varierende udvidelser). Dine noter er bærbare almindelige tekstfiler, ikke en proprietær database.
  • CMS-platforme — Ghost bruger Markdown indbygget. Contentful og Strapi understøtter begge Markdown-felter. Headless CMS-opsætninger gemmer typisk langtekstsindhold som Markdown-strenge.
  • AI-værktøjer — ChatGPT og Claude outputter begge Markdown som standard. Kodestykker, fede termer og punktlister i AI-svar er Markdown — chat-UI'et renderer dem, men den underliggende tekst er **fed** og ```python.

Markdown vs HTML — hvornår bruger man hvad

Markdown konverteres til HTML, men det kan ikke udtrykke alt, HTML kan. Der er ingen ækvivalent til <div class="card">, data-*-attributter eller aria-*-attributter. Til simpelt proseindhold — dokumentation, README-filer, blogindlæg, ændringslogger — er Markdown hurtigere at skrive og langt mere læsbar i sin rå form. Til komplekse UI-komponenter, brugerdefinerede layouts eller tilgængeligheds-annotationer, der kræver specifikke attributter, har du brug for HTML.

Den gode nyhed: de fleste Markdown-processorer tillader rå HTML inline. Du kan blande de to. Hvis du har brug for en <figure> med en <figcaption>, eller en <details>-afsløringsgadget, skriv blot HTML direkte i din .md-fil. Processoren lader det passere urørt. Brug denne flugtvej sparsomt — hvis mere end en tredjedel af din fil er rå HTML, kan du ligeså godt skrive HTML direkte og bruge vores HTML-formateringsværktøj til at holde det rent.

  • Brug Markdown til: dokumentation, README-filer, ændringslogger, blogindlæg, vidensbase-artikler, API-beskrivelsefelter
  • Brug HTML til: præcist layout, brugerdefinerede komponenter, formularer, elementer der kræver specifikke attributter
  • Bland begge, når: mestendels proseindhold med en håndfuld strukturelle undtagelser (en responsiv tabel, en videoindlejring)

Opsummering

Markdown er bedragerisk simpelt — det ser ud som blot en håndfuld tegnsætningsregler, men det driver dokumentation til nærmest alle større open source-projekter. At forstå kernesyntaksen tager omkring ti minutter. At forstå variantforskellene (CommonMark vs GFM vs hvad din SSG bruger) er det, der adskiller udviklere, der lejlighedsvis kæmper med deres dokumentationsværktøjer, fra dem der ikke gør.

De autoritative referencer: CommonMark til den standardiserede spec, GitHub Flavored Markdown til GitHub-udvidelserne og Markdown Guide til en praktisk snydelapsreference. Til daglig skrivning lader vores Markdown-forhåndsvisning dig se renderet output øjeblikkeligt, og Markdown-formateringsværktøjet holder dine kildefiler konsistente.