PR 留 review 前先看清楚
GitHub 的 diff 已经很好,但有时你只想看「实质变更」,把 formatter 噪声滤掉。把两个版本粘贴进来、打开「忽略空白」— 表面 reformat 全部消失,只留下逻辑编辑。
比对两段文本或代码,逐行 + 逐字高亮。并排或统一视图、忽略空白、忽略大小写 — 完全在你的浏览器内运算。
不会。整个工具就是这个标签页里的 JavaScript。Diff 算法(LCS,longest common subsequence)在你的 CPU 上跑,结果直接渲染到 DOM。打开 DevTools → Network 即可验证:比对过程不会发任何请求。可以放心粘贴内部代码、客户数据、合同草稿等任何不该被服务器记录的内容。
先把两边输入按行切开,跑 LCS(longest common subsequence)算法。两边都有的行标记为「相等」;不相等的行会配对成「change」行(删除紧接着新增就配对)。对每个配对的 change 行,我们在这行的字词上(以空白切分)再跑第二次 LCS,所以只有真正被编辑的字词会变红/绿 — 不是整行变色。
为开发者、写作者,以及任何想看「到底改了什么」的人打造的干净快速 diff 工具 — 没有弹窗广告,也没有第三方追踪。
一键切换并排(IDE 风格的两栏)与统一(单栏附 +/− 标记)。两种视图都会显示行号,并逐字高亮变更部分。
当两行有差异,我们会在这对行上跑第二次逐字 diff — 只有真正不同的部分会被标色,而不是整行变色。在 200 字的长行里找一个错别字也很轻松。
切换空白与大小写敏感度,过滤掉表面上的差异(重新缩进、大小写调整),只专注在真正的编辑。
两段文本都留在你的浏览器标签页。Diff 算法在本地的 JavaScript 执行。可在 DevTools → Network 验证:输入时零网络请求。
一眼看到新增、删除、修改了几行。一键把 diff 复制到剪贴板,直接粘贴进 code review 或 commit message。
页面加载后所有运算都在本地 — 飞机上、企业防火墙后、甚至没网络都能用。处理机密 code review 特别有用。
算法本身比 web 还老 — 1965 年的 LCS,加上 1986 年 Eugene Myers 的优化。
两边输入都用 \n(或 \r\n)切开。每行就是一个 token。我们比对 token,而不是逐字 — 因为真实世界里多数编辑都是新增、删除或修改整行。
Longest Common Subsequence 是两边以相同顺序出现的最大行集合。我们从右下角开始填 DP 表,每格存「从这个位置到结尾的 LCS 长度」。时间与内存都是 O(m × n)。
从表格的左上角往前走:若两边当前行相同,输出「相等」;否则往右或往下选能保住 LCS 长度的方向,输出「删除」或「新增」。结果是一串能把 Original 变成 Modified 的操作序列。
当删除紧接着新增,我们把它们配对成「change」行。为了只高亮行内真正不同的部分,我们以空白切分这对行的字词,再跑一次同样的 LCS。
你会在哪些场景下需要 diff checker?
GitHub 的 diff 已经很好,但有时你只想看「实质变更」,把 formatter 噪声滤掉。把两个版本粘贴进来、打开「忽略空白」— 表面 reformat 全部消失,只留下逻辑编辑。
法务或 ops 常需要知道合同 v1 跟 v2 改了什么。两份粘贴上,马上得到带逐字高亮的彩色 diff — 不用 Word、不用修订追踪、不会把机密条款上传到别人的服务器。
用 sed/awk/Python regex 改过配置文件?把原始文件和结果粘贴进来,确认脚本只动了预期的部分。逐字高亮能抓到肉眼扫过会漏的零星修改。
翻译对照(原文 vs 译文,或同一原文的两种译本)— 逐字 diff 让「漏字、重复短语、标点翻转」这类校稿时容易漏掉的问题一目了然。
你比对的文本通常是私密的:内部 repo 的代码、合同草稿、客户数据导出、未发布的产品文案。把这些粘贴到别人的服务器,等于留下你无法控制的记录。iKit 的 diff checker 就是已加载浏览器标签页的 JavaScript — 比对在你的 CPU 上执行,完全没经过网络。
来自 iKit 博客的深度教程与工具对比。
Pretty-print, validate, and structurally diff messy JSON — when each one is the right tool.
Compare the best Markdown editors of 2026; pair with the diff tool for tracking documentation changes.
不会。整个工具就是这个标签页里的 JavaScript。Diff 算法(LCS,longest common subsequence)在你的 CPU 上跑,结果直接渲染到 DOM。打开 DevTools → Network 即可验证:比对过程不会发任何请求。可以放心粘贴内部代码、客户数据、合同草稿等任何不该被服务器记录的内容。
先把两边输入按行切开,跑 LCS(longest common subsequence)算法。两边都有的行标记为「相等」;不相等的行会配对成「change」行(删除紧接着新增就配对)。对每个配对的 change 行,我们在这行的字词上(以空白切分)再跑第二次 LCS,所以只有真正被编辑的字词会变红/绿 — 不是整行变色。
并排视图把两段文本左右并列,搭配对应的行号 — 比较像 IDE(VS Code、JetBrains)的 diff。统一视图只显示一栏,行首加 +/− 前缀 — 比较像 `git diff` 的输出。挑你工作流顺手的那个用,两者显示的是同一份数据。
重新格式化代码(跑 Prettier、切换 tab / space、统一行尾)会带来大量视觉噪声,把真正的修改埋掉。打开「忽略空白」会在比对前把连续空白缩成一个空白并 trim 两端 — 你看到的就只剩有意义的编辑,不会被表面差异干扰。
LCS 算法的内存是 O(m × n),m、n 是两边各自的行数。iKit 把上限设在约 400 万格(≈16 MB),足够应付数千行 vs 数千行的比对。更大的 diff(整个数据库 dump、整个日志文件)请用 CLI 工具如 `diff` 或 `git diff --no-index` — 它们用更聪明的算法(Myers diff),可以处理数百万行。