Skip to content

YAMLYAML

YAML Formatter

Räume unordentliches YAML auf — und behalte jeden Kommentar.

YAML

YAML hier einfügen oder eine Datei auf die Seite ziehen

YAML

YAML erscheint hier während der Eingabe

Kostenlos und unbegrenzt · Keine Anmeldung · Einrückung, Abstände und Anführungszeichen werden normalisiert — jeder Kommentar, den du geschrieben hast, bleibt erhalten.

Was normalisiert wird

  • Einrückung — jede Ebene wird auf zwei oder vier Leerzeichen umgeschrieben, egal wie gemischt die Eingabe war, und eine unter einem Schlüssel verschachtelte Sequenz wird unter diesen Schlüssel eingerückt.
  • Abstände — ein Leerzeichen nach einem Doppelpunkt und nach einem Listen-Bindestrich, ein Leerzeichen vor einem Inline-Kommentar, und mehrere Leerzeilen hintereinander werden zu einer.
  • Zeilenenden und Leerzeichen am Zeilenende — Windows-Zeilenenden werden zu LF, Leerzeichen am Ende einer Zeile entfernt.
  • Flow-Collections — aus [80, 443] wird [ 80, 443 ]; sie bleiben in einer Zeile, statt in Block-Schreibweise aufgelöst zu werden.
  • Unzitierte Zahlen unter YAML 1.2 — sie werden in kanonischer Form ausgegeben, aus 022 wird also 22, aus +1 wird 1 und aus 1e3 wird 1e+3. Im YAML-1.1-Modus bleiben Oktalzahlen mit führender Null wie 0644 erhalten.
  • Gefaltete Skalare (>) — werden auf eine Zeile pro Absatz neu umbrochen, die Absatzgrenzen bleiben erhalten.
  • Schlüsselreihenfolge — nur, wenn du „Schlüssel sortieren“ einschaltest; sonst bleiben die Schlüssel, wo du sie hingeschrieben hast.

Was genau so bleibt, wie du es geschrieben hast

  • Jeder Kommentar — in einer eigenen Zeile, hinter einem Wert oder als Block zwischen Abschnitten.
  • Anführungszeichen — einfache bleiben einfach, doppelte bleiben doppelt, unzitierte Werte bleiben unzitiert.
  • Anchors, Aliases und Merge-Keys — &defaults, *defaults und <<: bleiben erhalten und werden nicht aufgelöst.
  • Literale Block-Skalare (|) — Zeile für Zeile, einschließlich der abschließenden Zeilenumbrüche.
  • Die Reihenfolge von Sequenzen immer, die von Schlüsseln, solange du nicht sortierst.
  • Dokumenttrenner (---) und %YAML-Direktiven in Dateien mit mehreren Dokumenten.
  • Lange Zeilen — nichts wird umbrochen, eine lange URL oder ein langer Befehl bleibt also in einer Zeile.
  • Leere Werte, ~, null und Booleans, wie du sie geschrieben hast: True bleibt True.

Warum die meisten Formatter deine Kommentare löschen

Fast jedes Online-YAML-Tool arbeitet gleich: das Dokument in reine Daten parsen und diese Daten wieder ausgeben. Kommentare sind keine Daten, also überleben sie den Weg nie. Konfigurationsdateien bestehen oft mehr aus Kommentaren als aus Konfiguration — und wer sie verliert, verliert die Begründung hinter den Werten.

Diese Seite verwendet einen anderen Parser als der Rest der Website — einen, der einen konkreten Syntaxbaum behält, sodass jeder Kommentar an der Zeile hängen bleibt, die er beschreibt. Deshalb ist der Formatter auch etwas strenger bei der Syntax: Er muss die Form des Dokuments genau genug verstehen, um es originalgetreu wieder aufzubauen.

Kommentare und Struktur bleiben erhalten

Die Einrückung wird auf die gewählte Breite normalisiert; die Kommentare bleiben, wo du sie hingeschrieben hast.

Vorher

# Production cluster
server:
      host:   0.0.0.0
      port: 8080   # internal only
features:
    - fast
    -    private

Nachher

# Production cluster
server:
  host: 0.0.0.0
  port: 8080 # internal only
features:
  - fast
  - private

Mehr Vorher-Nachher-Beispiele

