Skip to content

YAML lint

YAML Validator

Finde heraus, was an deinem YAML falsch ist — und wo.

YAML

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

JSON

JSON erscheint hier während der Eingabe

Kostenlos und unbegrenzt · Keine Anmeldung · Jeder Fehler kommt mit exakter Zeile und Spalte, einer verständlichen Erklärung und einem Lösungsvorschlag.

Was geprüft wird

Syntax

Einrückung, Tabulatoren, nicht geschlossene Klammern und Anführungszeichen sowie fehlerhafte Mappings und Sequenzen.

Struktur

Doppelte Schlüssel, die YAML ablehnt und die in JSON stillschweigend zusammenfallen würden.

Referenzen

Aliases, die auf nicht existierende Anchors zeigen, und Anchors ohne Namen.

Sicherheit

Explodierende Alias-Auflösung — die „Billion Laughs“-Form —, bevor sie die Seite einfrieren kann.

Portabilität

Werte, die zwischen YAML 1.1 und YAML 1.2 ihre Bedeutung ändern, markiert mit dem Ergebnis jeder Version.

Tags

Eigene Tags wie !Ref oder !GetAtt, die außerhalb ihres Werkzeugs keine Standardbedeutung haben.

Gültiges YAML ist nicht immer korrektes YAML

Ein Dokument kann perfekt parsen und trotzdem etwas anderes bedeuten, als du wolltest. Der Klassiker ist country: no — gültig in beiden YAML-Versionen, aber in der einen der String "no" und in der anderen der Boolean false.

Deshalb meldet dieser Validator zwei verschiedene Dinge. Fehler bedeuten, dass das Dokument gar nicht geparst werden kann. Warnungen bedeuten, dass es parst, ein Wert aber von einem anderen Werkzeug anders gelesen würde — gut zu wissen, bevor ein Kubernetes-Manifest einen Cluster erreicht.

Wenn du den Fehler verstehen willst, bevor du ihn behebst, geht der Leitfaden Häufige YAML-Fehler und ihre Lösungen die sechs Fehler durch, die hinter fast jedem gescheiterten Parse stehen — Tabulatoren, unzitierte Doppelpunkte, nicht geschlossene Klammern, doppelte Schlüssel, fehlende Anchors und ungleiche Einrückung — jeweils mit Vorher-Nachher-Beispiel.

Häufige Fragen

Was prüft dieser YAML-Validator?

Zuerst die Syntax: Einrückung, Tabulatoren, nicht geschlossene Klammern und Anführungszeichen sowie fehlerhafte Mappings und Sequenzen. Dann die Struktur: doppelte Schlüssel, Aliases auf nie deklarierte Anchors und außer Kontrolle geratene Alias-Auflösung. Zuletzt die Portabilität: eigene Tags wie !Ref, die außerhalb ihres Werkzeugs nichts bedeuten, und jeder unzitierte Wert, den YAML 1.1 und YAML 1.2 unterschiedlich lesen. Jedes Problem kommt mit Zeile und Spalte, einer verständlichen Erklärung, einem Lösungsvorschlag und einer Markierung im Editor.

Warum ist mein YAML gültig, verhält sich aber falsch?

Weil gültig nicht dasselbe ist wie korrekt. country: no parst in beiden YAML-Versionen fehlerfrei, ist aber in YAML 1.2 der String "no" und in YAML 1.1 der Boolean false — so verschwindet ein Land ohne jede Fehlermeldung aus einer Liste. Dasselbe gilt für 022, 12:30 und 1e3. Dieser Validator meldet solche Werte als Warnungen statt als Fehler: Das Dokument parst, aber ein anderes Werkzeug würde einen Wert anders lesen. Setze den Wert in Anführungszeichen, um ihn eindeutig zu machen.

Was bedeutet „mapping values are not allowed in this context“?

Der Parser hat einen Doppelpunkt mit folgendem Leerzeichen an einer Stelle gefunden, an der er bereits einen Wert las. Die übliche Ursache ist ein unzitierter Wert, der selbst einen Doppelpunkt enthält, etwa title: Deploy: production oder eine URL ohne Anführungszeichen. Setze den Wert in Anführungszeichen. Die andere Ursache ist ein Schlüssel, der anders eingerückt ist als die Schlüssel um ihn herum, sodass der Parser ihn als Teil des vorherigen Werts liest.

Was bedeutet „found character that cannot start any token“?

Fast immer ein Tabulator, der zum Einrücken verwendet wurde — YAML verbietet das. Editoren, die Tabulatoren in Leerzeichen umwandeln, verbergen das Problem, bis die Datei woanders bearbeitet wird. Ersetze den Tabulator durch Leerzeichen und halte alle Geschwisterschlüssel auf derselben Breite; der Validator zeigt auf die genaue Zeile. Dieselbe Meldung erscheint bei einem verirrten Steuerzeichen oder einem @ oder Backtick am Anfang eines Werts.

Was bedeutet „did not find expected key“?

Der Parser las ein Mapping und erwartete in der nächsten Zeile einen weiteren Schlüssel mit derselben Einrückung, fand aber etwas anderes. Sieh dir die Zeile vor der gemeldeten an: ein Wert mit einem Leerzeichen mehr Einrückung als seine Geschwister, ein Bindestrich, der eine Liste beginnt, wo ein Schlüssel erwartet wurde, oder ein Wert, der in Anführungszeichen gehört hätte. Bei nicht geschlossenen Klammern und Anführungszeichen, die die meisten Parser fälschlich unter dieser Meldung ausgeben, findet der Validator die tatsächliche Ursache.

Validiert er gegen ein Schema, etwa Kubernetes oder OpenAPI?

Nein. Er prüft, ob das Dokument wohlgeformtes YAML ist und für jeden Parser dasselbe bedeutet; welche Schlüssel ein Deployment oder ein OpenAPI-Dokument enthalten darf, weiß er nicht. Für Kubernetes prüft kubectl apply --dry-run=client -f datei.yaml ein Manifest gegen das Schema des Clusters. Für OpenAPI, GitHub Actions oder JSON Schema schickst du die Datei durch den Schema-Validator des jeweiligen Formats, sobald sie hier durchgeht.

Wird mein YAML beim Validieren hochgeladen?

Nein. Die Validierung läuft in deinem Browser; es gibt keinen Server-Endpunkt, an den das Dokument geschickt werden könnte, und die Seite funktioniert auch nach dem Trennen der Verbindung weiter. Konfigurationsdateien enthalten genau die Art von Dingen — Hostnamen, interne Pfade und gelegentlich ein Geheimnis —, wegen der das Werkzeug so gebaut wurde.

Wie validiere ich YAML auf der Kommandozeile?

yamllint datei.yaml meldet Syntaxfehler und Stilprobleme und ist die übliche Wahl in CI. yq . datei.yaml gibt das Dokument aus oder scheitert mit einem Parse-Fehler. In Python scheitert python -c "import sys, yaml; yaml.safe_load(sys.stdin)" < datei.yaml bei ungültigem YAML — PyYAML liest allerdings YAML 1.1 und behandelt daher auch no als false. Keines davon erklärt den Fehler so wie der Validator oben: Nutze sie, um eine Pipeline scheitern zu lassen, und diese Seite, um herauszufinden, warum.