ToolActToolAct

YAML-Formatierungstool

YAML Eingabe
Ausgabeergebnis
Zeilen: 1Zeichen: 0Bytes: 0
Zeilen: 1Zeichen: 0

Was ist YAML?

Der YAML-Formatter macht YAML-Dateien durch konsistente Einrückung, Zeilenumbrüche und sichtbare Struktur besser lesbar. YAML wird häufig für CI-Konfigurationen, Kubernetes-Manifeste, Docker Compose, Static-Site-Generatoren, Lokalisierung, OpenAPI-Dateien und Anwendungseinstellungen genutzt. Anders als JSON ist YAML stark von Einrückung, Listenmarkierungen, Doppelpunkten, Quotes und mehrzeiligen Strings geprägt; kleine Formatfehler können eine komplett andere Struktur erzeugen. Das Werkzeug hilft beim Lesen, Bereinigen und Finden offensichtlicher Syntaxprobleme, ersetzt aber keine Schema- oder Tool-spezifische Validierung. Besonders bei Kubernetes, GitHub Actions oder Ansible sollte das Ergebnis im Zielsystem geprüft werden. Besonders bei produktiven Daten oder Codebasen sollte das Ergebnis anschließend mit Parser, Tests oder Projektregeln geprüft werden.

Verwendung

Verwendung

  1. Fügen Sie YAML-Daten in das linke Eingabefeld ein oder geben Sie sie ein
  2. Wählen Sie die Einrückungsgröße passend zu Ihrem Projektstil
  3. Klicken Sie auf 'Formatieren' zur Verschönerung, 'Komprimieren' zur Größenreduktion oder 'Validieren' zur Syntaxprüfung
  4. Die Ergebnisse erscheinen rechts
  5. Klicken Sie auf 'Kopieren', um in die Zwischenablage zu kopieren

Optionen

EinrückungsgrößeWählen Sie 2 oder 4 Leerzeichen als Einrückung

Tastaturkürzel

  • Strg + EnterFormatieren
  • Strg + Umschalt + CErgebnis kopieren

YAML-Tipps

  • YAML ist einrückungsempfindlich. Überprüfen Sie verschachtelte Listen und Maps nach der Formatierung, bevor Sie das Ergebnis in CI-, Kubernetes- oder Deployment-Dateien verwenden.
  • Validieren Sie nach Möglichkeit gegen das Schema des Zieltools. Syntaktisch gültiges YAML kann dennoch für GitHub Actions, Docker Compose oder OpenAPI ungültig sein.

Anwendungsfälle

Einfache YAML-Konfiguration vor dem Commit normalisierenFügen Sie YAML für Anwendungen, Server, Datenbanken, Feature-Flags, Logging oder Benutzerrollen ein und formatieren Sie es mit 2- oder 4-Leerzeichen-Einrückung. Das Werkzeug richtet sich an alltägliche Schlüssel-Wert-, verschachtelte Objekt-, Array-, Boolean-, Null- und Quoted-String-Strukturen.
Häufige YAML-Einrückungsfehler schnell erkennenDer eingebaute Validator markiert Zeilen ohne Doppelpunkt-Trennzeichen, Werte ohne das erforderliche Leerzeichen nach dem Doppelpunkt und Tabulatoren an Stellen, an denen Leerzeichen erforderlich sind. Damit werden viele Copy-Paste- und manuelle Bearbeitungsfehler erkannt, bevor die Datei einen CI-Parser, ein Deployment-Skript oder eine Dokumentationsseite erreicht. Parsing und Validierung laufen vollständig im Browser ab – ein Entwurf mit internen Dienstnamen, unreleased Image-Tags oder Staging-Zugangsdaten kann bereinigt werden, ohne die Datei an einen externen Validator hochzuladen.
Aus einem unsauberen Entwurf eine saubere YAML-Datei zum Download erstellenNach dem Parsing schreibt der Formatter den Objektbaum in konsistentes YAML und ermöglicht das Kopieren oder Herunterladen von formatted.yaml. Es wird ein leichtgewichtiger Parser statt eine vollständige YAML-Engine verwendet – Anker, Aliase, komplexe mehrzeilige Skalare, Tags und erweitertes Schema-Verhalten sollten weiterhin mit der Laufzeit geprüft werden, die die Datei verarbeitet.
YAML zu JSON für eine nachgelagerte Pipeline konvertierenSchalten Sie die Ausgabe per Umschalter auf JSON um, wobei die gleichen Einrückungsoptionen beibehalten werden. So können CI-Skripte, jq-Filter oder Richtlinienprüfungen die Datei ohne einen zweiten Parser verarbeiten. Gemischte Arrays und Quoted Strings bleiben erhalten, aber YAML-Anker und -Aliase werden durch den leichtgewichtigen Parser weiterhin aufgelöst.
Ein Kubernetes- oder Docker-Compose-Manifest vor dem Deployment prüfenFügen Sie eine deployment.yaml oder docker-compose.yml ein, beheben Sie die vom Validator markierten Einrückungsfehler und prüfen Sie, ob apiVersion, kind und spec-Blöcke korrekt ausgerichtet sind. Die Seite ist ein schneller Lese- und Bereinigungsschritt – das endgültige Manifest benötigt dennoch kubectl apply --dry-run=client oder docker compose config, um Schema-Probleme zu erkennen.

