ToolActToolAct

Outil de Formatage YAML

YAML en entrée
Résultat
Lignes: 1Caractères: 0Octets: 0
Lignes: 1Caractères: 0

Qu'est-ce que YAML ?

Le formateur YAML rend les fichiers YAML plus lisibles grâce à indentation, retours à la ligne et structure visibles. YAML est fréquent dans les configurations CI, manifestes Kubernetes, Docker Compose, générateurs de sites statiques, localisation, fichiers OpenAPI et paramètres d’applications. Contrairement à JSON, YAML dépend fortement de l’indentation, des marqueurs de liste, deux-points, guillemets, ancres et chaînes multilignes; une petite erreur peut créer une structure différente. L’outil aide à lire, nettoyer et repérer des problèmes de syntaxe évidents, mais ne remplace pas la validation de schéma ni les contrôles propres aux outils. Pour Kubernetes, GitHub Actions, Ansible ou production, testez dans le système cible.

Comment utiliser

Comment utiliser

  1. Collez ou saisissez des données YAML dans la zone de saisie de gauche
  2. Sélectionnez la taille d'indentation adaptée à votre projet
  3. Cliquez sur « Format » pour embellir, « Minify » pour réduire la taille ou « Validate » pour vérifier la syntaxe
  4. Affichez les résultats à droite
  5. Cliquez sur « Copy » pour copier dans le presse-papiers

Description des options

Taille d'indentationOptez pour une indentation de 2 ou 4 espaces

Raccourcis clavier

  • Ctrl + EnterFormat
  • Ctrl + Shift + CCopier le résultat

Conseils YAML

  • YAML est sensible à l'indentation. Vérifiez les listes et mappings imbriqués après le formatage avant d'utiliser le résultat dans des fichiers CI, Kubernetes ou de déploiement.
  • Validez par rapport au schéma de l'outil cible lorsque c'est possible. Un YAML syntaxiquement valide peut quand même être invalide pour GitHub Actions, Docker Compose ou OpenAPI.

Cas d’utilisation

Normaliser une configuration YAML simple avant de la commiterCollez du YAML d’application, de serveur, de base de données, de feature flags, de logging ou de rôles utilisateur et formatez-le avec une indentation de 2 ou 4 espaces. L’outil est conçu pour les structures courantes de paires clé-valeur, objets imbriqués, tableaux, booléens, nombres, null et chaînes entre guillemets.
Détecter rapidement les erreurs d’espacement YAML courantesLe validateur intégré signale les lignes sans séparateur deux-points, les valeurs manquant l’espace obligatoire après un deux-points et les tabulations utilisées là où des espaces sont requises. Cela attrape de nombreuses erreurs de copier-coller et d’édition manuelle avant que le fichier n’atteigne un parseur CI, un script de déploiement ou une page de documentation. Le parsing et la validation se font entièrement dans le navigateur, un manifeste contenant des noms de services internes, des tags d’images non publiées ou des identifiants de staging peut donc être nettoyé sans envoyer le fichier à un validateur distant.
Créer un exemple YAML propre téléchargeable à partir d’un brouillon désordonnéAprès le parsing, le formateur réécrit l’arbre d’objets en YAML cohérent et vous permet de copier ou télécharger formatted.yaml. Il utilise un parseur léger plutôt qu’un moteur YAML complet, les ancres, alias, scalaires multilignes complexes, tags et comportements de schéma avancés doivent donc être vérifiés avec le runtime qui consommera le fichier.
Convertir du YAML en JSON pour un pipeline en avalUtilisez le basculeur pour passer la sortie en JSON tout en conservant les mêmes choix d’indentation, afin que les scripts CI, les filtres jq ou les vérifications de politique puissent consommer le fichier sans un second parseur. Les tableaux de types mixtes et les chaînes entre guillemets restent intacts, mais les ancres et alias YAML sont toujours aplanis par le parseur léger.
Pré-vérifier un manifeste Kubernetes ou Docker ComposeDéposez un deployment.yaml ou docker-compose.yml, corrigez les erreurs d’espacement signalées par le validateur et confirmez que les blocs apiVersion, kind et spec sont alignés. La page constitue une étape rapide de lecture et de nettoyage, mais le manifeste final nécessite toujours kubectl apply --dry-run=client ou docker compose config pour détecter les problèmes de schéma.