Jedes Beispiel auf dieser Seite wird im Werkzeug oben mit der Standard-Einrückung von zwei Leerzeichen genau so formatiert.

Anchors, Aliases und Block-Skalare bleiben wie geschrieben

Ein Docker-Compose-Ausschnitt mit vier Leerzeichen Einrückung. Anchor, Merge-Key und literaler Block bleiben unberührt; nur die Einrückung ändert sich.

Vorher

x-defaults: &defaults
    restart: always
    logging: json

services:
    web:
        <<: *defaults
        image: nginx
        command: |
            sh -c "echo starting"
            exec nginx

Nachher

x-defaults: &defaults
  restart: always
  logging: json

services:
  web:
    <<: *defaults
    image: nginx
    command: |
      sh -c "echo starting"
      exec nginx

Sortierte Schlüssel für lesbare Diffs

Dieselbe Datei mit eingeschaltetem „Schlüssel sortieren“. Die Mapping-Schlüssel werden auf jeder Ebene sortiert, die Sequenz behält ihre Reihenfolge, und der Kommentar wandert mit dem Schlüssel, den er beschreibt.

Vorher

replicas: 3
name: api
# Ports the service exposes
ports:
  - 443
  - 80
image: api:1.2

Nachher

image: api:1.2
name: api
# Ports the service exposes
ports:
  - 443
  - 80
replicas: 3

Formatter, Validator oder Converter?

Alle drei nutzen dieselbe Engine in deinem Browser. Welchen du nimmst, hängt davon ab, wohin die Datei als Nächstes geht.

Der Formatter, wenn die Datei YAML bleibt

Eine Compose-Datei, eine Helm-values-Datei oder eine CI-Pipeline, an der mehrere Leute gearbeitet haben. Du willst einheitliche Einrückung und die Kommentare behalten, die die Werte erklären. Genau das kann dir ein Umweg über einen Converter nicht geben.

Der Validator, wenn sich etwas nicht parsen lässt

Der YAML-Validator ist dieselbe Engine mit einem Ausgabefenster, das sich auf die Diagnose konzentriert: Jeder Fehler trägt Zeile, Spalte, eine verständliche Ursache und eine Lösung, und jeder Wert, den YAML 1.1 und 1.2 unterschiedlich lesen, wird markiert.

Der Converter, wenn die Datei dorthin geht, wo JSON gesprochen wird

API-Request-Bodies, Test-Fixtures, eine jq-Pipeline. Der YAML-zu-JSON-Converter verwirft Kommentare — JSON hat keine Syntax dafür — und sagt dir, wie viele es waren, löst Anchors auf und kann einen Strom aus mehreren Dokumenten als Array oder als JSON Lines ausgeben.

Häufige Fragen

Behält dieser YAML-Formatter Kommentare?

Ja. Der Formatter parst dein Dokument mit einem Parser, der einen konkreten Syntaxbaum behält. Kommentare in eigener Zeile, Kommentare hinter einem Wert und Kommentarblöcke zwischen Abschnitten kommen daher genau dort heraus, wo sie hineingegangen sind. Schaltest du die Schlüsselsortierung ein, bleibt ein Kommentar an dem Schlüssel hängen, über dem er steht. Die meisten Online-Formatter parsen YAML in reine Daten und geben sie wieder aus — deshalb verlieren sie jeden Kommentar; der JSON-Converter auf dieser Seite tut zwangsläufig dasselbe und sagt dir, wie viele es waren.

Verändert das Formatieren meine Daten?

Struktur und Text bleiben unangetastet: Anführungszeichen bleiben genau so, wie du sie geschrieben hast, Anchors, Aliases und Merge-Keys bleiben an Ort und Stelle, Block-Skalare behalten ihren Inhalt, und die Schlüsselreihenfolge bleibt erhalten, solange du nicht sortieren lässt. Zwei Dinge werden normalisiert. Unzitierte Zahlen werden unter YAML 1.2 in kanonischer Form ausgegeben — aus 022 wird 22, aus +1 wird 1 und aus 1e3 wird 1e+3; stellst du die Version auf 1.1, bleiben Oktalzahlen mit führender Null wie 0644 erhalten. Gefaltete Skalare (>) werden neu umbrochen, die Absatzgrenzen bleiben. Muss ein Wert seine exakte Schreibweise behalten, setze ihn in Anführungszeichen — die Warnungen unter der Ausgabe listen jeden unzitierten Wert auf, den YAML 1.1 und 1.2 unterschiedlich lesen.