Technisches Prinzip

Die YAML-Formatierung ist in der YAML-1.2.2-Spezifikation (überarbeitet Oktober 2021) verankert, die JSON formal als strikte Teilmenge von YAML definiert – jedes gültige JSON-Dokument ist als YAML parsebar. Das Parsing erfolgt in drei Schichten: Eine Darstellungsschicht scannt Unicode-Codepunkte und löst Zeichenersatzsequenzen auf; eine Serialisierungsschicht konstruiert einen Knotengraphen aus Skalaren, Sequenzen und Mappings; eine native Schicht wendet das YAML Core Schema an, um Skalare in die aufgelösten Typen `!!str`, `!!int`, `!!float`, `!!bool`, `!!null`, `!!seq`, `!!map` zu koerzieren. Gängige Laufzeitbibliotheken sind js-yaml und das neuere `yaml`-Paket auf Node, PyYAML und ruamel.yaml auf Python sowie SnakeYAML auf der JVM. Browserseitige Formatter parsen typischerweise über js-yaml's `load`/`dump` in ein einfaches JS-Objekt und round-trippen. Die Einrückung ist das tragende Primitiv: Nur ASCII-Leerzeichen (U+0020) sind erlaubt – die Spezifikation verbietet in §6.1 ausdrücklich Tabulatorzeichen (U+0009) für Einrückungen, weshalb das Einfügen aus einem Code-Editor, der automatisch konvertiert, die häufigste Parsing-Fehlerursache ist. Der Blockstil bestimmt die Verschachtelung rein aus der Spaltenposition, sodass Kindknoten mindestens ein Leerzeichen mehr eingerückt sein müssen als ihr Elternelement (zwei per Konvention). Der Flow-Stil entlehnt JSON-Syntax – `[1, 2, 3]` und `{a: 1, b: 2}` – und kann für Einzeiler innerhalb des Blockstils verschachtelt werden. Blockskalare verwenden indikatorgesteuertes Folding: `|` (literal) behält Zeilenumbrüche exakt bei, `>` (folded) kollabiert einzelne Zeilenumbrüche zu Leerzeichen und behält Leerzeilen als Absatztrenner, und die Chomping-Indikatoren `-` (nachfolgende Zeilenumbrüche entfernen) und `+` (alle nachfolgenden Zeilenumbrüche beibehalten) werden nach dem Indikator angehängt (`|-`, `>+`). Die Anführungszeichenregeln unterscheiden sich: Einfach-quotede Skalare behandeln `\\` wörtlich und verwenden `''` für ein eingebettetes Anführungszeichen; doppelt-quotede Skalare respektieren C-artige Escape-Sequenzen (`\\n`, `\\t`, `\\uXXXX`). Formatter normalisieren typischerweise auf einen Blockstil und geben Anker und Aliase erneut aus. Ein Anker `&name` markiert einen Knoten; ein Alias `*name` referenziert ihn; der Merge-Key `<<: *name` (ein YAML-1.1-Überbleibsel, der von den meisten Parsers noch unterstützt wird) zieht Schlüssel aus einem anderen Mapping in das aktuelle. Mehr-Dokument-Ströme werden durch `---`-Startmarker und optionale `...`-Endmarker getrennt – das Muster, das Kubernetes verwendet, um mehrere Ressourcen in einem Manifest auszuliefern. Zwei bekannte Fußangeln sollten sicher erneut ausgegeben werden: Das Norwegen-Problem – der nicht-quotede Skalar `no` wird unter dem YAML-1.1-Schema als `false` interpretiert (und der Ländercode wird zu einem Boolean) – und CVE-2017-18342, bei dem PyYAMLs `yaml.load` beliebige Python-Objekte deserialisierte, behoben durch die Umstellung auf `safe_load`. Beides sind Gründe, weshalb ein Formatter die Skalaraufösung sorgfältig behandeln und niemals getaggte Konstruktoren ausführen sollte. Das Parsing ist O(n) über die Eingabelänge; Kommentare werden von den meisten AST-basierten Bibliotheken verworfen, da sie nicht zum YAML-Informationsmodell gehören.

  • Spezifikation: YAML 1.2.2 (Okt 2021). JSON ist eine strikte Teilmenge von YAML 1.2, daher parst jedes gültige JSON-Dokument als YAML; gängige Bibliotheken sind js-yaml, das `yaml`-Paket, PyYAML, ruamel.yaml, SnakeYAML.
  • Die Einrückung muss ASCII-Leerzeichen (U+0020) sein; Tabulatorzeichen (U+0009) sind für Einrückungen durch §6.1 verboten – die häufigste Ursache für `mapping values are not allowed here`-Fehler.
  • Block- vs. Flow-Stil: Block verwendet Spaltenpositions-Verschachtelung (2 oder 4 Leerzeichen per Konvention); Flow verwendet JSON-ähnliche `[1, 2, 3]` und `{a: 1}`. Beide können verschachtelt werden.
  • Blockskalare: `|` literal behält Zeilenumbrüche bei, `>` folded kollabiert einzelne Zeilenumbrüche zu Leerzeichen; Chomping-Indikatoren `-` (entfernen) und `+` (beibehalten) werden am Indikator angehängt, z. B. `|-`, `>+`.
  • Anker `&name` markieren Knoten, Aliase `*name` referenzieren sie, und der Merge-Key `<<: *name` zieht Schlüssel aus einem anderen Mapping (YAML-1.1-Überbleibsel, von den meisten Parsersn unterstützt).
  • Mehr-Dokument-Ströme werden durch `---` (Start) und optionale `...` (Ende) Marker getrennt – das Muster, das Kubernetes für die Auslieferung mehrerer Ressourcen in einem Manifest verwendet.
  • Fußangeln: Das Norwegen-Problem (nicht-quotede `no`/`yes`/`on`/`off` werden unter dem YAML-1.1-Schema als Booleans geparst; das YAML 1.2 Core Schema behebt dies größtenteils) und CVE-2017-18342 (PyYAML `yaml.load` führt beliebigen Code aus; verwenden Sie `safe_load`).