Principe technique

Le formatage YAML s'appuie sur la spécification YAML 1.2.2 (révisée en octobre 2021), qui définit formellement JSON comme un sous-ensemble strict de YAML — tout document JSON valide est analysable en tant que YAML. L'analyse se déroule en trois couches : une couche de présentation scanne les points de code Unicode et résout les séquences d'échappement ; une couche de sérialisation construit un graphe de nœuds de type scalaires, séquences et mappings ; une couche native applique le schéma Core de YAML pour convertir les scalaires dans les types résolus `!!str`, `!!int`, `!!float`, `!!bool`, `!!null`, `!!seq`, `!!map`. Les bibliothèques d'exécution courantes incluent js-yaml et le plus récent paquet `yaml` sur Node, PyYAML et ruamel.yaml sur Python, et SnakeYAML sur la JVM. Les formateurs côté navigateur analysent généralement en objet JS via `load`/`dump` de js-yaml et effectuent un aller-retour. L'indentation est la primitive fondamentale : seul l'espace ASCII (U+0020) est autorisé — la spécification interdit explicitement les caractères de tabulation (U+0009) pour l'indentation dans la section §6.1, ce pourquoi le copier-coller depuis un éditeur qui convertit automatiquement est la cause la plus fréquente d'échec d'analyse. Le style bloc détermine l'imbrication uniquement par la position en colonne, les nœuds enfants doivent donc être indentés davantage que leur parent d'au moins une espace (deux par convention). Le style flux emprunte la syntaxe JSON — `[1, 2, 3]` et `{a: 1, b: 2}` — et peut être imbriqué dans le style bloc pour les expressions sur une seule ligne. Les scalaires bloc utilisent le pliage piloté par des indicateurs : `|` (littéral) préserve les retours à la ligne exactement, `>` (plié) replie les retours à la ligne simples en espaces et conserve les lignes vides comme séparateurs de paragraphe, et les indicateurs de rognage `-` (supprimer les retours finaux) et `+` (conserver tous les retours finaux) se placent après l'indicateur (`|-`, `>+`). Les règles de citation diffèrent : les scalaires entre guillemets simples traitent `\` littéralement et utilisent `''` pour intégrer un guillemet ; les scalaires entre guillemets doubles respectent les séquences d'échappement de style C (`\n`, `\t`, `\uXXXX`). Les formateurs normalisent généralement vers un seul style de bloc et réémettent les ancres et alias. Une ancre `&name` marque un nœud ; un alias `*name` le référence ; la clé de fusion `<<: *name` (vestige de YAML 1.1 encore pris en charge par la plupart des analyseurs) importe les clés d'un autre mapping dans le mapping courant. Les flux multi-documents sont séparés par des marqueurs de début `---` et des marqueurs de fin `...` optionnels, le modèle utilisé par Kubernetes pour fournir plusieurs ressources dans un seul manifeste. Deux pièges bien connus méritent une ré-émission prudente : le problème de la Norvège — le scalaire non cité `no` est interprété comme `false` sous le schéma YAML 1.1 (et le code pays devient un booléen) — et CVE-2017-18342, où le `yaml.load` de PyYAML désérialisait des objets Python arbitraires, corrigé en passant à `safe_load`. Ce sont autant de raisons pour lesquelles un formateur doit traiter la résolution des scalaires avec prudence et ne jamais exécuter de constructeurs étiquetés. L'analyse est en O(n) par rapport à la longueur d'entrée ; les commentaires sont ignorés par la plupart des bibliothèques basées sur AST car ils ne font pas partie du modèle d'information YAML.

  • Spécification : YAML 1.2.2 (oct. 2021). JSON est un sous-ensemble strict de YAML 1.2, tout document JSON valide s'analyse donc en YAML ; bibliothèques courantes : js-yaml, le paquet `yaml`, PyYAML, ruamel.yaml, SnakeYAML.
  • L'indentation doit être un espace ASCII (U+0020) ; les caractères de tabulation (U+0009) sont interdits pour l'indentation par §6.1 — la cause la plus fréquente des erreurs `mapping values are not allowed here`.
  • Style bloc vs flux : le bloc utilise l'imbrication par position en colonne (2 ou 4 espaces par convention) ; le flux utilise les syntaxes de type JSON `[1, 2, 3]` et `{a: 1}`. Les deux peuvent s'imbriquer.
  • Scalars bloc : `|` littéral préserve les retours à la ligne, `>` plié replie les retours simples en espaces ; les indicateurs de rognage `-` (supprimer) et `+` (conserver) se placent après l'indicateur, ex. `|-`, `>+`.
  • Les ancres `&name` marquent les nœuds, les alias `*name` les référencent, et la clé de fusion `<<: *name` importe les clés d'un autre mapping (vestige de YAML 1.1, pris en charge par la plupart des analyseurs).
  • Les flux multi-documents sont séparés par des marqueurs `---` (début) et `...` (fin) optionnels — le modèle utilisé par Kubernetes pour fournir plusieurs ressources dans un seul manifeste.
  • Pièges : le problème de la Norvège (`no`/`yes`/`on`/`off` non cités analysés comme des booléens sous le schéma YAML 1.1 ; le schéma Core YAML 1.2 corrige la plupart de ces cas) et CVE-2017-18342 (exécution de code arbitraire via `yaml.load` de PyYAML ; utiliser `safe_load`).

Exemples

Corriger une indentation incohérente dans un fichier de configuration

Entrée (cassée) :
server:
   port: 8080
     host: localhost
  debug: true

Formaté (2 espaces) :
server:
  port: 8080
  host: localhost
  debug: true

Liste imbriquée de services dans 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

Manifeste de Deployment Kubernetes

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

Convertir YAML en JSON pour un pipeline jq

Entrée YAML :
user:
  id: 42
  name: alice
  roles:
    - admin
    - editor

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

Détecter un espace manquant après les deux-points

Entrée :
name:alice
age: 30

Erreur ligne 1 : espace manquant après les deux-points
Corrigé :
name: alice
age: 30

FAQ

Que couvre la mise en forme YAML ?

Normalisation de l'indentation (généralement 2 espaces), style de guillemets cohérent, alignement des marqueurs de liste et reformatage des longues collections en ligne en style bloc. La plupart des YAML rencontrés sont édités à la main et accumulent un style incohérent ; le formateur l'uniformise.

Convertit-il le style flow en style bloc ?

De nombreuses versions vous laissent choisir entre le style flow (de type JSON {key: value, key2: value2}) et le style bloc (multi-ligne indenté). Le bloc est plus lisible pour l'édition humaine ; le flow est plus compact. L'aller-retour entre les deux préserve les données mais change l'apparence.

Pourquoi mes guillemets sont-ils modifiés ?

YAML autorise des chaînes sans guillemets, à guillemets simples et à guillemets doubles avec des différences subtiles. yes/no, true/false, on/off sont interprétés comme des booléens à moins d'être entre guillemets ; les nombres sans guillemets sont des nombres, avec guillemets ce sont des chaînes. Le formateur peut ajouter des guillemets pour lever l'ambiguïté de valeurs qui seraient mal interprétées sinon.

Préserve-t-il les commentaires ?

La plupart des versions préservent les commentaires YAML (#) mais leur position par rapport aux nœuds de l'AST peut légèrement bouger. Les commentaires au-dessus des clés restent généralement au-dessus ; les commentaires de fin de ligne restent attachés. Rechargez après mise en forme et vérifiez que le placement des commentaires a toujours du sens.

Le YAML est-il téléversé ?

Non. L'analyse et la mise en forme s'exécutent dans votre navigateur via js-yaml ou similaire. Le YAML collé n'est pas transmis.

Pourquoi mon aller-retour YAML modifie-t-il les ancres et les alias ?

La syntaxe & (ancre) et * (alias) de YAML permet de référencer une valeur une fois et de la réutiliser. Certains formateurs développent les alias en ligne par défaut, perdant la déduplication. Cherchez une option pour préserver les ancres si votre outillage en dépend.

Et si mon YAML utilise des tabulations pour l'indentation ?

YAML interdit les tabulations pour l'indentation : il faut des espaces. Selon la configuration, le formateur convertit généralement les tabulations en espaces ou refuse l'analyse. Remplacez les tabulations par des espaces avant de coller si vous obtenez une erreur d'analyse.