Markdown skapades av John Gruber 2004 med ett enda, elegant mål: skriv vanlig text som läses naturligt och konvertera den sedan till ren HTML. Två decennier senare finns det överallt — GitHub README-filer, pull request-beskrivningar, Slack-meddelanden, Notion-dokument, blogginlägg, AI-chattsvar. Det är ett av de verktyg du kommer att använda varje dag resten av din karriär, oavsett om du tänker på det medvetet eller inte.
Vad Markdown faktiskt är
Markdown är vanlig text med lätt, läsbar syntax lagd ovanpå. Ett # i början av en rad blir ett <h1>. Att wrappa ett ord i **dubbelasterisker** gör det fetstilt. Backticks producerar inbäddad kod. Den centrala designfilosofin är att Markdown-källan ska vara läsbar som den är — även innan den renderas. Om du någonsin skrivit ett e-postmeddelande med *asterisker runt betoning* eller använt bindestreck för en punktlista, skrev du redan något mycket nära Markdown.
Här är en snabb före-och-efter. Markdown på vänster sida producerar HTML på höger sida:
## 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.<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 övre halvan; en Markdown-processor producerar den nedre halvan. Det översättningssteget är osynligt när det väl är i din editor eller CI-pipeline.
Kärnsyntax — delen som varje smak delar
Oavsett vilken Markdown-variant du använder fungerar dessa byggstenar överallt:
- Rubriker —
# H1,## H2,### H3(upp till sex nivåer) - Fet och kursiv —
**fet**,*kursiv*,***båda*** - Länkar —
[länktext](https://url.com) - Bilder —
 - Inbäddad kod —
`backtick`wrappade ett utdrag; trippla backticks öppnar ett inhägnat kodblock - Blockcitat — börja en rad med
> - Osorterade listor — rader som börjar med
-eller* - Sorterade listor — rader som börjar med
1.,2.etc. - Horisontell linje — tre eller fler bindestreck:
---
Här är ett realistiskt README-utdrag som använder alla ovanstående tillsammans:
# 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 LicenseSmakproblemet — CommonMark, GFM och andra
Här är haken: "Markdown" är inte en sak. Grubers ursprungliga specifikation från 2004 var avsiktligt lös, vilket ledde till år av inkompatibla implementeringar. Olika parsers hanterade kantfall — kapslade listor, tomma rader inuti blockcitat, prioritet mellan betoning och länkar — på olika sätt. Samma källfil renderades annorlunda i olika verktyg.
CommonMark (lanserat 2014) fixade detta. En grupp utvecklare — inklusive personer från GitHub, Stack Overflow och Reddit — skrev en rigorös, entydig specifikation som täckte varje kantfall med en testsvit av 652 exempel. De flesta moderna verktyg använder nu CommonMark som sin baslinje.
GitHub utökade sedan CommonMark med sina egna tillägg och publicerade GitHub Flavored Markdown (GFM). GFM är vad du skriver i GitHub README-filer, ärenden och pull requests. Många andra verktyg har också antagit GFM-tillägg, men inte alla — så vad som renderas på GitHub kanske inte renderas på samma sätt i din statiska webbplatsgenerator eller anteckningsapp. Att veta vilken smak ditt verktyg stöder sparar mycket huvudkliande.
GitHub Flavored Markdown-tillägg
GFM lägger till fem funktioner ovanpå CommonMark som du ständigt kommer att använda på GitHub och i vilket verktyg som helst som stöder GFM-supersetet:
Tabeller — pipe-avgränsade kolumner med en separatorrow av bindestreck:
| Method | Returns | Mutates? |
|---------|---------------|----------|
| map() | new array | No |
| filter()| new array | No |
| sort() | same array | Yes |Uppgiftslistor — kryssrutor i ärenden och pull requests:
- [x] Write unit tests
- [x] Update CHANGELOG
- [ ] Add migration guide
- [ ] Tag releaseGenomstrykning — wrappa text i dubbeltilder:
~~deprecated API~~ — use `newMethod()` insteadInhägnade kodblock med språktips — språkidentifieraren efter det öppnande inhägnaden utlöser syntaxmarkering:
```python
def parse_config(path: str) -> dict:
with open(path) as f:
return json.load(f)
```Autolänkar — bara URL:er som https://example.com görs automatiskt klickbara utan att behöva [text](url)-syntax. Det är bekvämt i ärendekommentarer men kan vara överraskande om du klistrar in en URL du inte vill länka.
Var du kommer att använda Markdown i praktiken
Markdown dyker upp på fler ställen än de flesta utvecklare förväntar sig när de först stöter på det:
- GitHub och GitLab — README-filer, ärenden, pull request-beskrivningar, wikis och till och med commit-meddelandekroppar. Varje repository du rör kommer att ha åtminstone en README.md.
- Statiska webbplatsgeneratorer — Jekyll, Hugo, Eleventy, Astro och Next.js accepterar alla Markdown-innehållsfiler. Du skriver inlägg i
.md-filer och generatorn konverterar dem till HTML-sidor vid byggtiden. - Dokumentationsverktyg — MkDocs, Docusaurus och GitBook är byggda helt kring Markdown-källan. Öppen källkod-bibliotek använder nästan universellt ett av dessa.
- Anteckningsappar — Obsidian, Notion, Bear och Typora använder alla Markdown som sitt inbyggda format (med varierande tillägg). Dina anteckningar är portabla vanliga textfiler, inte en proprietär databas.
- CMS-plattformar — Ghost använder Markdown inbyggt. Contentful och Strapi stöder båda Markdown-fält. Headless CMS-upplägg lagrar vanligtvis långform-innehåll som Markdown-strängar.
- AI-verktyg — ChatGPT och Claude matar ut Markdown som standard. Kodutdrag, fetstilta termer och punktlistor i AI-svar är Markdown — chattgränssnittet renderar dem, men den underliggande texten är
**fet**och```python.
Markdown vs HTML — när ska man använda vad
Markdown konverteras till HTML, men det kan inte uttrycka allt HTML kan. Det finns ingen ekvivalent för <div class="card">, data-*-attribut eller aria-*-attribut. För enkelt prosainnehåll — dokumentation, README-filer, blogginlägg, ändringsloggar — är Markdown snabbare att skriva och mycket mer läsbart i sin råa form. För komplexa UI-komponenter, anpassade layouter eller tillgänglighetsannoteringer som kräver specifika attribut behöver du HTML.
Den goda nyheten: de flesta Markdown-processorer passerar råa HTML oförändrat. Du kan blanda de två. Om du behöver ett <figure> med ett <figcaption>, eller en <details>-avslöjandewidget, skriv bara HTML direkt i din .md-fil. Processorn passerar det oförändrat. Använd denna flyktlucka sparsamt — om mer än en tredjedel av din fil är råa HTML, kan du lika gärna skriva HTML direkt och använda vår HTML-formaterare för att hålla det rent.
- Använd Markdown för: dokumentation, README-filer, ändringsloggar, blogginlägg, kunskapsbas-artiklar, API-beskrivningsfält
- Använd HTML för: precis layout, anpassade komponenter, formulär, element som kräver specifika attribut
- Blanda båda när: mestadels prosainnehåll med en handfull strukturella undantag (en responsiv tabell, en videoinbäddning)
Sammanfattning
Markdown är bedrägligt enkelt — det ser ut som bara en handfull skiljetecken, men det driver dokumentation för praktiskt taget varje större öppen källkod-projekt. Att förstå kärnsyntaxen tar ungefär tio minuter. Att förstå smakskillnaderna (CommonMark vs GFM vs vad din SSG använder) är vad som skiljer utvecklare som ibland kämpar mot sin dokumentationsverktygkedja från dem som inte gör det.
De auktoritativa referenserna: CommonMark för den standardiserade specifikationen, GitHub Flavored Markdown för GitHub-tilläggen och Markdown Guide för en praktisk fuskbladsreferens. För daglig skrivning låter vår Markdown-förhandsvisning dig se renderad utdata direkt, och Markdown-formateraren håller dina källfiler konsekventa.