テキスト差分チェッカー

2つのテキストを行単位で比較し、追加・削除をハイライト表示。LCSアルゴリズム採用。無料、ブラウザ内で処理。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
「比較」または Ctrl+Enter(Mac は ⌘+Enter)で行単位の比較を実行します。入力だけでは比較しません。Web Worker で処理し、「キャンセル」や入力の編集で停止して以前の結果を消します。 「入れ替え」は 2 つの入力を交換して結果を消します。もう一度「比較」を押すと、逆方向の差分を表示します。 「クリア」は両方の入力、結果、ステータスを空にして処理を中止します。このツール内にフォーカスがあるときは Ctrl+L(Mac は ⌘+L)も同じ操作です。
「統合表示」は両方の行番号を 1 列で表示します。「並列表示」は連続した変更の削除行と追加行を順に組み合わせ、余る側は空欄です。表示を切り替えると再計算せず最初のページに戻ります。
元のテキストを入力します。CR LF、LF、単独の CR はすべて改行です。空白、大文字小文字、末尾の改行も差分として数えます。無視する設定はありません。
変更後のテキストを入力します。片方は空でも比較できます。空のテキストは空行 1 行として扱います。どちらかを編集すると比較を中止して結果を消します。
結果 赤い − は削除行、緑の + は追加行です。件数は全文が対象です。「前へ」「次へ」で 100 行ずつ表示します。比較後に「入力を隠す」で結果の領域を広げてもテキストは残り、「入力を表示」で戻せます。
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

テキスト差分について

差分チェックはコードレビュー、ドキュメントの変更追跡、設定ファイルの比較などで重宝します。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 行ずつ表示します。