在线文本 Diff 对比工具

把两段文本分别粘贴到左右两侧,逐行比较差异:新增行绿色、删除行红色高亮。基于 LCS 算法,全部在浏览器本地计算,文本不会上传。

0
新增行(+)
0
删除行(-)
0
未变行

文本 Diff 对比工具使用说明

「这两段文字到底哪里不一样?」是编辑、程序员、法务和译员每天都在遇到的问题。肉眼逐行比对既慢又不可靠,尤其当文档长达几百行、改动只是把某个词换了位置时,人眼几乎不可能找全。本工具采用与 git diff 同源的思路:把两段文本按行拆分,用最长公共子序列(LCS)动态规划算法找出最优对齐,从而精确标记每一行的状态——绿色 + 行表示新增,红色 - 行表示删除,无色行表示两边完全一致。

使用步骤:

  • 第一步:把原始文本粘贴到左侧「原文」输入框。
  • 第二步:把修改后的文本粘贴到右侧「修改后」输入框。
  • 第三步:点击「对比」,结果区立即按原文顺序渲染所有行,新增/删除行带 + / - 前缀和底色。
  • 第四步:查看上方的统计卡片——新增 N 行、删除 N 行、未变 N 行,快速评估改动规模。需要反向视角时点「左右互换」再对比一次即可。

性能保护:LCS 动态规划表的规模是两个文本行数的乘积,为避免浏览器卡顿,单侧文本超过 2000 行时会提示并截断。超长文件建议先按章节切分,分段对比。

常见问题(FAQ)

Diff 是按什么单位比较的?
本工具按「行」为单位比较:把左右两段文本分别按换行符拆分成行序列,用最长公共子序列(LCS)算法找出两边的最佳对齐方式,从而标记出每一行是新增、删除还是未变。这也是 git diff 等经典工具的通用思路,按行比较的结果最稳定、最易读。
我的文本会被上传到服务器吗?
不会。对比算法完全在你的浏览器中用 JavaScript 执行,两段文本都不会离开你的设备,断网也可以使用,可以放心对比合同、代码、内部文档等敏感内容。
对 diff 结果里的红色行和绿色行怎么理解?
红色行(- 前缀)表示只出现在左侧「原文」中、在修改后的文本里被删除了;绿色行(+ 前缀)表示只出现在右侧「修改后」文本中,即新增内容;无色行表示两边完全相同的部分。一处修改通常表现为相邻的一行红色和一行绿色。
文本太长会怎样?
LCS 算法需要构建行数乘积规模的动态规划表,为避免浏览器卡死,本工具对超过 2000 行的文本会提示并截断保护。超长文件建议先切分成若干段,再分段对比。
能对比两个代码文件或两份合同吗?
能。只要把两个文件的内容分别粘贴到左右输入框即可。代码文件、合同文本、配置文件、文章修订稿都可以逐行对比,被修改的行会同时显示为删除旧值和新增新值。

相关知识:LCS 与 Diff 的应用场景

LCS 算法是怎么回事?最长公共子序列(Longest Common Subsequence)指在两个序列中按原顺序出现(不要求连续)的最长公共序列。对 diff 来说,找到 LCS 就等于找到「两边都保留的最佳骨架」:不在骨架里的旧行即被删除,不在骨架里的新行即被新增。经典解法是动态规划:建一张 n 行 m 列的表,逐格比较两边的行是否相等并取最优子问题,最后回溯得到操作序列。它的复杂度是 O(n×m),这也是本工具设置 2000 行截断保护的原因。

Diff 在真实工作中的应用。代码 review 时,diff 是审查者最先看的东西——GitHub、GitLab 上的每一次 Pull Request 本质上就是一份带语法高亮的 diff;法务和商务在合同多轮谈判后,用 diff 快速核对对方是否偷偷改了付款条款或违约责任;编辑与作者修订稿件时,diff 可以还原每一处增删,避免「改了哪都说不清」的扯皮;运维同学也常用 diff 对比两份服务器配置的差异。对比文本之后如果还想进一步加工——统计两份文档的字数差异可以用 文本字数统计,统一键名或大小写风格可以用 大小写转换,核对 JSON 接口报文的先后差异则推荐先用 JSON 格式化 把两边都排版对齐再 diff,结果会准确得多。

🍪 隐私提示 我们仅收集提供服务所必需的信息(详见《隐私政策》),不出售、不追踪。