Eine Checkliste ist eine gewöhnliche Aufzählung, bei der jeder Punkt mit einem Paar eckiger Klammern beginnt. Leere Klammern sind ein nicht angekreuztes Kästchen, ein x dazwischen ein angekreuztes. Das ist die Syntax hinter jeder To-do-Liste, jeder Checkliste in einem Pull Request und jeder README, die Fortschritt festhält.

Checklisten — hak etwas ab
Markdown
- [x] Entwurf schreiben
- [ ] Überarbeiten
- [ ] Als PDF exportieren
  - [x] Ränder wählen
  - [ ] Seitenzahlen ergänzen
- [ ] Verschicken
Preview
  • [x] Entwurf schreiben
  • [ ] Überarbeiten
  • [ ] Als PDF exportieren
    • [x] Ränder wählen
    • [ ] Seitenzahlen ergänzen
  • [ ] Verschicken

Die Syntax

Markdown
- [ ] Nicht erledigt
- [x] Erledigt
Preview
  • [ ] Nicht erledigt
  • [x] Erledigt

Drei Dinge müssen stimmen:

  1. Es muss ein Listenpunkt sein. Das - (oder *, oder +) kommt zuerst. Klammern auf einer eigenen Zeile sind nur Klammern.
  2. Ein Leerzeichen im leeren Kästchen. - [] ist kein Kästchen, - [ ] schon.
  3. Ein Leerzeichen nach der schließenden Klammer. - [x]Erledigt scheitert, - [x] Erledigt funktioniert.

Ein großes X funktioniert in den meisten Renderern genauso wie ein kleines, aber klein ist die Konvention.

Wo die Kästchen anklickbar sind

Das Kästchen wird als echtes <input type="checkbox"> gesetzt, und ob du es anklicken kannst, hängt ganz davon ab, wo das Dokument angezeigt wird:

  • GitHub und GitLab, in Issues, Pull Requests und README-Dateien: anklickbar, und ein Häkchen ändert das darunterliegende Markdown für alle.
  • Die meisten Generatoren für statische Seiten und Vorschauen: gesetzt, aber deaktiviert — ein Bild von einem Kästchen.
  • Notiz- und Editor-Apps: meist anklickbar, und die Datei ändert sich mit.

Reagiert ein Kästchen nicht, hat der Renderer es deaktiviert. Das ist eine bewusste Entscheidung, kein Fehler in deiner Syntax.

Verschachteln

Checklisten verschachteln sich genau wie gewöhnliche Listen: zwei Leerzeichen pro Ebene.

Markdown
- [ ] Release ausliefern
  - [x] Changelog schreiben
  - [ ] Screenshots machen
  - [ ] Zur Prüfung einreichen
Preview
  • [ ] Release ausliefern
    • [x] Changelog schreiben
    • [ ] Screenshots machen
    • [ ] Zur Prüfung einreichen

Übergeordnete Kästchen haken sich nicht selbst ab, wenn ihre Kinder fertig sind. Nichts in Markdown rechnet Fortschritt aus — es ist ein Textformat, kein Projektmanager.

Mit anderer Formatierung mischen

Alles, was in einen Listenpunkt darf, funktioniert auch in einer Aufgabe:

Markdown
- [x] Die [Anleitung zu Listen](/de/markdown-listen) lesen
- [ ] `npm run build` ausführen
- [ ] Den **kritischen** Fehler beheben
- [ ] Jemanden zu ~~dem alten Ansatz~~ dem neuen befragen
Preview
  • [x] Die Anleitung zu Listen lesen
  • [ ] npm run build ausführen
  • [ ] Den kritischen Fehler beheben
  • [ ] Jemanden zu dem alten Ansatz dem neuen befragen

Die Liste eng halten

Eine Leerzeile zwischen den Punkten macht aus einer engen Liste eine lockere, und jede Aufgabe bekommt den Abstand eines eigenen Absatzes. Bei zwanzig Punkten sieht das kaputt aus. Halt die Zeilen beieinander — siehe enge und lockere Listen.

Häufige Fehler

Das Leerzeichen in den Klammern fehlt. - [] erscheint als wörtliche Klammern. Es muss - [ ] heißen.

Das Listenzeichen vergessen. [ ] Aufgabe ist keine Checkliste, sondern ein Absatz, der mit eckigen Klammern beginnt.

Keine Leerzeile vor der Liste. Eine Checkliste, die direkt unter einem Absatz beginnt, wird in ihn hineingezogen, genau wie jede andere Liste.

Sie überall erwarten. Checklisten sind eine Erweiterung aus GitHub Flavored Markdown. In modernen Werkzeugen sind sie beinahe universell, aber das Markdown von 2004 kennt sie nicht.

Eine Fortschrittsanzeige erwarten. 3/8 erledigt rechnet das Werkzeug um die Datei herum aus, nicht das Markdown.

Häufige Fragen

Wie mache ich in Markdown ein Kästchen?

Beginn einen Listenpunkt mit einem Klammerpaar: - [ ] für leer, - [x] für angekreuzt. Das Leerzeichen in den leeren Klammern ist Pflicht.

Warum lässt sich mein Kästchen nicht anklicken?

Weil der Renderer es deaktiviert hat. GitHub, GitLab und die meisten Editor-Apps lassen dich klicken und schreiben die Änderung in die Datei zurück; Generatoren für statische Seiten und schreibgeschützte Vorschauen setzen das Kästchen meist als deaktiviertes Element, es ist also nur ein Bild davon.

Kann ich Checklisten verschachteln?

Ja. Rück pro Ebene um zwei Leerzeichen ein, genau wie bei einer normalen Liste. Alle Kinder abzuhaken hakt den Elternpunkt nicht automatisch ab — nichts in Markdown verfolgt das.

Funktionieren Checklisten überall?

Fast. Sie kommen aus GitHub Flavored Markdown und nicht aus der ursprünglichen Spezifikation, ein sehr alter oder bewusst minimaler Parser setzt sie also als wörtliche Klammern. Jeder verbreitete Editor und jede verbreitete Plattform beherrscht sie.

Was ist der Unterschied zwischen - [x] und - [X]?

In der Praxis keiner — beide erscheinen in praktisch jedem Parser als angekreuztes Kästchen. Kleinschreibung ist die Konvention.