本文へスキップ
App Museum
English

テキスト差分比較

2つのテキストを行単位で比較し、追加・削除された行と行内の変更箇所を色と記号で表示します。unified形式でコピーできます。

変更前と変更後のテキストを入力すると、差分がここに表示されます。

使い方

「変更前」と「変更後」にテキストを貼り付けると、行単位の差分がすぐ下に表示されます。比較を始めるボタンはなく、入力や設定を変えるたびに結果が更新されます。追加された行は +、削除された行は - の記号と色で区別され、追加・削除・変更なしの行数も確認できます。各行には変更前と変更後の行番号が並びます。

  • unified形式でコピー:差分をそのままレビューコメントやメモへ貼り付けられます。差分がないときは押せません。
  • 入れ替え:変更前と変更後のテキストを入れ替えます。貼り付ける欄を逆にしてしまったときに使います。
  • クリア:両方の入力欄を空にします。

片方だけにテキストがある場合は、すべての行が追加または削除として表示されます。

どんな場面で使うか

  • 修正前と修正後の原稿や契約書の文面を並べて、どこが変わったかを確かめる
  • 設定ファイルや環境変数の一覧を、動く環境と動かない環境で見比べる
  • コピーして編集したコードやSQLが、元のものとどこで違うかを確かめる
  • 2つのログやCSVの出力から、増えた行と消えた行を拾う

具体例

変更前に次のテキストを入れます。

りんご 3個
みかん 5個
バナナ 2本

変更後に次のテキストを入れます。

りんご 3個
みかん 8個
バナナ 2本
ぶどう 1房

結果は「追加 2 行、削除 1 行、変更なし 2 行」です。書き換えた行は、削除1行と追加1行として数えます。「みかん」の行では 5 と 8 だけが濃い色になります。「unified形式でコピー」で得られる内容は次のとおりです。

--- before
+++ after
@@ -1,3 +1,4 @@
 りんご 3個
-みかん 5個
+みかん 8個
 バナナ 2本
+ぶどう 1房

比較のしかた

2つのテキストに共通する行をできるだけ多く残すように並べ、残りを削除行と追加行として表示します。行を別の位置へ移動した場合は、元の位置の削除と移動先の追加として表示されます。

削除行と追加行が続いている箇所では、同じ順番の行どうしを文字単位で比べ、変わった部分だけを濃い色で示します。絵文字や濁点付きの結合文字は、見た目の1文字をひとまとまりとして扱います。共通する文字が短い方の行の半分に満たない場合は、行内の強調を省いて行全体を色分けします。長い行の変更が非常に多いときも、途中から行内の強調を省きます。

改行コードの CRLF、CR、LF は同じ改行として扱います。末尾の改行の有無は行の比較に含めず、違いがあるときだけ注記を表示します。

  • 空白の違いを無視:スペース、タブ、全角スペースなどの空白文字をすべて取り除いた状態で行を比べます。インデントの変更だけでなく、単語の間の空白の有無も同じとみなします。
  • 大文字と小文字を区別しない:Hello と hello を同じ行として扱います。

無視する設定によって同じとみなされた行は、1列の表示では変更後のテキストで、左右に並べる表示ではそれぞれの側の元のテキストで表示されます。設定を有効にして差分がなくなった場合は「無視する設定のもとでは差分はありません。」と表示されます。

左右に並べて表示

行数の下の「表示」で、「1列」と「左右に並べる」を切り替えられます。最初は「1列」で、すべての行を差分の順に1列で並べます。「左右に並べる」では、左に変更前、右に変更後のテキストを、それぞれの行番号と +・- の記号つきで並べます。

  • 変更のない行は、左右の同じ高さに並びます。
  • 削除行と追加行が続いている箇所では、同じ順番の削除行と追加行を向かい合わせます。行内で変わった文字を強調するのと同じ組み合わせです。
  • 片側の行のほうが多い場合、余った行の向かいは灰色の空欄になります。
  • 画面の幅が狭いときは、左右の欄の幅を保ったまま、差分の枠を横にスクロールして読みます。

表示を切り替えても、畳んだ部分と開いた部分はそのままで、行数とコピーされる内容も変わりません。表示の選択は保存されず、ページを再読み込みすると「1列」に戻ります。

変更のない行を畳む

長いテキストでは、変更から4行以上離れた変更なしの行が、「変更のない 12 行を表示」のような1行に畳まれます。変更の前後3行は、unified形式の文脈と同じく、畳まずに残します。畳んだ行を押すと、その部分の行が表示されます。

