YAML 差异比较器
比较两个 YAML 文档,精确查看变化内容 — 新增、删除和修改的键均附带各自路径,并提供规范化后 YAML 的统一行级 diff。结构比较会忽略缩进、引号以及流式与块式格式的差异,并支持多文档流。完全在浏览器中运行。
输入
选项
当列表实际上是无序集合、重新排序不应算作变化时,请使用“忽略顺序”。
将 1 和 "1"、true 和 "true" 视为相等 — 当一个文件给值加引号而另一个不加时很有用。
输出
| 指标 | 值 |
|---|---|
| No data yet | |
每处差异按路径列出 — + 新增、- 删除、~ 修改。
两个文档会先以 2 空格缩进重新序列化,因此格式差异不会产生噪音。
Enter both documents to see the differences.
使用指南
粘贴同一个 YAML 文件的两个版本 — 修改前后的 Kubernetes 清单、两份 CI 流水线配置、不同环境下的 docker-compose.yml — 精确查看它们的差异。这款免费在线 YAML 差异比较器把两个文档当作解析后的 YAML 而非纯文本读取,因此调整块的缩进、给值加引号、或从块式写法改成流式写法,都不会被当成变化。你会得到一份以每个差异的路径为键的结构化报告,外加可复制进补丁文件的规范化统一 diff。一切都在浏览器中运行,无需上传,也无需注册。
使用方法
- 把原始文件粘贴到 YAML A,修改后的文件粘贴到 YAML B。
- 选择列表项的比较方式 — 按位置(默认,适合容器参数这类有序列表)或忽略顺序(适合标签、允许的主机这类本质上是集合的列表)。
- 如果一个文件给值加了引号而另一个没有,请开启忽略类型差异,这样
8080和"8080"会被视为相等。 - 查看摘要了解数量统计,查看结构差异了解逐路径的变更列表,查看统一 diff 了解行级视图。
输入时输出会自动更新。
结构差异如何判定“什么变了”?
两个文件先被解析,然后对解析出的两个值同步遍历。遇到映射(mapping)时,工具会报告只出现在一侧的键(新增或删除),并递归进入两侧都有的键;遇到序列(sequence)时逐项比较;遇到标量时比较值本身。每条记录以 +(新增)、-(删除)或 ~(修改)开头,并附带 spec.template.spec.containers[0].image 这样的点分路径,因此在几百行的清单里也能直接跳到关键的那一行。
为什么“结构”diff 比纯文本 diff 更好?
因为 YAML 大多数文本层面的差异并不是真正的差异。ports: [80, 443] 和两行的块式序列是同一份数据;name: app 和 "name": app 也是;同一文件把缩进从 4 个空格改成 2 个同样如此。行级 diff 会把这些全部报出来。本工具一个都不报 — 只报告真正会影响文件使用方的变化。
那为什么还要提供统一 diff?
因为要贴进补丁或代码评审的正是行级视图。为了让它保持有用,两个文件会先从解析后的形式以固定 2 空格缩进重新序列化,然后对这份规范化文本做 diff — 因此补丁里呈现的是真实编辑,而不是格式噪音。
支持多文档文件吗?
支持。以 --- 分隔的流会按顺序逐个文档比较,路径会加上 doc[2].… 前缀,方便分辨差异属于哪个文档。任一侧多出来的文档会被报告为新增或删除。
注释怎么处理?
注释不参与比较。注释对任何读取数据的一方都没有意义,而且两种视图都基于解析后的文档计算,解析过程不会保留注释。
我的数据隐私有保障吗?
完全有保障。解析和比较全部在你的浏览器中完成 — 任何文件都不会被上传、记录或存储,当你比较的是生产环境清单时这一点尤为重要。
需要 YAML diff 以外的工具?
要比较 JSON,请使用 JSON Compare 工具;比较 XML 请用 XML Diff Comparator。如果某个文件解析失败,YAML 验证器会指出语法错误的位置。
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/yaml-diff-comparator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"yamlA": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
"yamlB": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
"seqOrder": "position",
"looseScalars": ""
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `yaml-diff-comparator` tool (YAML Diff Comparator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.