本文へスキップ
kitto works
ツール一覧

テキスト差分比較|2つの文章の違いをハイライト表示

2つのテキストを貼り付けるだけで、追加・削除された箇所をその場でハイライト表示します。行単位・文字単位の切り替え、大文字小文字や空白の違いを無視するオプションにも対応。入力したテキストはブラウザの中だけで処理され、外部には送信されません。

入力したテキストはブラウザの中だけで処理され、どこにも送信されません。

差分結果

追加
0
削除
0
変化なし
0

テキストAとテキストBを入力すると、差分がここに表示されます。

使い方

  1. テキストAに変更前の文章、テキストBに変更後の文章を貼り付けます。
  2. 比較モード(行単位・文字単位)や、大文字小文字・空白を無視するオプションを必要に応じて選びます。
  3. 入力するとその場で差分がハイライト表示されます。緑が追加、赤が削除された箇所です。

計算・変換の根拠

トークン化の単位

「行単位」を選ぶと、テキストを改行(\n)で区切った行ごとに比較します。「文字単位」を選ぶと、文字(コードポイント)ごとに比較します。絵文字のようなサロゲートペア文字も1文字として扱います。

差分アルゴリズム

広く使われているMyersの差分アルゴリズム(jsdiffライブラリ)を使い、テキストAからテキストBへの変換に必要な最小の追加・削除を計算します。この計算はすべてブラウザ内で行われます。

大文字・小文字を無視する

オンにすると、アルファベットの大文字・小文字だけが異なる部分は「変化なし」として扱われます。このとき差分結果に表示される文字の大文字・小文字表記は、テキストB側の表記が使われます。

空白の違いを無視する

オンにすると、行単位モードでは各行の先頭・末尾の空白の違いを、文字単位モードではスペースの種類(半角・全角・タブなど)の違いを無視します。ただし、空白そのものが増えたり減ったりした場合(有無の違い)は、通常どおり追加・削除として検出されます。

追加・削除件数について

差分結果の上部に表示される「追加」「削除」「変化なし」の件数は、行単位モードでは行数、文字単位モードでは文字数を集計したものです。

送信されるデータについて

テキストA・テキストBの内容、比較モード、オプションの設定は、いずれもブラウザの外に送信されません。すべての差分計算はJavaScriptによってお使いのブラウザ内で完結します。

よくある質問

入力したテキストはどこかに送信されますか?

送信されません。差分の計算はすべてお使いのブラウザの中だけで行われ、サーバーへの通信は発生しません。

「行単位」と「文字単位」はどう使い分ければよいですか?

プログラムのコードや箇条書きなど、行の並びに意味がある場合は「行単位」が見やすいです。文章の細かい言い回しの変更や、日本語のように単語の区切りが空白でない文章を比較する場合は「文字単位」の方が変更箇所を細かく特定できます。

大文字・小文字だけが違う場合や、空白だけが違う場合はどう表示されますか?

「大文字・小文字を無視する」「空白の違いを無視する」のオプションをオンにすると、それらの違いは「変化なし」として扱われ、ハイライトされません。オフの場合は通常どおり削除・追加として検出されます。

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

数千行程度のテキストであれば、体感できる遅延なく比較できます。非常に大きなファイル同士の比較には向いていません。

比較の順番を間違えました。入れ替えられますか?

「A・Bを入れ替え」ボタンでテキストAとテキストBの内容を入れ替え、その場で差分を再計算できます。