返回开发工具

文本差异比对工具

对比两段文本快速找出差异,支持双栏 / 统一 / 内联三种视图,行 / 词 / 字符三种粒度,可忽略空白与大小写。

原始0 行 · 0 字节
修改后0 行 · 0 字节
DIFF 结果
粘贴或拖入两段文本进行对比。或者载入示例查看效果。
导出

把两段文本编码到 URL hash 内。敏感内容会在 URL 中可见。

文本永远不离开浏览器。「最近对比」仅保存在本地 localStorage。

常见问题

我的文本会上传到服务器吗?

不会。所有对比都在浏览器内通过自写的 Myers diff 算法完成。文本不会被上传、记录或传输。可选的「通过 URL 分享」开关仅在你显式开启时才会把内容编码到 URL fragment(# 后),开关关闭则立即清空。

使用什么算法?

我们手写经典的 Myers O((N+M)D) diff 算法(Eugene W. Myers,1986)— 与 Git 内部使用的是同一种算法。它能找出两段序列之间最短的编辑脚本。本项目不依赖 jsdiff、diff-match-patch 或任何其他 npm 包。

什么时候用词或字符粒度?

「行」适合代码、配置、结构化文本 — 几乎所有 Git 风格的 diff。「词」适合自然语言(合同、散文),可以看到一行内具体哪些词变化了。「字符」适合极细致的对比(如错别字检查)。当输入超过 5000 字符时,字符粒度会自动降级为词粒度,以避免变慢。

「忽略 Pattern」有什么用?

它让你跳过时间戳、版本号、自动生成注释等噪音。例如 ^Last updated:.*$ 会忽略所有以「Last updated:」开头的行。Pattern 使用 JavaScript regex 语法。

有大小限制吗?

单个文件最大 5MB(文本)。行数无上限 — 我们测试过两侧各 100,000 行。性能:1 万行 diff < 300ms,10 万行约 2s(现代笔记本)。

导出的 patch 可以用 git 应用吗?

可以。导出的 .patch 文件是 unified-diff 格式,与 git apply 或 patch 命令兼容。可以用来分享修复而不需要发整个文件。

支持哪些语言的语法高亮?

JavaScript / TypeScript、Python、Go、Rust、Java、C/C++、Ruby、PHP、SQL、Shell。会按文件扩展名或内容启发式自动检测,也可手动选择。高亮完全用 regex 自写实现(不依赖 highlight.js / Prism)。

相关工具