文本对比
逐行比较两段文本,高亮显示新增和删除内容。免费在线 Diff 工具,基于 LCS 算法。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
关于此工具
此文本对比工具使用最长公共子序列(LCS)算法进行逐行比较。git diff 和
GNU diff 默认用 Myers 算法求同一类最小差异,两段文本相近时更快,但存在多个同样短的差异时,- 与 + 行的顺序可能不同。非常适合比较代码、配置文件、日志输出或任何需要行级差异的文本。
如何阅读对比结果
「合并视图」把两段文本的所有行排成一列。前两列数字分别是该行在原始文本和修改后文本中的行号。- 表示这一行只在原始文本中出现,+ 表示只在修改后文本中出现,没有标记的行两边相同。例如把
timeout = 30
retries = 3
与
timeout = 60
retries = 3
对比,结果依次是 - timeout = 30、+ timeout = 60 和未改动的 retries = 3。「双栏视图」把每段连续改动里的删除行与新增行按顺序配对:第 1 条删除对第 1 条新增,第 2 条对第 2 条,多出来的一侧留空。CR LF(Windows)、LF 和单独的 CR 都算换行,所以同一段文字换了换行符也判为相同;浏览器文本框本身也会把粘贴的 CR LF 转成 LF(HTML 标准的「换行规范化」)。行尾空格、Tab 与空格、不换行空格(U+00A0)等看不见的差别仍会算作改动。
限制
- 只按整行比较。 改动一个字符,整行也会标成删除加新增,没有按词或按字符的高亮。
- 没有忽略选项。 空白和大小写的差异都算作改动。
- 不折叠上下文。 未改动的行全部显示,输出也没有
@@区块头,不能当作补丁文件使用。 - 大文本需要时间,但不占用页面。 比较在 Web Worker 中进行,页面保持响应,点击「取消」立即停止。算法每次只保留几行得分,不再为原始文本的每一行和修改后文本的每一行建整张表。在 Node.js 22 中测试两个各 10,000 行、每 10 行改 1 行的文件,耗时约 0.7 秒,内存峰值约 31 MB;旧的整表实现约 2.9 秒、946 MB。在浏览器里,Worker 的耗时取决于浏览器如何调度后台线程,可能更长。页面每次只绘制一页 100 行。
大文件、补丁或需要忽略空白的对比,请用命令行:diff -u a.txt b.txt 输出 unified 补丁,diff -w 忽略空白,git diff --no-index a.txt b.txt 可对比仓库外的文件,git diff --word-diff 按词高亮改动。
FAQ
我的文本会发送到服务器吗?
不会。所有差异计算在浏览器中进行,文本不会离开您的设备。
使用什么差异算法?
此工具用行级最长公共子序列(LCS)求出保留行最多的差异。git diff 与 GNU diff 默认用 Myers 算法求同一类最小差异,两段文本相近时更快;存在多个同样短的差异时,两者给出的 - 与 + 行顺序可能不同。
可以比较代码文件吗?
可以。粘贴任何纯文本——源代码、配置文件、文章——此工具都会显示新增和删除的行。
仅空白字符不同的行会显示吗?
会。默认显示所有差异,包括仅空白字符不同的行。