Formatieren, validieren Sie YAML und konvertieren Sie zwischen YAML und JSON.
Eingabe
Ausgabe
Werbung
Über dieses Werkzeug
YAML (YAML Ain't Markup Language) wurde ursprünglich 2001 von Clark Evans entwickelt, mit Beiträgen von Ingy döt Net und Oren Ben-Kiki. Der Name war zunächst ein spielerisches Akronym für "Yet Another Markup Language", wurde aber später als rekursives Akronym umbenannt, um zu betonen, dass YAML grundsätzlich ein Datenserialisierungsformat ist, keine Dokumentauszeichnungssprache.
Die erste offizielle Spezifikation, [YAML 1.0](https://yaml.org/spec/1.0/), wurde im Januar 2004 veröffentlicht, die aktuelle [YAML 1.2-Spezifikation](https://yaml.org/spec/1.2.2/) erschien 2009.
YAML wurde mit menschlicher Lesbarkeit als primärem Ziel entwickelt. Es verwendet einrückungsbasierte Struktur (nur Leerzeichen, niemals Tabs) und minimale Interpunktion, was es visuell sauberer als JSON oder XML für Konfigurationsdateien macht. YAML unterstützt reichhaltige Datentypen einschließlich Skalare, Sequenzen, Mappings, mehrzeilige Zeichenketten (Literal-Block mit | und gefalteter Block mit >), Anker und Aliase zur Datenwiederverwendung und sogar komplexe Schlüssel.
Es ist eine strikte Obermenge von JSON, was bedeutet, dass jedes gültige JSON-Dokument auch gültiges YAML ist. YAMLs Designphilosophie ist von Sprachen wie Python und von E-Mail-Formatierungskonventionen (RFC 2822) inspiriert.
YAML ist zum De-facto-Standard für Konfiguration in modernen DevOps- und Cloud-nativen Tools geworden. [Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/)-Manifeste, Docker-Compose-Dateien, Ansible-Playbooks, GitHub-Actions-Workflows, GitLab-CI-Definitionen und Helm-Chart-Templates verwenden alle YAML umfangreich.
Infrastructure-as-Code-Plattformen wie Terraform und CloudFormation setzen ebenfalls auf YAML. Dieser Formatierer verwendet die [js-yaml](https://github.com/nodeca/js-yaml)-Bibliothek, die am weitesten verbreitete JavaScript-Implementierung des YAML 1.2-Parsers.
Er unterstützt Formatierung mit anpassbarer Einrückung, Syntaxvalidierung mit detaillierter Fehlerberichterstattung und nahtlose bidirektionale Konvertierung zwischen YAML und JSON. Alle Verarbeitung erfolgt vollständig in Ihrem Browser — Ihre Daten verlassen niemals Ihr Gerät.
Fügen Sie Ihren YAML- oder JSON-Code in den Eingabebereich ein.
Klicken Sie auf Formatieren zum Verschönern, Validieren zur Syntaxprüfung oder verwenden Sie die Konvertierungsschaltflächen.
Kopieren Sie die formatierte Ausgabe oder verwenden Sie die YAML↔JSON-Konvertierung nach Bedarf.
Die Entwicklung von YAML
YAML begann 2001 als Initiative von Clark Evans zusammen mit Ingy döt Net und Oren Ben-Kiki, um eine menschenfreundliche Alternative zu XML für Datenserialisierung und Konfiguration zu schaffen. Damals war XML das dominierende Format für strukturierte Daten, aber seine wortreiche Syntax mit schließenden Tags, Attribut-Anführungszeichen und Namespace-Deklarationen machte es unhandlich für Konfigurationsdateien, die Entwickler täglich von Hand bearbeiteten. YAMLs einrückungsbasierte Struktur, inspiriert von Python und E-Mail-Formatierungskonventionen, bot einen radikal saubereren Ansatz.
Das Format erlangte seine erste große Adoptionswelle durch das Ruby on Rails Framework in den Jahren 2004-2005, das database.yml für die Datenbankkonfiguration und fixtures.yml für Testdaten verwendete. Dies führte eine ganze Generation von Webentwicklern an YAML als ihr Standard-Konfigurationsformat heran. Die YAML-Spezifikation selbst durchlief mehrere Versionen: YAML 1.0 im Jahr 2004 formalisierte die Sprache, YAML 1.1 im Jahr 2005 fügte Funktionen wie Merge-Keys und verbesserte Typauflösung hinzu, und YAML 1.2 im Jahr 2009 glich die Spezifikation enger an JSON an, sodass jedes gültige JSON-Dokument auch gültiges YAML würde.
Der Aufstieg von DevOps und Cloud-nativer Infrastruktur ab 2013 verwandelte YAML von einer beliebten Bequemlichkeit in einen Industriestandard. Kubernetes übernahm YAML für alle Ressourcen-Manifeste, Docker Compose verwendete es für Multi-Container-Definitionen, und CI/CD-Plattformen wie GitHub Actions, GitLab CI und CircleCI wählten alle YAML für die Pipeline-Konfiguration. Ansible-Playbooks, Helm-Charts und CloudFormation-Templates festigten seine Dominanz in der Infrastructure-as-Code weiter.
YAMLs Geschichte ist nicht ohne Kontroversen. Das berüchtigte "Norwegen-Problem" — bei dem der Ländercode NO stillschweigend als boolescher Wert false in YAML 1.1 geparst wird — verdeutlichte die Gefahren impliziter Typumwandlung. Ebenso haben Werte wie "on", "off", "yes" und Versionsnummern wie 1.0, die als Booleans oder Fließkommazahlen interpretiert werden, unzählige subtile Fehler verursacht. Die YAML 1.2-Spezifikation adressierte viele dieser Probleme durch strengere Typauflösungsregeln, aber Legacy-Parser, die noch YAML 1.1-Verhalten verwenden, bleiben eine Frustrationsquelle. Trotz dieser Eigenheiten haben YAMLs Lesbarkeit und Ausdruckskraft es zur unbestrittenen Sprache des modernen Konfigurationsmanagements gemacht.
Ihre Ergebnisse verstehen
Nach der Formatierung wird Ihr YAML mit konsistenter Einrückung angezeigt, die die hierarchische Struktur Ihrer Daten klar zeigt. Verschachtelte Mappings und Sequenzen werden jeweils eine Ebene tiefer eingerückt, sodass Eltern-Kind-Beziehungen visuell leicht nachvollziehbar sind. Der Formatierer standardisiert die Einrückung im gesamten Dokument, was entscheidend ist, da YAML auf Whitespace zur Strukturdefinition angewiesen ist.
Ein grünes "Gültiges YAML"-Badge bestätigt, dass Ihr Dokument nach YAML 1.2-Regeln erfolgreich geparst wird. Bei Fehlern erscheint ein rotes "Ungültiges YAML"-Badge mit einer detaillierten Fehlermeldung einschließlich Zeilennummer, Spaltenposition und einem Code-Snippet, das die genaue Fehlerstelle zeigt.
Häufige Fehler sind inkonsistente Einrückung, Verwendung von Tabs statt Leerzeichen, fehlende Doppelpunkte nach Mapping-Schlüsseln, falsche Mehrzeilen-String-Indikatoren und doppelte Schlüssel innerhalb desselben Mappings. Bei der Konvertierung zu JSON werden YAML-Kommentare, Anker und Aliase verworfen. Die JSON-Ausgabe verwendet Standard-Pretty-Printing mit 2-Leerzeichen-Einrückung und ist sofort in JavaScript-Anwendungen oder API-Payloads verwendbar.
Anleitung
Fügen Sie Ihren YAML- oder JSON-Code in den Eingabebereich ein.
Klicken Sie auf Formatieren zum Verschönern, Validieren zur Syntaxprüfung oder verwenden Sie die Konvertierungsschaltflächen.
Kopieren Sie die formatierte Ausgabe oder verwenden Sie die YAML↔JSON-Konvertierung nach Bedarf.
Methodik
Dieses Tool verwendet die js-yaml-Bibliothek, eine vollständige JavaScript-Implementierung, die mit der YAML 1.2-Spezifikation konform ist, für alle Parsing- und Serialisierungsoperationen. Wenn Sie YAML eingeben, parst die safeLoad-Funktion von js-yaml den Text in einen nativen JavaScript-Objektbaum und löst dabei Anker, Aliase und Typumwandlungen auf.
Die safeLoad-Funktion verwendet speziell das DEFAULT_SAFE_SCHEMA, das die Ausführung von beliebigem JavaScript-Code durch YAML-Tags verhindert und somit die sichere Verarbeitung nicht vertrauenswürdiger Eingaben gewährleistet. Das resultierende Objekt wird dann mit safeDump und der konfigurierten Einrückungsebene zurück in YAML serialisiert.
Für die YAML-zu-JSON-Konvertierung wird das geparste JavaScript-Objekt durch JSON.stringify mit Pretty-Printing-Formatierungsoptionen geleitet. Für die JSON-zu-YAML-Konvertierung wird die Eingabe zuerst mit nativem JSON.parse analysiert, dann über js-yaml's safeDump serialisiert. Die Validierung funktioniert durch den Versuch, die Eingabe zu parsen und dabei YAMLException-Fehler abzufangen, die detaillierte Zeilennummer-, Spaltenpositions- und kontextuelle Snippet-Informationen enthalten.
Kommentare bleiben bei der YAML-zu-YAML-Formatierung erhalten, gehen aber bei der JSON-Konvertierung verloren. Ebenso werden Anker und Aliase in der JSON-Ausgabe zu ihren vollständigen Werten aufgelöst.
Praktische Beispiele
Ein DevOps-Ingenieur aktualisiert ein Kubernetes-Deployment-Manifest, um einen Service von 3 auf 5 Replikas zu skalieren. Nach der manuellen Bearbeitung des YAML fügt er es in diesen Formatierer ein, um zu überprüfen, dass die Einrückung korrekt ist und keine Syntaxfehler eingeführt wurden, bevor die Änderung mit kubectl angewendet wird.
Ein Entwickler konvertiert eine bestehende JSON-Konfigurationsdatei in YAML für ein neues Ansible-Playbook. Er fügt das JSON in den Eingabebereich ein, klickt auf "JSON zu YAML" und erhält sauber formatierte YAML-Ausgabe, die als Playbook-Datei gespeichert werden kann.
Ein Teamleiter überprüft eine Docker-Compose-Datei eines Junior-Entwicklers. Er formatiert das YAML, um die Einrückung auf 2 Leerzeichen zu standardisieren und die Datei konsistent mit den übrigen Konfigurationsdateien des Projekts zu machen.
Tipps & Bewährte Methoden
Verwenden Sie immer Leerzeichen für die Einrückung, niemals Tabs. Die meisten YAML-Parser lehnen Tabs vollständig ab, und das Mischen von Tabs und Leerzeichen verursacht subtile, schwer zu debuggende Fehler. Halten Sie sich an 2 Leerzeichen pro Ebene für Konsistenz mit Community-Konventionen.
Setzen Sie Strings in Anführungszeichen, die als andere Typen fehlinterpretiert werden könnten: Werte wie "yes", "no", "true", "false", "null", "1.0" und "on" werden in YAML automatisch zu Booleans oder Zahlen umgewandelt. Umschließen Sie sie mit einfachen oder doppelten Anführungszeichen, um sie als Strings zu erhalten.
Verwenden Sie Anker (&name) und Aliase (*name), um die Duplizierung großer Konfigurationsblöcke zu vermeiden. Dies ist besonders nützlich in CI/CD-Pipelines, wo mehrere Jobs gemeinsame Einstellungen teilen. Validieren Sie Ihr YAML immer nach dem Bearbeiten, da ein einziges falsch platziertes Leerzeichen die gesamte Dokumentstruktur ändern kann.
YAML verwendet Einrückung für die Struktur und ist menschenlesbarer, oft für Konfigurationsdateien verwendet. JSON verwendet geschweifte Klammern und eckige Klammern, ist kompakter und wird häufig für Datenaustausch und APIs verwendet.
Welche YAML-Funktionen werden unterstützt?
Dieses Tool unterstützt Standard-YAML-1.2-Funktionen einschließlich: Schlüssel-Wert-Paare, verschachtelte Objekte, Arrays, mehrzeilige Zeichenfolgen, Kommentare, Anker und Aliase sowie alle grundlegenden Datentypen.
Warum ist Einrückung in YAML wichtig?
YAML verwendet Einrückung (Leerzeichen, nicht Tabs!) zur Definition von Struktur und Hierarchie. Im Gegensatz zu JSON, das geschweifte Klammern verwendet, verlässt sich YAML vollständig auf konsistente Einrückung. Typischerweise werden 2 Leerzeichen pro Ebene verwendet.
Wie behandelt YAML mehrzeilige Zeichenketten?
YAML bietet mehrere mehrzeilige Zeichenketten-Stile. Der Literal-Block-Stil (|) behält Zeilenumbrüche exakt bei — jeder Zeilenumbruch in der Quelle wird zu einem Zeilenumbruch im geparsten Wert. Der Falz-Block-Stil (>) verbindet Zeilen mit Leerzeichen, wobei einzelne Zeilenumbrüche als Leerzeichen und doppelte Zeilenumbrüche als Absatzumbrüche behandelt werden. Beide Stile können mit Chomping-Indikatoren modifiziert werden: Strip (-) entfernt nachfolgende Zeilenumbrüche, Keep (+) behält sie bei und Clip (Standard) behält einen nachfolgenden Zeilenumbruch. Zum Beispiel erzeugt 'description: |\n Zeile eins\n Zeile zwei' eine Zeichenkette mit einem tatsächlichen Zeilenumbruch zwischen den Zeilen.
Warum gibt es bei YAML Sicherheitsbedenken?
Das bekannteste Sicherheitsproblem von YAML ist unsichere Deserialisierung. Einige YAML-Parser (insbesondere ältere Versionen von PyYAML und Rubys YAML-Bibliothek) unterstützen sprachspezifische Tags, die bei der Analyse beliebige Objekte instanziieren können, was potenziell Remote-Code-Ausführung ermöglicht. Zum Beispiel kann der Tag !!python/object in PyYAML beliebigen Python-Code ausführen. Moderne Best Practices: Verwenden Sie immer sichere Ladefunktionen (yaml.safe_load in Python, YAML.parse in JS), parsen Sie niemals nicht vertrauenswürdiges YAML mit aktivierter vollständiger Objektinstanziierung und bevorzugen Sie JSON für den Datenaustausch mit nicht vertrauenswürdigen Quellen. Der browserbasierte Parser dieses Tools führt keinen beliebigen Code aus.
Kann ich mit diesem Tool zwischen YAML und JSON konvertieren?
Dieses Tool konzentriert sich auf das Formatieren und Validieren von YAML, nicht auf die Konvertierung zwischen Formaten. YAML ist jedoch ein Superset von JSON — jedes gültige JSON-Dokument ist auch gültiges YAML. Das bedeutet, Sie können JSON in den YAML-Formatierer einfügen und es wird korrekt geparst. Für dedizierte JSON-zu-YAML- und YAML-zu-JSON-Konvertierung mit voller Kontrolle über Ausgabeoptionen bietet InnoviCat separate Konverter-Tools an. Der Hauptunterschied zwischen den Formaten bei der Konvertierung: YAML unterstützt Kommentare, Anker und mehrzeilige Zeichenketten, die kein JSON-Äquivalent haben, sodass bei der YAML-zu-JSON-Konvertierung diese Funktionen verloren gehen können.
Meine Favoriten
Ziehen zum Neuordnen
Noch keine Favoriten
Tippen Sie auf ☆ bei einem Tool, um es als Favorit zu speichern.