YAML Formatter
新Validate, beautify, and convert YAML online. Real-time syntax highlighting, error detection with line numbers, and one-click JSON export.
Input
Formatted output
← paste YAML to see formatted output Runs entirely in your browser. Nothing is uploaded.
在浏览器中即时格式化和验证 YAML
YAML 格式化工具在您输入或粘贴时实时验证和美化您的 YAML — 无需按任何按钮。它规范化缩进,用行号和说明高亮显示语法错误,并提供一键 JSON 转换。编辑器使用自定义 CSS 属性实现完整的语法高亮,可自动适应系统的深色或浅色模式偏好。一切都在客户端使用 JavaScript YAML 解析器运行 — 您的配置文件永远不会离开您的设备。
YAML(YAML Ain't Markup Language)几乎用于所有现代软件项目:GitHub Actions 工作流、Kubernetes 清单文件、Docker Compose 文件、Ansible Playbook、Helm Chart、CI/CD 配置以及应用程序配置文件。它被设计为人类可读的,但其对缩进的敏感性和特殊字符的规则使得编写无效 YAML 变得出奇地容易,而这些错误只在运行时才会暴露——此时已为时过晚。实时格式化工具能在几秒钟内发现这些错误。
常见 YAML 错误及验证器如何捕获它们
最常见的 YAML 错误是使用制表符而非空格。YAML 禁止在缩进中使用制表符——它们在大多数文本编辑器中看起来与空格相同,但会导致即时解析失败。验证器会捕获此问题,并精确告诉您哪一行包含制表符。第二个最常见的错误是值中的冒号未加引号:`title: Hello: World` 是有歧义的——解析器会看到一个嵌套键。将值用引号括起来:`title: "Hello: World"`。第三个是缩进不一致:如果一个块在某处缩进 2 个空格,在另一处缩进 3 个空格,解析器可能会误读嵌套层级。
其他常见错误:同一映射中的重复键(在 YAML 1.1 中技术上是允许的,但在 1.2 中是非法的,且被大多数解析器拒绝);冒号后缺少空格(`键:值` 无效,需要 `键: 值`);锚点和别名使用不当;以及隐式类型转换的意外(在 YAML 1.1 解析器中,字符串 `yes` 会变成布尔值 `true`)。验证器用清晰的语言报告每一个问题,而不仅仅是原始的解析器错误信息。
YAML 转 JSON — 何时使用及原因
JSON 和 YAML 在语义上是等价的数据格式(有一些例外情况)。YAML 是 JSON 的超集——有效的 JSON 也是有效的 YAML。在以下情况下将 YAML 转换为 JSON 很有用:与只接受 JSON 的工具或 API 配合使用时,或者当您想使用 `jq` 查询 YAML 配置文件时(jq 在 JSON 上操作)。"复制为 JSON" 按钮会解析您的 YAML,并将其序列化为带 2 空格缩进的格式化 JSON。
一个重要注意事项:YAML 注释(以 `#` 开头的行)不会保留在 JSON 输出中,因为 JSON 没有注释语法。YAML 锚点和别名会被解析——JSON 显示最终的解引用值。多文档 YAML(用 `---` 分隔的多个文档)会转换为包含每个文档作为元素的 JSON 数组。如果您需要反向操作(JSON 转 YAML),将 JSON 粘贴到此格式化工具中——由于 JSON 是有效的 YAML,它会被干净地解析和重新格式化。
YAML 格式化工具 vs yamllint、YAML Lint 和 YAML Checker
yamllint 是 YAML 检查的黄金标准 CLI 工具——彻底、可配置,在 CI 流水线中广泛使用。但它需要 Python、pip 和终端,这使得在团队成员机器上快速检查或在浏览器环境中使用变得不可行。YAML Lint (yamllint.com) 是最受欢迎的在线替代方案,但只显示错误——没有格式化、没有语法高亮、没有 JSON 转换。YAML Checker (yamlchecker.com) 可以格式化和验证,但只有一个没有高亮功能的普通文本区域,也没有 JSON 输出。Transform.tools 提供 YAML 转 JSON,但没有实时验证。
此格式化工具将所有这些功能集于一处:带错误说明的实时验证、带语法高亮的格式化输出、一键 JSON 转换以及多文档支持——完全在您的浏览器中运行,无需后端服务器。对于不希望安装工具或注册服务的开发者来说,这是从"这个 YAML 有效吗?"到"这是格式化后、无错误的版本"最快捷的路径。
实际应用 — Kubernetes、GitHub Actions、Docker Compose
对于 Kubernetes 用户:在使用 `kubectl apply` 应用之前粘贴您的清单文件,以便尽早发现语法错误。Pod 规格或 Service 定义中的单个缩进错误会导致 `kubectl` 以神秘的错误信息失败;在这里先发现它可以节省时间。对于 GitHub Actions 用户:在提交之前粘贴您的 `.github/workflows/*.yml` 文件进行验证。格式错误的工作流会静默失败(Action 根本不运行),而在 GitHub 界面中调试它们非常缓慢。对于 Docker Compose 用户:在运行 `docker compose up` 之前验证您的 `docker-compose.yml` 文件——对于嵌套 service 定义错误可能难以发现的多服务文件尤为重要。
对于 Ansible 用户:粘贴 Playbook、清单文件或变量文件,以便在运行 `ansible-playbook` 之前验证 YAML 结构。对于 Helm Chart 作者:验证您的 `values.yaml` 或 Chart 模板。对于任何用 YAML 编写 CI/CD 配置的人(GitLab CI、CircleCI、Bitbucket Pipelines、Travis CI):粘贴配置并在推送前进行验证。在所有这些情况下,无效 YAML 文件的代价是构建或部署失败——在这里先发现它总是更快的。
Frequently asked questions
如何在线格式化 YAML?
将您的 YAML 粘贴到左侧编辑器中,它会在右侧实时自动格式化和验证。格式化工具将缩进规范为 2 个空格,删除尾部空白,并以语法高亮显示您的 YAML。如果有语法错误,它们会被内联高亮,并说明出错原因以及问题所在行号。无需按任何按钮——格式化在您输入或粘贴时自动进行。
如何验证 YAML 语法错误?
粘贴您的 YAML,验证器会立即使用客户端 YAML 解析器进行解析。如果 YAML 无效,您将看到一个红色错误横幅,显示具体的错误信息和行号——与 CI/CD 流水线(如 GitHub Actions 或 Kubernetes)抛出的错误类型相同。常见 YAML 错误包括缩进错误(使用制表符而非空格——YAML 要求使用空格)、键后缺少冒号、重复键,或值中未加引号的特殊字符(如冒号)。
我可以将 YAML 转换为 JSON 吗?
可以——有一个"复制为 JSON"按钮,它会解析您的 YAML 并输出等效的 JSON,格式化后即可使用。当您有一个 YAML 配置文件(如 GitHub Actions 工作流或 Kubernetes 清单)并需要以 JSON 格式为 API、脚本或只接受 JSON 的工具提供相同数据时,这非常有用。对于标准 YAML,转换是无损的——注释不会保留在 JSON 中,因为 JSON 没有注释语法。
YAML 为什么需要格式化工具?
YAML 对缩进很敏感:一个额外的空格或一个制表符(在预期是空格的地方)会破坏解析。这使得手动编辑 YAML 容易出错,尤其是在深度嵌套的配置中,如 Kubernetes 清单、Docker Compose 文件、GitHub Actions 工作流和 Ansible Playbook。格式化工具强制执行一致的缩进,规范化尾部空白,并在语法错误到达 CI/CD 流水线或部署之前捕获它们。
我的 YAML 内容是否保密?
是的——一切都在您的浏览器中运行。您的 YAML 代码永远不会发送到任何服务器,永远不会存储,也永远不会被记录。这对于可能包含配置机密、API 密钥或数据库凭据的 YAML 文件尤为重要。与将您的内容发送到后端处理的基于 Web 的 YAML 工具不同,此格式化工具完全使用 JavaScript 在您的浏览器中解析和格式化。
在 iPhone 和 Android 上可以使用吗?
可以。编辑器是响应式的,可在 iPhone 上的 Safari 和 Android 上的 Chrome 中使用。从剪贴板粘贴 YAML 在移动设备上同样有效,格式化输出和错误信息在小屏幕上也能清晰显示。由于一切都在客户端运行,格式化是即时的,无需服务器往返。
需要注册或付费吗?
不需要。YAML 格式化工具完全免费,无需账户,也没有使用限制。您可以随意格式化、验证和转换 YAML。它将永远免费。