在线文本差异对比工具:使用 LCS 算法逐行比较两段文本,高亮显示新增、删除、修改行。基于 Monaco DiffEditor,支持语法高亮。
摘要:免费的文本差异对比工具,基于 LCS 算法逐行比较,高亮新增与删除行,Monaco 编辑器支持。
本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。
使用指南
两段文本到底差在哪?肉眼逐行扫既慢又不可靠。本工具按行比对,左右分栏高亮增删改,支持忽略行首尾空白与忽略大小写,并给出增/删/改/未变行统计——比对配置文件的两个版本、核对代码改动前后的输出、检查翻译稿的差异都用得上。内容只在浏览器本地处理。
1. 比对两段文本
- 旧文本粘左边,新文本粘右边;也可点示例先看一眼高亮效果。
- 差异在 Diff 视图中即时高亮:新增、删除与同行修改会分开统计。
- 布局可在左右并排与上下堆叠之间切换;空白敏感时(缩进即语义的 YAML/Python)保持「忽略空白」关闭;比对散文或日志时打开它可以过滤掉无意义的空格差异。「忽略大小写」适合对大小写不敏感的配置键名比对。
2. 读 diff 的正确姿势
diff 显示的是「最小编辑轨迹」,不是作者的修改过程——同一处改动可能有多种等价的呈现方式。阅读时先看块(连续的增删组合),再孤立看单行:一个「删 3 行 + 增 3 行」的块往往只是一行参数改了名,逐行读反而晕。比对超长文件时先粗扫高亮块的分布与顶部统计数字,定位到区域再细读。
3. 它不是 git diff
- 这里的比对基于你粘贴的快照,适合「两份现成文本」的场景;要追溯文件的修改历史、按提交粒度看演进,用 git log -p。
- 行级比对不感知语法:把一行长 JSON 拆成多行会产生海量差异——先格式化再比对(本站 JSON 格式化工具),或直接用 json-diff 工具做结构化比对。
- 两侧输入默认按纯文本高亮;需要结构化语义时,先统一格式再 diff,比指望编辑器「猜语言」更稳。
4. diff 算法与粒度的选择
文本 diff 的经典算法是 Myers(Git 所用)与 LCS 动态规划——前者省内存、后者易实现。工程上更重要的却是粒度选择:行级 diff 对配置文件最直观;字级 diff 适合自然语言修订;词级介于两者。本页以行对齐为主,并用 Monaco Diff 视图呈现变更——这与多数代码审查工具的「先看行、再看块」习惯一致。注意 diff 结果不唯一:两份文本可能有多条同样最小的编辑路径,不同算法给出的补丁不同但都正确,对比两个 diff 工具的输出差异时别惊讶。
5. 配置文件 diff 的语义层次
- JSON/YAML 先格式化再 diff:键顺序与缩进噪音会淹没真实变更;需要键序无关时,可先用 JSON 排序/美化工具统一两边。
- 「忽略空白」等价于粗粒度的 diff -w:对缩进敏感的语言务必关掉;对日志与散文可打开。
- 时间戳、构建号造成的噪音行,目前靠人工裁剪或先预处理文本,而不是内置正则忽略规则——先删噪音再比对,往往比硬读整屏高亮快。
6. 和 json-diff 怎么分工
文本 diff 把两边当字符串行序列;json-diff 把两边当数据结构,键顺序与空白通常不再制造假差异。API 响应、配置对象、嵌套字段变更优先走 json-diff;日志、散文、非 JSON 配置、补丁可读性优先走本页。两边都先「格式化到可读」再比对,是共同的前置步骤。
常见问题
支持忽略行首尾空白、忽略大小写,左右并排与上下堆叠布局切换,并统计增/删/改/未变行数。视图基于 Monaco DiffEditor 呈现行级差异。
比对日志、散文时打开,过滤无意义的空格差异;比对 YAML、Python 这类缩进即语义的内容时必须关闭。「忽略大小写」适合大小写不敏感的配置键名。时间戳、构建号造成的噪音行没有内置忽略规则,先删掉再比往往更快。
diff 呈现的是最小编辑轨迹,不是作者的修改过程,同一处改动可能有多种等价呈现。先看连续的增删块再看单行——「删 3 行 + 增 3 行」往往只是一行参数改名;超长文件先扫高亮块分布与顶部统计,定位到区域再细读。
不能。本页比对的是你粘贴的两份快照,要追溯修改历史、按提交看演进请用 git log -p。行级比对也不感知语法:一行长 JSON 拆成多行会产生海量差异,先用 JSON 格式化工具统一两边再比,或直接用 json-diff。
本页把两边当字符串行序列比对;json-diff 按数据结构比对,键顺序与空白通常不再制造假差异。API 响应、配置对象、嵌套字段变更优先 json-diff;日志、散文、非 JSON 配置走本页。共同的前置步骤是先把两边格式化到可读。
对比只在浏览器本地内存中执行,两段文本不传输到任何服务器;处理代码、密钥类内容时,再留意屏幕分享与下载文件的二次传播即可。
相关工具
相关文章
在线文本 Diff 工具:逐行对比两段文本的差异
对照 ToolVault 文本 Diff 的真实实现:Monaco DiffEditor、忽略空白/大小写边界、unified 视图与 patch 阅读,以及配置/JSON/YAML 对比时的噪音处理。
Hydration failed / Text content does not match 报错怎么解决?
Next.js/React SSR 最常见的水合报错完整指南:为什么服务端和客户端渲染不一致、时间戳/随机值/localStorage 三大来源、suppressHydrationWarning 的正确用法,配本站工具定位差异。
SHA256 和 MD5 到底有什么区别?该用哪个?
SHA256 与 MD5 的区别、为什么 MD5 不再安全、校验文件该用哪个哈希算法?对比输出长度、安全性与适用场景,并附本站 SHA256 / MD5 工具用法。