输入
输出

什么是文本对比?

文本对比是一款在线工具,可对两段文本进行比较,精确显示两者之间的差异。将旧版本粘贴到左侧,将新版本粘贴到右侧,差异部分会以颜色高亮显示。绿色表示新增内容,红色表示已删除内容。

它适用于任何纯文本内容,包括文章段落、代码片段、配置文件、合同条款和翻译稿。相同的行保持不变,让您的目光直接落在有差异的地方。

当您不想打开笨重的桌面工具,但又需要一键获得准确结果时,它就派上用场了。无需注册,无需上传,也不会留下任何您对比过的文本记录。

功能介绍

Compare Text 接收两段文本,将新增内容以绿色高亮显示,将删除内容以红色高亮显示。处理以字符为单位,因此哪怕缺少一个逗号或变量名被改写,都会清晰地显示出来。底层引擎使用 Google 的 diff-match-patch 库(Apache 2.0 协议)。这项通用技术称为 diff,其核心问题(求两个字符串之间的最小编辑集合)归结为经典的 最长公共子序列问题

该引擎能同等处理自然语言和代码,与文档编辑器中版本历史功能所采用的思路如出一辙。如果您比较的是结构化数据而非普通文本,可使用我们的 JSON 对比工具,它会先解析两侧内容,并忽略键的顺序——不同的问题,需要不同的工具。

无需服务器。JavaScript 通过 FileReader API 读取您的文本,在内存中完成比较,并将结果渲染到页面上。关闭标签页,数据即消失。

如何对比两段文本

三个步骤。diff 会随您的输入实时更新,无需点击任何"对比"按钮。

  1. 1

    输入原始文本

    将原始文本粘贴到左侧面板,或点击 上传 加载 .txt 或 .md 文件。点击 示例 可载入一个简短样例,方便快速体验工具效果。

  2. 2

    输入修改后的文本

    在右侧粘贴或上传修改后的版本。两个面板都有内容后,左侧会以红色显示删除内容,右侧会以绿色显示新增内容。

  3. 3

    查看更改

    滚动任意一侧,两个面板会保持同步。标题栏会显示检测到的更改数量。对结果满意后,可点击 复制下载 保存文本。

适用场景

发现合同中的修改条款

将供应商协议的 V1 粘贴到左侧,将带有标注的 V2 粘贴到右侧。赔偿、付款和终止条款中悄悄发生的变化会立即显现。当对方发来没有启用修订记录的干净版本时,这个工具特别有用。

校对草稿和编辑意见

将您的草稿与编辑修改后的版本进行对比,或对比博文修改前后的内容。每一处文字变动都会标出,不必重新通读全文就能找到被删除的句子。

审查翻译修改

将原文放在一侧,译者的修改版放在另一侧。快速看出哪些措辞被重写,以及审校在哪里对直译提出了异议。当您信任审校人员时,省去了重新通读整篇文档的麻烦。

对比配置文件

nginx.conf、systemd 单元文件、.env 模板。两个版本,并排显示,几秒钟搞定。当两个文件已经复制到剪贴板时,比在终端中运行 diff 更快。

对比日志文件快照

昨天的部署日志与今天的对比,或同一任务在两次 CI 运行中的输出。不变的行淡出背景,新出现的错误模式一目了然。对于几十 MB 的大型日志,建议先用 grep 筛选出相关片段再粘贴。

文本 diff 快速参考

此工具最常遇到的边界情况,以及背后的原因说明。

主题工具的处理方式
换行符LF、CRLF 和 CR 是不同的字符。将 Windows 文件(CRLF)与 Unix 文件(LF)对比时,每一行都会显示为不同。请将两份文本的换行符统一为 LF,或在对比前去除回车符。
行尾空格行尾空格会显示为真实差异,高亮会延伸到可见字符之后。这有助于发现 YAML 或 CSV 文件中悄悄破坏解析器的多余空格。
Unicode 规范化café 中的预组合字符 é(U+00E9)是一个字符;分解形式 e 加组合重音(U+0301)是两个字符。它们显示相同但 diff 结果不同。使用 String.prototype.normalize() 应用 Unicode NFC 规范化 可使它们匹配。
匹配粒度底层以字符为单位,并进行语义清理,尽量在词边界处合并变更。这就是为什么短小的常见词有时会在不相关的文本中显示为匹配。
文件编码上传的文件通过 FileReader API 以 UTF-8 读取。其他编码会出现乱码,请提前转换,或粘贴已经过编码解析的文本。
大文件几百 KB 以内几乎是即时完成。1–2 MB 会明显变慢。超过 5 MB 时,瓶颈在于渲染高亮效果,而非 diff 算法本身。建议先截取关心的部分再粘贴。
一侧为空如果一个面板为空,另一侧的全部内容会显示为新增(或删除)。这是 diff 的正常行为,不是 bug。
内容完全相同当两侧内容完全一致(包括空格、换行符和 Unicode 形式)时,更改数为零,标题栏不显示任何计数。

常见问题

我输入的文本会被保存吗?

不会。整个对比过程完全在您的浏览器中运行,没有任何内容会发送到服务器、被记录或存储。打开开发者工具,切换到 Network 面板查看——对比时没有任何外发请求。关闭标签页,文本即消失。

文本 diff 与 JSON diff 有什么区别?

文本 diff 按顺序逐字符比较,因此 JSON 中键的顺序调整或空白格式变化都会显示为差异,即使数据内容完全相同。如果您比较的是 JSON,请使用 Compare JSON 工具——它会先解析两侧内容,并考虑键的顺序。对于普通文本、配置文件、代码或其他非结构化数据,文本 diff 是正确选择。

它能处理 Windows 与 Unix 的换行符差异(CRLF vs LF)吗?

工具按原样进行比较,所以将 Windows 文件(CRLF)与 Unix 文件(LF)进行对比时,即使内容相同,每一行也会显示为不同。这是 diff 的正常行为,输入本来就是不同的。解决方法是在粘贴前将两份文本的 换行符 统一为 LF,或去除回车符。

有文件大小限制吗?

实际限制取决于设备内存。几百 KB 的文本可在不到一秒内完成对比。超过 1 MB 后浏览器开始变慢,主要是因为渲染高亮效果的开销增加。对于超大日志或完整书稿,建议先截取关心的部分再粘贴。

为什么 diff 结果有时看起来很零碎?

字符级 diff 会尽可能对齐短的公共子串——包括"的"、"了"、单个字母、标点符号等。语义清理步骤会尽量将这些合并为词级别的块,但两段完全不相关的段落仍然会产生零散的结果。算法无法判断两段文本是否本来就应该进行比较。

能对比不同编码的文件吗?

通过上传按钮加载的文件会以 UTF-8 方式读取(FileReader 的默认编码)。其他编码格式(如 Latin-1、Shift-JIS、Windows-1252)的文件会出现乱码,请先转换为 UTF-8 再使用。对于已经在剪贴板中的文本,操作系统在粘贴前已完成编码解析,通常可以直接使用。