Сравнение текстов
Вставьте два блока текста, кода или конфигурации рядом друг с другом и мгновенно увидите, что добавлено, удалено или осталось без изменений. Сравнение выполняется полностью в вашем браузере, поэтому ничего из вставленного никогда не отправляется на сервер.
- Файлы никогда не покидают ваше устройство
- Бесплатно, без регистрации
- Без водяных знаков
- Работает офлайн после загрузки
Как пользоваться: сравнение текстов
- 1
Вставьте обе версии
Вставьте исходный текст в левое поле, а изменённую версию — в правое.
- 2
Выберите режим сравнения
Используйте режим "Строки" для построчного сравнения — стандартное поведение для кода и файлов конфигурации, — или переключитесь на "Слова", чтобы увидеть, какие именно слова изменились в похожих строках.
- 3
Изучите выделенные различия
Добавленный контент выделяется зелёным, удалённый — красным, а всё неизменное остаётся обычным. Скопируйте результат как обычный текстовый diff, если нужно им поделиться.
Как построчное сравнение решает, что считать "одинаковым"
Под капотом выделения diff-инструмент решает конкретную задачу сопоставления: даны два списка строк, нужно найти самую длинную последовательность строк, которая встречается в одном и том же относительном порядке в обоих документах, — всё, что входит в эту общую последовательность, остаётся неизменным, а всё остальное помечается как добавленное или удалённое. Это и есть идея "наибольшей общей подпоследовательности", на которой построен практически любой универсальный алгоритм сравнения, включая тот, что использует сам Git. Она объясняет деталь, которая иначе казалась бы странной: перемещение блока текста из конца документа в начало обычно отображается как большое удаление плюс большое добавление, а не как единая операция "перемещения" — алгоритм ищет только общий порядок, а перенесённый блок нарушает этот порядок и на старом, и на новом месте.
Это также объясняет, почему изменение всего одного символа в длинной строке помечает *всю строку* как изменённую в построчном режиме: алгоритм сравнивает целые строки как неделимые единицы, поэтому "та же строка, кроме одной буквы" и "совершенно другая строка" обрабатываются одинаково — обе не проходят проверку на равенство и обе засчитываются как одна удалённая строка плюс одна добавленная. Именно в этой ситуации помогает переключение в режим слов, поскольку он применяет ту же самую идею на уровень ниже, сравнивая не строки, а отдельные слова.
Когда сравнение по словам полезнее, чем построчное
Построчный режим — правильный выбор по умолчанию для всего, где строка сама по себе является значимой единицей — исходный код, объекты JSON, строки CSV, записи логов, — потому что в таких форматах одна строка обычно представляет одну законченную мысль, и уже сам факт, что конкретная строка изменилась, — полезная информация, независимо от того, какой символ внутри неё сдвинулся. Режим слов становится полезнее в тот момент, когда значимая единица меньше строки: абзац прозы, пункт договора или предложение в длинном документе, где интересное изменение обычно представляет собой одно слово или фразу, а окружающее предложение идентично. Сравнение такого текста построчно пометило бы весь абзац как "изменённый" из-за правки одного слова — технически верно, но не говорит ничего о том, что на самом деле изменилось, пока вы снова не прочитаете весь абзац сами.
Практическое правило: сначала обращайтесь к построчному режиму для всего структурированного или построчно организованного, а переключайтесь на режим слов именно тогда, когда результат построчного сравнения показывает два больших почти одинаковых блока красного и зелёного — этот паттерн сигнализирует, что настоящее различие невелико и скрыто внутри в остальном неизменного текста.
Практическое применение помимо сравнения прозы
Сравнение двух версий исходного кода перед их слиянием — хрестоматийный сценарий использования, но та же техника хорошо применима и далеко за пределами код-ревью: сравнение двух экспортов файла конфигурации, чтобы точно определить, какая настройка изменилась между рабочим и сломанным развёртыванием, проверка двух версий экспорта CSV, чтобы убедиться, что изменились только ожидаемые строки, или сравнение черновика договора с предыдущей версией, чтобы найти каждый пункт, изменённый контрагентом, не перечитывая весь документ рядом ещё раз. В каждом из этих случаев ценность diff-инструмента одна и та же — он превращает вопрос "отличаются ли эти два документа, и если да, то чем именно" из ручного построчного сопоставления в мгновенный визуальный ответ.
Часто задаваемые вопросы
Отправляется ли какой-либо из текстов на сервер?
Нет. Оба текста сравниваются полностью внутри вашего браузера с помощью JavaScript — ничего никогда не отправляется по сети. Вы можете отключиться от интернета после загрузки страницы, и сравнение всё равно будет работать — это можно проверить самостоятельно.
Что именно считается "различием"?
В режиме "Строки" две строки сравниваются как целые единицы — если в строке меняется хотя бы один символ, вся строка помечается как удалённая из исходного текста и добавленная в изменённой версии. В режиме "Слова" та же строка сравнивается пословно, поэтому выделяется только конкретное изменившееся слово, а остальная часть строки остаётся обычной. Пробелы в начале и конце строки, пустые строки и переносы строк в обоих режимах считаются полноценным содержимым — строка, отличающаяся только конечными пробелами, всё равно будет отмечена как изменённая.
Работает ли это для кода, JSON или файлов конфигурации, а не только для прозы?
Да — построчное сравнение — это именно та техника, которую используют системы контроля версий вроде Git, и здесь она работает так же для исходного кода, JSON, YAML, строк CSV, файлов логов или любого другого построчного формата. Режим слов полезнее для прозы, договоров или документации, где значимое изменение обычно представляет собой фразу внутри предложения, а не всю строку целиком.
Может ли инструмент обрабатывать большие документы?
Да. Сравнение документов до нескольких тысяч строк выполняется практически мгновенно. Diff пересчитывается при каждом нажатии клавиши с более низким приоритетом отрисовки, поэтому набор текста остаётся плавным, даже пока сравнивается большой вставленный текст — для очень больших или очень разных документов само сравнение может занять чуть больше времени, но страница никогда не зависнет.
К каким строкам относится счётчик "+N добавлено, −M удалено"?
Он показывает общее количество добавленных и удалённых строк (или слов, в режиме "Слова") по всему сравнению — те же числа, которые вы получили бы, посчитав каждую зелёную и красную строку в результате. Неизменённые строки не учитываются.
Можно ли получить diff в виде обычного текста вместо цветного отображения?
Да. Кнопка "Скопировать diff" копирует текстовую версию с ведущим маркером "+", "-" или пробелом в начале каждой строки (то же соглашение, которое использует Git и большинство консольных diff-инструментов), чтобы вы могли вставить его в письмо, тикет или комментарий к код-ревью.
Вам также может понадобиться
Счётчик слов
Считайте слова, предложения и время чтения прямо во время набора
Форматтер JSON
Мгновенное форматирование, валидация и минификация JSON
Удаление повторяющихся строк
Удаляйте дубликаты, сортируйте и приводите списки в порядок
Конвертер регистра текста
Преобразование текста в любой стиль написания
Счётчик символов
Считайте символы с учётом лимитов платформ
Генератор Lorem Ipsum
Текст-заполнитель абзацами, предложениями или словами