在线文本 Diff 对比工具
把两段文本分别粘贴到左右两侧,逐行比较差异:新增行绿色、删除行红色高亮。基于 LCS 算法,全部在浏览器本地计算,文本不会上传。
觉得好用?探索更多内容
文本 Diff 对比工具使用说明
「这两段文字到底哪里不一样?」是编辑、程序员、法务和译员每天都在遇到的问题。肉眼逐行比对既慢又不可靠,尤其当文档长达几百行、改动只是把某个词换了位置时,人眼几乎不可能找全。本工具采用与 git diff 同源的思路:把两段文本按行拆分,用最长公共子序列(LCS)动态规划算法找出最优对齐,从而精确标记每一行的状态——绿色 + 行表示新增,红色 - 行表示删除,无色行表示两边完全一致。
使用步骤:
- 第一步:把原始文本粘贴到左侧「原文」输入框。
- 第二步:把修改后的文本粘贴到右侧「修改后」输入框。
- 第三步:点击「对比」,结果区立即按原文顺序渲染所有行,新增/删除行带 + / - 前缀和底色。
- 第四步:查看上方的统计卡片——新增 N 行、删除 N 行、未变 N 行,快速评估改动规模。需要反向视角时点「左右互换」再对比一次即可。
性能保护:LCS 动态规划表的规模是两个文本行数的乘积,为避免浏览器卡顿,单侧文本超过 2000 行时会提示并截断。超长文件建议先按章节切分,分段对比。
常见问题(FAQ)
Diff 是按什么单位比较的?
我的文本会被上传到服务器吗?
对 diff 结果里的红色行和绿色行怎么理解?
文本太长会怎样?
能对比两个代码文件或两份合同吗?
相关知识: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,结果会准确得多。