テキスト差分チェッカー
2つのテキストを行単位で比較し、追加・削除をハイライト表示。LCSアルゴリズム採用。無料、ブラウザ内で処理。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
テキスト差分について
差分チェックはコードレビュー、ドキュメントの変更追跡、設定ファイルの比較などで重宝します。gitのような版管理システムでも同様の機能が使われています。
結果の読み方
「統合表示」は両方のテキストの全行を 1 列に並べます。先頭の 2 つの数字列は、元テキストと変更後テキストでの行番号です。- は元テキストにだけある行、+ は変更後テキストにだけある行で、記号のない行は両方で同じです。たとえば
timeout = 30
retries = 3
と
timeout = 60
retries = 3
を比べると、- timeout = 30、+ timeout = 60、変わっていない retries = 3 の順に表示されます。「並列表示」では、連続した変更の中で削除行と追加行を順番に組み合わせます(1 つ目の削除と 1 つ目の追加、2 つ目同士…、余った側は空欄)。CR LF(Windows)、LF、単独の CR はどれも改行として扱うので、改行コードだけが違うテキストは同一と判定されます。ブラウザのテキスト欄も貼り付けた CR LF を LF に変換します(HTML 標準の「改行の正規化」)。行末の空白、タブとスペース、ノーブレークスペース(U+00A0)などの見えない違いは変更として数えます。
制限事項
- 行単位の比較のみ。 1 文字の変更でも行全体が削除と追加として表示され、単語・文字単位のハイライトはありません。
- 無視オプションはありません。 空白や大文字小文字の違いも変更として扱います。
- 前後の行は折りたたみません。 変わっていない行もすべて表示され、
@@のハンク見出しもないため、パッチとしては使えません。 - 大きな入力は時間がかかりますが、ページは固まりません。 比較は Web Worker で行い、「キャンセル」ですぐに止まります。全行の組み合わせ表は作らず、スコアを数行分だけ保持します。Node.js 22 で、10 行に 1 行を変えた 10,000 行どうしのファイルを比べると約 0.7 秒、メモリのピークは約 31 MB でした。以前の表を丸ごと作る実装では約 2.9 秒・946 MB でした。ブラウザーでは、バックグラウンドのスレッドの割り当て方によって Worker の時間が長くなることがあります。描画するのは 1 ページ 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 アルゴリズムを使い、同じ種類の最小差分を求めます。2 つのテキストが似ているほど速く終わります。同じ長さの差分が複数ある場合、- と + 行の並びが git と異なることがあります。
コードの差分も比較できますか?
はい。プレーンテキストとして扱いますので、ソースコード・設定ファイル・ドキュメントなど任意のテキストを比較できます。
データはサーバーに送信されますか?
いいえ。すべての比較処理はブラウザ内で完全に行われます。機密情報も安全に扱えます。
大きなファイルも扱えますか?
扱えます。比較は Web Worker で行うためページは固まらず、「キャンセル」でいつでも止められます。計算量は O(n×m) なので、数万行どうしでは時間がかかります。結果は 1 ページ 100 行ずつ表示します。