tooly

Сравнить тексты (diff)

Вставьте две версии текста и увидьте, что именно изменилось: добавленное — зелёным, удалённое — красным, со счётчиком изменений. Всё работает в браузере.

Всё работает в браузере — данные никуда не отправляются

Как пользоваться

  1. 1

    Вставьте исходный текст слева и изменённый справа.

  2. 2

    Переключайтесь между сравнением по строкам и по словам.

  3. 3

    Читайте подсвеченные различия.

Когда быстрое сравнение текстов окупается

Большинство правок после внесения становятся невидимыми. Читать две версии бок о бок долго и ненадёжно: люди то и дело пропускают изменённую цифру в цене, исчезнувшее «не» или переставленную дату.

Diff берёт поиск на себя. Типичные случаи, когда он реально экономит время:

  • Проверить, что контрагент поменял в договоре, коммерческом предложении или условиях, прежде чем подписывать.
  • Сравнить две выгрузки одного и того же списка (email-адреса, артикулы, ID), чтобы увидеть, какие записи появились или пропали.
  • Выяснить, почему два конфигурационных файла или два файла .env ведут себя по-разному.
  • Сверить отредактированную статью или перевод с исходным черновиком.

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

Инструмент использует подход на основе наибольшей общей подпоследовательности — то же семейство алгоритмов, что лежит в основе git diff и классического Unix-diff. Он ищет максимально возможный объём текста, общий для обеих версий, оставляет его без изменений, а всё остальное помечает как удалённое из исходного текста или добавленное в новой версии.

Результат пересчитывается прямо во время ввода или вставки, так что можно поправить что-то в любом из полей и сразу увидеть эффект. Удалённые фрагменты показываются красным и зачёркнутыми, добавленные — зелёным, а остальное — обычным текстом моноширинным шрифтом, чтобы выравнивание в коде и таблицах оставалось читаемым.

Счётчик над результатом означает немного разное в каждом режиме:

  • В режиме «По строкам» считаются строки: +4 / −2 значит, что добавлены четыре строки и удалены две. Отредактированная строка учитывается один раз как удалённая (старая версия) и один раз как добавленная (новая).
  • В режиме «По словам» считаются не отдельные слова, а изменённые фрагменты. Переписанная фраза из шести слов, стоящая в одном месте, засчитывается как одно удаление и одно добавление.

Сравнение по строкам и по словам на практике

Режим «По строкам» считает каждую строку неделимой единицей. Это правильная модель для всего, где строка имеет смысл сама по себе: исходный код, строки CSV, лог-файлы, списки имён, настройки YAML или .ini. Режим при этом строгий: пробел в конце строки или табуляция вместо пробелов делают её другой строкой.

Режим «По словам» разбивает текст на слова и знаки препинания и сравнивает уже их. Для обычной прозы он намного удобнее: там целый абзац часто записан одной длинной строкой, и построчное сравнение сообщило бы лишь «этот абзац изменился». В режиме по словам видно, какие именно слова заменены. Он и более снисходителен: различия только в пробелах, например двойной пробел между предложениями, в основном игнорируются.

Хорошая привычка — начать с режима «По строкам», чтобы увидеть, где находятся изменения, а затем переключиться на «По словам» и прочитать, что именно поменялось внутри длинной строки.

Как получить чистый и понятный результат

Большинство запутанных диффов возникает из-за шума форматирования, а не из-за реальных правок. Перед сравнением стоит проверить несколько вещей:

  1. Переносы строк. В тексте, скопированном из PDF или письма, часто встречаются жёсткие переносы посреди предложений. Если одна версия разбита на строки, а другая нет, режим по строкам пометит изменённым всё подряд. Используйте режим по словам или сначала уберите переносы.
  2. Регистр букв. Сравнение чувствительно к регистру, поэтому «Счёт» и «счёт» — разные слова. Если регистр для вас не важен, приведите оба текста к одному виду с помощью инструмента «Изменить регистр текста» перед вставкой.
  3. Отсортированные и неотсортированные списки. Diff учитывает порядок. Если два списка содержат одни и те же элементы в разном порядке, перемещения будут показаны как удаления и добавления. Если вас интересует только состав, сначала отсортируйте оба списка одинаково.
  4. JSON и минифицированные данные. Минифицированный JSON-документ — это одна огромная строка. Отформатируйте обе версии в «JSON форматирование и валидация» с одинаковым отступом и сравнивайте построчно: каждый ключ окажется на своей строке, и изменения станут очевидны.
  5. Типографские кавычки и тире. Текстовые редакторы заменяют " на типографские кавычки, а - — на короткое тире. На глаз они выглядят одинаково, но это разные символы, и они попадут в изменения.

Объём и конфиденциальность

Оба текста остаются на странице. На сервер ничего не отправляется, поэтому сравнение неопубликованного договора, внутреннего исходного кода или файла с данными клиентов ничем не отличается от сравнения двух списков покупок. При закрытии вкладки всё стирается.

Скорость зависит от вашего устройства и от того, насколько сильно различаются тексты. Несколько тысяч строк сравниваются мгновенно; десятки тысяч сильно изменённых строк могут обрабатываться несколько секунд. Если работа замедлилась, сравнивайте только нужный фрагмент или используйте режим по строкам — в нём гораздо меньше единиц для сопоставления, чем в режиме по словам.

Вопросы и ответы

Текст загружается на сервер?

Нет. Сравнение выполняется в браузере.

Строки или слова — что выбрать?

Строки — для кода, логов и списков; слова — для прозы, где чуть изменилось предложение.

Пробелы учитываются?

Да, по умолчанию считается каждый символ, поэтому пробелы в конце строк тоже показываются как изменения.

Можно сравнивать файлы?

Вставьте их содержимое. Очень большие файлы (десятки тысяч строк) могут обрабатываться чуть дольше.

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