テキスト比較
2つのテキストを貼り付けるだけで、追加・削除・変更行と変更箇所を色分け表示。大文字小文字や空白の違いも無視できます。無料・登録不要、データは送信されません。
- 行ごとの差分
- 変更箇所を強調
- 空白・大小文字無視
- 差分だけ表示
比較結果
テキストはブラウザ内で比較され、アップロードも保存もされません。
🔒 計算はすべてブラウザ内で行われ、データがサーバーに送信されることはありません。
こんなときに使えます
- 契約書・文書の修正確認:2つの版の契約書や企画書を比べて、相手がどこを書き換えたかを見つけられます。
- コード・設定ファイル:Git がない環境でも、2つのコードや設定の違いをすぐに比較できます。
- 論文・レポート:修正前後の違いを確かめたり、2つの文章にどれだけ同じ部分があるかを調べたりできます。
- 翻訳・原稿の校正:修正前後の原稿を比べ、「差分だけ表示」をオンにして変更箇所だけを手早く確認できます。
使い方
- 元のテキストを左、変更後のテキストを右に貼り付けるか、「左のファイルを開く/右のファイルを開く」で読み込みます。比較結果はすぐ下に表示されます。
- 赤い背景の「−」は左にだけある行(削除)、緑の背景の「+」は右にだけある行(追加)です。変更された行はペアで表示され、変わった語句が濃い色で強調されます。
- 「大文字小文字を無視」「空白の違いを無視」で重要でない差分を除外できます。長い文章では「差分だけ表示」をオンにすると、同じ部分が折りたたまれます。
使用例
初期表示の例では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行になっている場合です。両方の改行の仕方をそろえるか、「空白の違いを無視」にチェックしてから比較してみてください。
長い文章でも比較できますか?
一般的な文書なら数秒で比較できます。差分が非常に多く、処理時間の上限を超えた場合はお知らせが出るので、範囲を絞るか分割して比較してください。
参考資料
- jsdiff: A javascript text differencing implementation — GitHub
- git-diff Documentation — Git
- Encoding Standard — WHATWG