YAML 格式化工具

使用语法高亮和错误检测来格式化、验证和转换 YAML 文档

本地运行

YAML 输入

格式化输出

检查器

粘贴有效的 YAML —— 结构统计、树形视图与键路径会自动出现在这里

高级选项

与另一个 YAML 对比

将此文档发送到 Data Diff,粘贴第二个版本即可看到变化。

带精确错误位置的验证

每次按键都使用 js-yaml(YAML 1.2)解析器验证。有效文档实时显示文档数、映射、序列、键数和深度统计;出错时报告确切的行号、列号、可能原因,并在编辑器中高亮出错位置 —— 而不只是一句“语法错误”。

本工具精确定位的常见 YAML 错误

以下四类错误占了绝大多数无效 YAML。每一类都会给出出错位置和可能原因:

缩进错误

子行比父行缩进更少,或同级行没有对齐。通常在出错行报“映射条目缩进错误”。

TAB 制表符

YAML 禁止用制表符缩进。解析器报“发现违反缩进规则的制表符”并高亮该行。

键重复

同一映射中出现两次相同的键。js-yaml 报“映射键重复”并指向第二次出现的位置。

缺少冒号或空格

键没有值("key key2"),或冒号紧贴键名("key:value" 是一个普通字符串而不是键值对)。报“找不到预期的 ':'”。

之前 / 之后

左侧是压缩的 Kubernetes 清单,右侧是用 2 空格缩进格式化的同一份文档。结构统计、树形视图和键路径都基于解析后的文档更新。

Before (flow style)
{apiVersion: apps/v1, kind: Deployment, metadata: {name: web-app}, spec: {replicas: 3, template: {metadata: {labels: {app: web}}}}}
After (block style)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: web

YAML 速查(YAML 1.2)

  • 缩进即结构:只用空格 —— 缩进中绝不允许出现 TAB 制表符。
  • 冒号后必须跟空格才算键值分隔符:"key: value",而不是 "key:value"。
  • 标量按核心 schema 解析类型:true/false(布尔)、整数、浮点、null(~ / null / 空)。注意 "yes"/"no" 在 1.2 中是普通字符串。
  • 一个文件中的多个文档用 "---" 行分隔;"..." 结束一个文档。
  • 锚点(&base)和别名(*base)让文件保持 DRY;合并键("<<: *base")继承映射。

这份数据的下一步

格式化只是第一步。无需离开浏览器即可继续工作流:

常见问题解答

关于 Yaml Formatter 格式化的常见问题解答

格式化工具遵循 YAML 1.2 规范,确保与 Kubernetes、Docker Compose、GitHub Actions 和其他云原生平台的兼容性。

可以,双向转换功能支持将 YAML 转换为 JSON 和将 JSON 转换为 YAML,同时保留数据类型、嵌套结构和适用的注释。

完全可以。格式化工具专为处理 Kubernetes 清单、Docker Compose 文件、CI/CD 管道和其他多文档 YAML 文件而设计,支持正确的段落分隔。

验证器会检查缩进一致性、冒号和破折号的正确使用、引号字符串的平衡、锚点和别名引用,并提供精确到行的错误信息以便快速调试。

支持,格式化工具能正确处理 YAML 锚点(&)、别名(*)和合并键(<<),在格式化周围结构时保留这些 DRY 特性。

YAML 1.2,即 yaml.org 当前的规范——也是 Kubernetes、docker-compose 和 GitHub Actions 文档所采用的版本。YAML 1.2 使 JSON 成为有效的子集,并收紧了布尔值解析规则;当 1.1 解析器(在 Python PyYAML 中仍很常见)会误读 "no" 或 "0777" 这类值时,格式化工具会保持引号显式。

YAML 锚点(anchors)、别名(aliases)和块标量(block scalars)中的注释会原样保留,但附着在被重新缩进的键上的注释会随其缩进级别一起移动。格式化工具绝不会删除注释——只会以最小的位移移动它们,使其保持附着在所描述的节点上。

会标记并处理它:格式化时会自动为裸写的 NO、no、ON、on、yes、n 加上引号,使 YAML 1.1 解析器无法将它们强制转换为布尔值。国家代码列表 [NO, SE, DK] 仍保持为三个字符串。YAML 1.2 仅将 true/false 视为布尔值,但加引号是唯一在两个版本下都安全的输出方式。

{-- * External Resources Component(#19 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / 官方语言文档 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}

相关工具