Welche Einrückung verwendet der Formatter?

Standardmäßig zwei Leerzeichen, auf Wunsch vier. Jede Ebene des Dokuments bekommt dieselbe Breite, egal wie die Eingabe eingerückt war, und eine unter einem Schlüssel verschachtelte Sequenz wird unter diesen Schlüssel eingerückt. YAML verbietet Tabulatoren zum Einrücken, deshalb gibt es keine Tab-Option, und ein mit Tabulatoren eingerücktes Dokument wird mit Zeilennummer als Fehler gemeldet statt formatiert.

Kann er Schlüssel sortieren?

Ja. Die Option „Schlüssel sortieren“ ordnet die Schlüssel jedes Mappings alphabetisch, auf jeder Verschachtelungsebene — das erleichtert Diffs und Code-Reviews bei Dateien, die mehrere Leute oder Werkzeuge bearbeiten. Sequenzen behalten ihre Reihenfolge, weil die Reihenfolge in einer Liste etwas bedeutet. Kommentare wandern mit dem Schlüssel, zu dem sie gehören. Die Sortierung ist standardmäßig aus: In YAML bedeutet die Schlüsselreihenfolge nichts, für die Menschen, die die Datei lesen, aber oft eine Menge.

Kommt er mit YAML aus mehreren Dokumenten zurecht?

Ja. Eine Datei mit mehreren durch --- getrennten Dokumenten wird Dokument für Dokument formatiert, die Trenner bleiben erhalten — ein Kubernetes-Manifest mit Deployment, Service und Ingress bleibt also eine Datei. Ein führendes --- und eine %YAML-Direktive bleiben ebenfalls erhalten, und die Statuszeile sagt dir, wie viele Dokumente formatiert wurden.

Warum lehnt der Formatter YAML ab, das der Converter akzeptiert?

Der Formatter verwendet einen strengeren Parser als der Converter, weil er die genaue Form des Dokuments verstehen muss, um es mit den Kommentaren an Ort und Stelle wieder aufzubauen. Ein Dokument, das der Converter parst, hier aber scheitert, wird mit Zeile, verständlicher Erklärung und Lösungsvorschlag gemeldet — genau wie im YAML-Validator. Der Leitfaden zu häufigen YAML-Fehlern geht die sechs Fehler durch, die hinter fast jedem gescheiterten Parse stehen.

Ist das dasselbe wie yamllint oder Prettier?

Nein, und sie ergänzen sich gut. yamllint meldet Stil- und Syntaxprobleme, schreibt die Datei aber nicht um; dieser Formatter schreibt Einrückung und Abstände um, erzwingt aber keine Regeln wie eine maximale Zeilenlänge. Die YAML-Ausgabe von Prettier kommt dem hier sehr nahe, und wenn dein Projekt es ohnehin ausführt, brauchst du diese Seite nicht — sie ist für die Datei da, die du gerade in der Zwischenablage hast, ohne Installation und ohne Upload.

Wird mein YAML beim Formatieren hochgeladen?

Nein. Der Formatter ist JavaScript, das in deinem Browser-Tab läuft. Die yaml-Bibliothek wird mit der Seite geladen, und es gibt keinen Server-Endpunkt, an den ein Dokument geschickt werden könnte; du kannst die Seite laden, die Internetverbindung trennen und weiter formatieren. Das zählt gerade bei den Dateien, die man üblicherweise aufräumen will — Kubernetes-Manifeste, Docker-Compose-Dateien und CI-Pipelines enthalten Hostnamen, Registries und gelegentlich ein Geheimnis.

Wie formatiere ich YAML auf der Kommandozeile?

yq -i . config.yaml formatiert eine Datei an Ort und Stelle und behält Kommentare; ohne -i wird das Ergebnis stattdessen ausgegeben. Mit installiertem Prettier formatiert npx prettier --write "**/*.{yml,yaml}" jede YAML-Datei eines Projekts. In Python formatiert ruamel.yaml im Round-Trip-Modus unter Beibehaltung der Kommentare — das kann PyYAML nicht. Für eine einzelne Datei füge sie einfach in den Formatter oben ein.