テキスト差分チェッカー

ブラウザ内で動作し、何もアップロードされません

テキストの2つのバージョンを行ごとに比較し、変更された単語をハイライトします。

Original

Modified

Differences

Nothing to compare yet

Paste or open the original text on the left and the modified text on the right. Lines are matched as in diff and git; changed lines show which words changed.
Ready

テキストの差分(diff)とは?

差分(diff)は、テキストの2つのバージョンがどう違うかを示します。どの行が削除され、どの行が追加され、どの行が変わっていないかです。git diff やコードレビューツール、多くのエディターの比較機能も同じ考え方に基づいています。

このツールは diff や git と同じく、Myersのアルゴリズムで行を対応付け、追加行と削除行が最小になる組み合わせを見つけます。編集された行は、削除された行とそれを置き換えた追加行が並んで表示され、行の中で変わった単語がハイライトされます。

API開発では、差分を使って、昨日からレスポンスの何が変わったのか、なぜステージングと本番で返す内容が違うのか、新しいAPIバージョンでどのフィールドが増えたり減ったりしたのか、といった疑問に答えられます。先に2つのJSONレスポンスを同じ形式に整形しておくと(たとえばJSONフォーマッターで)、本当の変更だけが表示されます。

使い方

  1. 1古いバージョンを Original に、新しいバージョンを Modified に貼り付けるか開きます。どちらのエディターにもファイルをドロップできます。Examples に試せる組み合わせが3つあります。
  2. 2Differences パネルを見ます。削除された行は赤で −、追加された行は緑で + が付き、行の中で変わった単語はハイライトされます。パネルのヘッダーで Side by side と Unified を切り替えられます。
  3. 3Only changes は、変更のない行が長く続く部分を折りたたみ、各変更の前後3行だけを残します。折りたたまれた行をクリックすると開きます。F7とShift+F7、または矢印で変更箇所の間を移動できます。
  4. 4Ignore を使うと、空白、大文字・小文字、改行コード(CRLFとLF)の違いを無視できます。改行コードだけが違う場合は、ステータスバーにそう表示されます。
  5. 5Copy patch や Download patch で、変更を git apply や patch で使える unified diff として取得できます。Swap は左右を入れ替えます。Ctrl+Z で片側ずつ元に戻せ、Clear も元に戻せます。

トラブルシューティング

すべての行が変更扱いになる
おそらく改行コード(WindowsのCRLFとLF)やインデントがテキストごとに違います。ステータスバーに改行コードが表示されるので、Ignore line endings か Ignore whitespace をオンにしてください。
2つのJSONレスポンスがまったく違って見える
片方が圧縮されているか、インデントが違う可能性があります。JSONフォーマッターで両方を同じインデントに整形してから比較してください。JSONフォーマッターの Compare タブでは、キーの順序を無視してキー単位でJSONを比較することもできます。
最後の行が同じに見えるのに変更扱いになる
片方のテキストは改行で終わり、もう片方は改行で終わっていません。差分ツールはこれを変更として扱います(パッチには \ No newline at end of file と出ます)。Ignore line endings で無視できます。
貼り付けたテキストでCRLFの改行が表示されない
ブラウザは、テキスト欄に入力または貼り付けた改行をすべてLFに変換するため、貼り付けではCRLFが残りません。ファイルは Open またはドロップで開いてください。ディスク上の改行コードのまま比較されます。
大きすぎて比較できない
片側あたり最大50,000行または500万文字までです。それより大きいファイルは、コマンドラインで git diff --no-index a.txt b.txt か diff -u を使ってください。

よくある質問

変更された行が、削除1つと追加1つとして表示されるのはなぜですか?

差分は行全体で比較します。行の中で何か1つでも変わると古い行は一致しなくなるため、削除として表示され、新しい行は追加として並べて表示されます。ハイライトされた単語が、行の中で何が変わったかを示しています。

パッチは Ignore のオプションに従いますか?

いいえ。git apply や patch で適用できるように、パッチは空白、大文字・小文字、改行コードも含めた正確な差分を常に表します。Ignore のオプションが変えるのは、Differences パネルの表示だけです。

"shown as replaced" とはどういう意味ですか?

大きな2つのテキストにほとんど共通部分がない場合、最小の差分を見つけるのに非常に時間がかかることがあります。一定量の処理を終えると、ツールは残りの範囲をまとめて削除と追加として表示します。結果は正しい差分のままですが、粒度が粗くなります。

テキストはどこかにアップロードされますか?

いいえ。比較はブラウザ内で行われます。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。レイアウトや Ignore のオプションなどの設定はこのブラウザに保存されます。