跳到主要内容

YAML 差异比较器

比较两个 YAML 文档,精确查看变化内容 — 新增、删除和修改的键均附带各自路径,并提供规范化后 YAML 的统一行级 diff。结构比较会忽略缩进、引号以及流式与块式格式的差异,并支持多文档流。完全在浏览器中运行。

输入

选项

当列表实际上是无序集合、重新排序不应算作变化时,请使用“忽略顺序”。

将 1 和 "1"、true 和 "true" 视为相等 — 当一个文件给值加引号而另一个不加时很有用。

输出

摘要
指标
No data yet
结构差异
 

每处差异按路径列出 — + 新增、- 删除、~ 修改。

统一 diff(规范化 YAML)
 

两个文档会先以 2 空格缩进重新序列化,因此格式差异不会产生噪音。

Enter both documents to see the differences.

Diff view HTML
 
这对您有帮助吗?

使用指南

粘贴同一个 YAML 文件的两个版本 — 修改前后的 Kubernetes 清单、两份 CI 流水线配置、不同环境下的 docker-compose.yml — 精确查看它们的差异。这款免费在线 YAML 差异比较器把两个文档当作解析后的 YAML 而非纯文本读取,因此调整块的缩进、给值加引号、或从块式写法改成流式写法,都不会被当成变化。你会得到一份以每个差异的路径为键的结构化报告,外加可复制进补丁文件的规范化统一 diff。一切都在浏览器中运行,无需上传,也无需注册。

使用方法

  1. 把原始文件粘贴到 YAML A,修改后的文件粘贴到 YAML B
  2. 选择列表项的比较方式 — 按位置(默认,适合容器参数这类有序列表)或忽略顺序(适合标签、允许的主机这类本质上是集合的列表)。
  3. 如果一个文件给值加了引号而另一个没有,请开启忽略类型差异,这样 8080"8080" 会被视为相等。
  4. 查看摘要了解数量统计,查看结构差异了解逐路径的变更列表,查看统一 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 验证器会指出语法错误的位置。

yamldiffcomparechangeskubernetesdeveloper

Use it from code

From 3 credits per call

REST 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_HERE

Paste this at any agent connected to the IOTools MCP server, then add your input.

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。