Beispiele

Inkonsistente Einrückung in einer Konfigurationsdatei korrigieren

Eingabe (fehlerhaft):
server:
   port: 8080
     host: localhost
  debug: true

Formatiert (2 Leerzeichen):
server:
  port: 8080
  host: localhost
  debug: true

Verschachtelte Liste von Services in docker-compose.yml

version: '3.8'
services:
  web:
    image: nginx:1.25
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - api
  api:
    image: node:20
    environment:
      NODE_ENV: production

Kubernetes-Deployment-Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  labels:
    app: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    spec:
      containers:
        - name: web
          image: nginx:1.25

YAML in JSON für eine jq-Pipeline konvertieren

YAML-Eingabe:
user:
  id: 42
  name: alice
  roles:
    - admin
    - editor

JSON-Ausgabe:
{
  "user": {
    "id": 42,
    "name": "alice",
    "roles": ["admin", "editor"]
  }
}

Fehlendes Leerzeichen nach Doppelpunkt erkennen

Eingabe:
name:alice
age: 30

Fehler in Zeile 1: fehlendes Leerzeichen nach Doppelpunkt
Korrigiert:
name: alice
age: 30

FAQ

Was umfasst die YAML-Formatierung?

Normalisierung der Einrückung (typisch 2 Leerzeichen), einheitlicher Quote-Stil, Ausrichtung der Listenmarker und Umbruch langer Inline-Collections in den Block-Stil. Die meisten YAMLs in freier Wildbahn sind handgepflegt und sammeln inkonsistenten Stil an; der Formatter glättet das.

Konvertiert es Flow-Style in Block-Style?

Viele Builds lassen dich zwischen Flow-Style (JSON-ähnlich {key: value, key2: value2}) und Block-Style (mehrzeilig eingerückt) wählen. Block ist beim Editieren von Hand besser lesbar; Flow ist kompakter. Beim Round-Trip bleiben die Daten erhalten, aber das Erscheinungsbild ändert sich.

Warum verändert es meine Anführungszeichen?

YAML erlaubt Strings ohne Quotes, mit einfachen oder mit doppelten Quotes - mit subtilen Unterschieden. Yes/no, true/false, on/off werden als Booleans interpretiert, sofern sie nicht in Quotes stehen; Zahlen ohne Quotes sind Zahlen, mit Quotes sind sie Strings. Der Formatter setzt Quotes mitunter, um Werte eindeutig zu machen, die sonst falsch interpretiert würden.

Bleiben Kommentare erhalten?

Die meisten Builds erhalten YAML-Kommentare (#), aber ihre Position relativ zu AST-Knoten kann sich leicht verschieben. Kommentare über Schlüsseln bleiben meist oben; nachgezogene Kommentare in derselben Zeile bleiben angeheftet. Lade nach dem Formatieren neu und prüfe, ob die Kommentarposition noch sinnvoll ist.

Wird das YAML hochgeladen?

Nein. Parsing und Formatierung laufen in deinem Browser über js-yaml oder Ähnliches. Eingefügtes YAML wird nicht übertragen.

Warum verändert mein YAML-Round-Trip Anchors und Aliases?

Mit der YAML-Syntax & (Anchor) und * (Alias) kannst du einen Wert einmal definieren und wiederverwenden. Manche Formatter expandieren Aliases standardmäßig inline und verlieren so die Deduplizierung. Such nach einer Option zum Erhalten der Anchors, falls dein Tooling darauf angewiesen ist.

Was, wenn mein YAML mit Tabs eingerückt ist?

YAML verbietet Tabs zur Einrückung - es müssen Leerzeichen sein. Der Formatter wandelt Tabs je nach Konfiguration entweder in Leerzeichen um oder verweigert das Parsen. Ersetze Tabs vor dem Einfügen durch Leerzeichen, wenn du einen Parse-Fehler bekommst.