「変更のない行を畳む」のボタンは、畳める行があるときだけ、行数の下に表示されます。押して解除するとすべての行を表示し、もう一度押すと、開いた部分も含めて畳み直します。解除したままにすると、入力や比較オプションを変えてもすべての行を表示します。畳んでいるときに入力や比較オプションを変えると、開いた部分も畳み直します。

  • 隠れる行が1行だけになる箇所は畳みません。
  • 差分がないときは、変更なしの行も畳まずにすべて表示します。
  • 無視する設定によって同じとみなされた行も、変更なしの行として畳みます。
  • 畳んでいても、追加・削除・変更なしの行数と、コピーされる内容は変わりません。

unified形式の読み方

  • --- before と +++ after は、変更前と変更後を示す見出しです。ファイル名ではなく、常にこの名前で出力します。
  • @@ -1,3 +1,4 @@ は、変更前の1行目から3行分と、変更後の1行目から4行分を示す範囲です。
  • 行頭が空白の行は変更なし、- は削除、+ は追加です。
  • 変更箇所の前後3行を文脈として含めます。離れた変更は別々の範囲に分かれます。

入力データの扱い

比較はすべてこのブラウザ内で行います。入力したテキストはサーバーへ送信されず、保存もされません。ページを再読み込みすると入力は消えます。コピーした差分は、端末のクリップボードに入るだけです。

FAQ

比較できるテキストの大きさに上限はありますか?

片側につき 2,000 行、100,000 文字までです。ブラウザが固まるのを防ぐための上限で、超えた場合は差分を計算せずにエラーを表示します。文字数は内部の符号単位で数えるため、絵文字などは 2 文字分になることがあります。大きなテキストは分割して比較してください。

見た目が同じなのに差分として表示されます

行末の空白、タブと空白の違い、全角と半角、合成済み文字と結合文字(たとえば「が」と「か+濁点」)の違いが原因のことがあります。空白が理由であれば「空白の違いを無視」を有効にしてください。文字の正規化は行いません。

単語単位や文字単位で比較できますか?

比較の単位は行です。行の中の違いは、削除行と追加行が対になった箇所で文字単位に強調します。1行に長い文章が入っている場合は、あらかじめ文ごとに改行を入れると、変わった箇所を追いやすくなります。

ファイルを選んで比較できますか?

ファイルの読み込みには対応していません。エディターなどでファイルを開き、内容をコピーして貼り付けてください。

コピーした差分はパッチとして適用できますか?

--- / +++ の見出しと @@ の範囲、前後 3 行の文脈を含む unified 形式です。末尾に改行がない最終行の直後には \ No newline at end of file を付けるため、無視する設定を使わなければ、変更前のテキストに適用して変更後のテキストを再現できます(改行コードは LF として扱います)。無視する設定を有効にした場合は元のテキストと厳密には一致しないことがあるため、確認用として使ってください。末尾の改行だけが違う場合は差分なしとして扱い、コピーする内容はありません。

比較前に余分な空白を整えたい場合は?

文章整形ツールで空白と空行を整えてから比較すると、意味のある変更だけを追いやすくなります。

種別
ユーティリティ
カテゴリ
テキスト
タグ
text
diff
compare
writing
  • 全角・半角変換ツール

    英字・数字・記号・スペース・カタカナを全角と半角のあいだで一括変換。種類ごとに向きを選べるので「英数字は半角、カナは全角」も一度でそろえられます。

    ユーティリティテキストtextzenkakuhankakufullwidthhalfwidthkatakanaconverterwriting
  • 大文字・小文字変換ツール

    テキストを大文字・小文字・タイトルケースや、キャメルケース・パスカルケース・スネークケース・コンスタントケース・ケバブケースにリアルタイム変換。9つの結果を表に並べて一度に見比べられ、複数行は1行ずつ変換し、使う結果だけを行ごとにコピーできます。

    ユーティリティテキストtextcasewritingconverter
  • ひらがな・カタカナ変換ツール

    ひらがなをカタカナに、カタカナをひらがなに一括変換。両方を入れ替える変換や、半角カタカナの全角カタカナ化・ひらがな化、濁点が分かれた文字にも対応します。フリガナ欄の指定に合わせるときに。

    ユーティリティテキストtexthiraganakatakanakanafuriganaconverterjapanesewriting