Сравнение текстов (Diff Checker)

Сравнивайте два текста или фрагмента кода построчно. Добавленные, удалённые и изменённые строки подсвечиваются вплоть до конкретных отличающихся слов.

Работает в браузереБез регистрацииНичего не загружается

Вставьте текст в оба поля, чтобы увидеть различия.

Как пользоваться: Сравнение текстов (Diff)

  1. Вставьте исходный текст слева, а изменённый справа или откройте два файла.
  2. Сравнение обновляется по мере ввода. Выберите вид Бок о бок или Единый.
  3. Отметьте Игнорировать пробелы, Игнорировать регистр или Игнорировать пустые строки, чтобы скрыть шум вроде смены отступов.
  4. Используйте Скрыть неизменённое, чтобы сосредоточиться на изменениях с тремя строками контекста вокруг каждого.
  5. Нажмите Копировать как патч или Скачать .diff, чтобы получить стандартный unified diff, который применяется через git apply или patch.

Как работает сравнение

Инструмент разбивает оба текста на строки и запускает алгоритм Майерса — тот же алгоритм O(ND), что используют git diff и GNU diff. Он находит кратчайшую последовательность вставок и удалений, превращающую исходный текст в изменённый, поэтому результат показывает минимально возможное число изменённых строк. Одинаковые строки в начале и конце пропускаются заранее, так что даже файлы на тысячи строк сравниваются почти мгновенно.

Когда удалённая и добавленная строки стоят рядом, они объединяются в изменённую строку и сравниваются ещё раз пословно. Реально изменившиеся слова подсвечиваются ярче, поэтому переименованная переменная или исправленное число сразу заметны даже в длинной строке.

Бок о бок или единый вид

Вид Бок о бок показывает исходник слева и новую версию справа с номерами строк для обеих. Это самый удобный вид для проверки текстов, конфигов и небольших правок кода. Единый вид чередует удалённые (-) и добавленные (+) строки в одной колонке — этот формат используют инструменты код-ревью и патч-файлы.

Формат unified diff (патч)

Экспортируемый патч соответствует формату diff -u: заголовок ---/+++, затем блоки (hunks), начинающиеся с @@ -l,s +l,s @@, где l — номер первой строки, а s — число строк блока в каждом файле. Каждый блок содержит три строки неизменённого контекста, поэтому его можно применить через patch -p0 или git apply, даже если соседние строки сместились.

Когда использовать опции игнорирования

  • Игнорировать пробелы считает строки равными, если они отличаются только пробелами или табуляцией. Полезно после смены отступов или замены табов на пробелы.
  • Игнорировать регистр удобно для SQL, HTML и логов, где регистр не важен.
  • Игнорировать пустые строки скрывает строки, добавленные или удалённые только ради отступов.

Часто задаваемые вопросы

Загружается ли мой текст куда-либо?
Нет. Сравнение полностью выполняется в браузере на JavaScript. Ничего из вставленного не отправляется на сервер, поэтому можно спокойно сравнивать приватный код, договоры или конфиги.
Насколько большими могут быть тексты?
Файлы в десятки тысяч строк сравниваются на обычном ноутбуке меньше чем за секунду. Поскольку сложность алгоритма растёт с числом различий, дольше всего обрабатываются два огромных, полностью разных файла.
Можно ли сравнить два файла, не вставляя текст?
Да. Используйте кнопки Открыть файл над каждым полем, чтобы загрузить локальный файл. Файл читается браузером и никуда не загружается.
Почему строка показана как удалённая и добавленная, а не изменённая?
Строки объединяются как «изменённые», только когда блок удалённых строк стоит непосредственно рядом с блоком добавленных. Если у двух строк очень мало общего текста, пословная подсветка пропускается, потому что она была бы шумнее, чем показ всей строки как изменённой.
Как сравнить JSON-объекты?
Используйте инструмент JSON Diff. Он сравнивает разобранную структуру, поэтому порядок ключей и форматирование не создают ложных различий, и показывает точные пути изменений.

Похожие инструменты