テキスト比較

2つのテキストを貼り付けるだけで、追加・削除・変更行と変更箇所を色分け表示。大文字小文字や空白の違いも無視できます。無料・登録不要、データは送信されません。

  • 行ごとの差分
  • 変更箇所を強調
  • 空白・大小文字無視
  • 差分だけ表示

比較結果

テキストはブラウザ内で比較され、アップロードも保存もされません。

🔒 計算はすべてブラウザ内で行われ、データがサーバーに送信されることはありません。

こんなときに使えます

  • 契約書・文書の修正確認:2つの版の契約書や企画書を比べて、相手がどこを書き換えたかを見つけられます。
  • コード・設定ファイル:Git がない環境でも、2つのコードや設定の違いをすぐに比較できます。
  • 論文・レポート:修正前後の違いを確かめたり、2つの文章にどれだけ同じ部分があるかを調べたりできます。
  • 翻訳・原稿の校正:修正前後の原稿を比べ、「差分だけ表示」をオンにして変更箇所だけを手早く確認できます。

使い方

  1. 元のテキストを左、変更後のテキストを右に貼り付けるか、「左のファイルを開く/右のファイルを開く」で読み込みます。比較結果はすぐ下に表示されます。
  2. 赤い背景の「−」は左にだけある行(削除)、緑の背景の「+」は右にだけある行(追加)です。変更された行はペアで表示され、変わった語句が濃い色で強調されます。
  3. 「大文字小文字を無視」「空白の違いを無視」で重要でない差分を除外できます。長い文章では「差分だけ表示」をオンにすると、同じ部分が折りたたまれます。

使用例

初期表示の例では2つのSQLを比較します。左5行、右6行で、結果は +3行、−2行(同じ行 3)です。1行目は COUNT(*) AS Cnt から SUM(Amount) AS Total に変わり、強調されるのは COUNT→SUM、*→Amount、Cnt→Total だけで、括弧や AS は強調されません。右の4行目 AND Status = 1 は純粋な追加で、最後のコメント行は 1→2 だけが強調されます。

左が if (x == 1) {、 return TRUE;、} の3行、右が if (x == 1) {、 return true;、} の3行の場合、オプションなしでは +2行、−2行で余分な空白まで強調されます。「空白の違いを無視」をオンにすると2行目だけが異なり(+1、−1)、TRUE→true だけが強調されます。さらに「大文字小文字を無視」をオンにすると3行すべてが一致します。

結果の見方

  • ステータスの「+N行、−N行」は追加行と削除行の数です。1行を変更すると削除1行と追加1行として数えるため、3行変更すると +3、−3 と表示されます。
  • 各行の最初の2列は行番号で、1列目が左(元)、2列目が右(変更後)です。片方にしか番号がない行は、その側にだけある行です。
  • 「差分だけ表示」では、各変更の前後2行を文脈として残し、残りは「同じ行 N 行を省略」にまとめます。
  • 無視オプションで同じとみなされた行は右側の原文を表示します。大文字小文字を無視した場合は変更後の表記が表示されます。

仕組みと計算方法

  • 行の比較には jsdiff を使っています。Myers の O(ND) 差分アルゴリズムで、左を右に変えるための最小の追加・削除を求めます。git diff と同じ考え方です。
  • 比較の前に各行を正規化できます。「空白の違いを無視」は連続する空白を1つにまとめて行頭・行末を取り除き、「大文字小文字を無視」は小文字にそろえます。正規化は照合だけに使い、表示は常に原文です。
  • 隣り合う削除と追加を1つの変更ブロックとし、順にペアにして行内を比較します。日本語と中国語は1文字ずつ、英語とコードは単語単位で比較するので、単語がばらばらの文字に分かれません。
  • 行内の共通部分が長い方の行の30%未満なら行内の強調は行いません。改行コード CRLF と CR は LF とみなし、末尾の改行1つは差分にしません。
  • ファイルはまずUTF-8として読み、正しいUTF-8でなければBig5で読み直します。

注意点と制限

  • 比較するのはテキストだけで、フォント、色、表などの書式は比較しません。
  • 行単位の比較なので、折り返し位置が変わっただけの段落も変更として表示されます。
  • 移動は検出しません。ある部分を別の場所に移すと、一方で削除、もう一方で追加として表示されます。
  • 差分が非常に多い大きなファイルは、5秒を超えると比較を中止してエラーを表示します。分割して比較してください。
  • 自動で判別できる文字コードは UTF-8 と Big5 だけです。Shift_JIS などのファイルは先にUTF-8で保存し直してください。

よくある質問

変更された行なのに語句が強調されないのはなぜですか?

ペアの2行で共通部分が長い方の行の30%未満の場合は、ほぼ書き直しとみなします。語句単位で色を付けても全体が塗られるだけなので、削除行と追加行として表示します。

「空白の違いを無視」では何が無視されますか?

連続するスペースやタブは1つのスペースとみなし、行頭と行末の空白は無視します。インデントの変更や余分なスペースは差分になりません。空行は1行として数えます。

Word、PDF、Excelのファイルは比較できますか?

直接開けるのはテキストファイル(.txt、.csv、.sql、.json、ソースコードなど)だけです。Word、PDF、Excelは内容をコピーして貼り付けてください。書式は比較しません。

入力したテキストはアップロードされますか?

いいえ。比較はすべてブラウザ内で行い、サーバーへの送信や保存はしません。ページを閉じればテキストは消えます。

コピペ(盗用)チェックに使えますか?

2つの文章のどこがまったく同じかはわかりますが、比較できるのは手元にある2つの文章だけです。ネット上のほかの文章を検索するわけではなく、正式な剽窃チェックツールでもありません。

段落全体が変更として表示されるのはなぜ?

よくある原因は改行の違いです。たとえば片方は一文ごとに改行し、もう片方は段落全体が1行になっている場合です。両方の改行の仕方をそろえるか、「空白の違いを無視」にチェックしてから比較してみてください。

長い文章でも比較できますか?

一般的な文書なら数秒で比較できます。差分が非常に多く、処理時間の上限を超えた場合はお知らせが出るので、範囲を絞るか分割して比較してください。

参考資料