YAML Formatter & Validator

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand YAML Formatter & Validator

这个格式化工具用统一的缩进重新打印 YAML,并报告它读不懂的结构。

How it works

YAML 用缩进而不是括号表达嵌套,因此解析器会跟踪每一行以多少个空格开头,并据此构建映射。随后值按其文本确定类型:true 和 false 是布尔值,null 和 ~ 是 null,裸的数字是数字,其余一切在不加引号时都是字符串。输出由解析后的值重新序列化而来,这就是它回来时格式统一的原因——也是原文中任何注释都会消失的原因。

When to use it

  • 在推送之前检查 GitHub Actions 工作流或 Kubernetes 清单。
  • 找出粘贴进来的代码块落在了错误缩进层级的那一行。
  • 把多人编辑过的配置文件的缩进统一起来。
  • 确认你本想当作字符串的值没有被读成数字或布尔值。

Watch out for

  • 在 YAML 中,制表符做缩进永远不合法。编辑器插入的一个制表符在任何符合规范的解析器里都是语法错误,而且它是不可见的——这是清单文件失败最常见的原因。
  • 在 YAML 1.1 中——它仍是 PyYAML 和大量老旧工具链的默认设置——不带引号的 yes、no、on、off 是布尔值,因此值为 NO 的国家字段会变成 false。这就是所谓的 Norway 问题。本工具遵循 YAML 1.2,把它们当作字符串,所以无论如何都加上引号,两者就一致了。
  • 注释不会被保留。重新格式化返回的是数据,不是文件,因此不要把结果粘回那些你还需要注释的配置文件。
  • 本工具处理的是大多数配置文件具备的形态:顶层键、嵌套映射和简单列表。锚点与别名(&defaults、*defaults)、块标量(| 和 >)以及用 --- 分隔的多文档文件不会被复现。

Not the right tool for: 用模式校验一份清单文件。语法可以毫无问题,而每个字段都是错的;那要交给 kubeconform、actionlint 或平台自带的校验器。

Frequently Asked Questions

我的 YAML 为什么不合法?

常见的 YAML 错误:用制表符而不是空格做缩进(YAML 要求空格)、缩进层级不一致、特殊字符(: { } [ ] , # & * ? | - < > = ! % @ `)没加引号,以及 yes、no 这类特殊值被意外当成布尔值。

如何在 YAML 的值里包含冒号?

冒号后跟空格在 YAML 中会开启一对 key: value。要在值里包含字面冒号,请给整个字符串加引号:message: "Error: connection failed",多行值也可以使用块标量(|)。

这个工具使用哪个 YAML 版本?

本格式化工具使用 YAML 1.2,它比 YAML 1.1 更严格。与 1.1 不同,YAML 1.2 只把 true/false 当作布尔值(不含 yes/no/on/off),因而与 JSON 完全兼容。

How to Use YAML Formatter & Validator

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.