Сравнение текстов
Точно видно, что изменилось между двумя версиями.
- Полностью бесплатноБез аккаунта, без дневных лимитов, без платных тарифов.
- Ничего не загружаетсяФайлы обрабатываются на вашем устройстве и не попадают на сервер.
- Результат без подвохаБез водяных знаков, без принудительного ухудшения качества, без ограничения размера.
- Обновления на видуКаждое исправление и каждый новый инструмент записаны на странице изменений.
Что делает этот инструмент
Вставьте одну версию слева, другую справа — какая сторона какая, решаете вы, — или перетащите файл в любое из полей, и различия появятся на месте полей: удалённые строки подкрашены красным слева, добавленные — зелёным справа, а внутри изменённой строки отмечены именно те слова, которые отличаются. Построчное сравнение устроено так же, как в git: строки, встречающиеся по одному разу с каждой стороны, служат якорями, а промежутки заполняет алгоритм Майерса, поэтому журнал на 100 000 строк с несколькими правками сравнивается за доли секунды на вашем устройстве.
Два вида, три точности. «Рядом» ставит версии в две колонки с собственной нумерацией строк; «Единый» — одноколоночный формат git и инструментов ревью кода с префиксами − и +. Точность определяет, как подсвечивается изменённая строка: «Строка» выделяет всю строку, «Слово» — отличающиеся слова (по умолчанию), «Символ» — отдельные символы, что нужно для хешей, идентификаторов и чисел. Ничего не покидает браузер: без загрузки, без сохранённой ссылки, без аккаунта.
Как пользоваться
Введите или вставьте текст в оба поля либо нажмите «Выбрать файл» с любой стороны — имя файла появится в заголовке этой стороны и в заголовке diff, так что помнить, какой файл куда попал, не нужно. Результат занимает место полей; «Правка» возвращает их, а двойной щелчок по строке результата сразу переводит к этой строке для правки. «Поменять» меняет стороны местами, «Загрузить пример» заполняет оба поля короткой конфигурацией, чтобы показать, как выглядит результат. Панель под полями содержит переключатели: «Без учёта регистра» считает A и a одинаковыми; «Без учёта пробелов» сжимает последовательности пробелов и табуляций и игнорирует пробелы в начале и конце строки — то, что нужно для переформатированного кода; «Только изменения» сворачивает одинаковые строки до трёх строк контекста с каждой стороны, а полоса между ними разворачивается по щелчку.
Строка над результатом показывает число добавленных и удалённых строк и количество блоков изменений. ‹ › переходят от блока к блоку — клавиши n и p делают то же, когда результат в фокусе, — и блок, на который вы перешли, получает жёлтую метку в колонке номеров строк. «Копировать diff» помещает стандартный unified diff в буфер обмена; «Скачать .diff» сохраняет тот же текст файлом, который принимают git apply и patch. Если тексты в сумме больше 2 МБ, вместо пересчёта при каждом нажатии появляется кнопка «Сравнить».
Какие файлы можно сравнивать
Любые, внутри которых текст. Документы и заметки: .txt, .md, .rtf как простой текст, субтитры .srt или .vtt. Выгрузки данных: два файла JSON, два CSV или TSV, XML и YAML — самый быстрый способ увидеть, что изменилось между двумя ответами API или двумя дампами базы. Конфигурация: .ini, .toml, .env, .properties, .conf, Dockerfile, конфиг nginx или Apache — параметр, сломавший развёртывание, сразу бросается в глаза. Исходный код на любом языке: .js, .ts, .py, .go, .java, .c, .cpp, .rs, .php, .sql, .sh, а также .html и .css. Патчи и журналы: .diff, .patch, .log. Word, PDF и Excel — не текст: их содержимое упаковано в двоичный контейнер, поэтому здесь они отклоняются, а не выводятся как мусор; сначала экспортируйте их в простой текст или CSV.
Что стоит знать
Diff — это выбор, а не факт: если блок строк можно объяснить и как перемещённый, и как удалённый и добавленный заново, любой алгоритм выбирает одно прочтение, и два инструмента могут показать одну и ту же правку по-разному. Этот инструмент предпочитает прочтение, при котором уникальные строки остаются выровненными, — того же ждут от git. «Без учёта пробелов» сравнивает строки со сжатыми пробелами, но в результате показывает исходные отступы. Очень длинные строки — минифицированный JavaScript, экспорт JSON в одну строку — длиннее 4000 символов сравниваются целиком: пословное сравнение строки в 200 КБ не даст ничего читаемого. Таблица результата показывает до 8000 строк; дальше включите «Только изменения» или скачайте .diff — он всегда полный. Файлы проверяются перед загрузкой: двоичное содержимое и файлы больше 20 МБ отклоняются с сообщением, а не выводятся как мусор.
Немного истории: откуда взялся diff
Программа diff появилась вместе с Unix в 1974 году; её написали Дуглас Макилрой и Джеймс Хант, и её формат вывода — строки с префиксами < и > — до сих пор печатает команда diff. Единый (unified) формат с префиксами − и + и заголовками блоков @@ предложил Уэйн Дэвисон в 1990 году, его принял GNU diff, и он стал языком патчей: именно его показывают git show, pull request на GitHub и все инструменты ревью кода. Юджин Майерс опубликовал алгоритм различий O(ND) в 1986 году; он находит кратчайший сценарий правок и лежит в основе GNU diff, git и большинства редакторов. Брэм Коэн описал вариант patience около 2004 года — привязка к строкам, встречающимся ровно один раз с каждой стороны, затем сравнение промежутков, — потому что на реальном коде он даёт результат, который легче читать. Этот инструмент использует якоря patience с алгоритмом Майерса внутри промежутков и записывает единый формат для копирования и скачивания.
Где это нужно
Проверить, что коллега изменил в договоре или регламенте, прежде чем согласовать; сравнить два экспорта конфигурации и найти параметр, сломавший развёртывание; сопоставить два журнала — удачного и неудачного запуска; сверить сгенерированный файл с предыдущей версией; убедиться, что перевод сохранил каждую строку оригинала. Если нужны подсчёты, а не различия, Счётчик слов покажет слова, символы и время чтения; тексты, различающиеся только письменностью, Конвертер китайского приведёт к одному виду до сравнения. Скачанный здесь .diff применяется через git apply или patch в любой системе.
Частые вопросы
Мой текст куда-то загружается?
Нет. Сравнение выполняется в браузере, ничего не отправляется, не сохраняется и не публикуется по ссылке. Закройте вкладку — и всё исчезнет.
Что именно делает «Без учёта пробелов»?
При сравнении последовательности пробелов и табуляций считаются одним пробелом, а пробелы в начале и конце строки отбрасываются. В результате по-прежнему видны исходные отступы. Правки, меняющие только отступы, исчезают из diff.
Можно сравнить два файла, а не вставлять текст?
Да. Нажмите «Выбрать файл» с каждой стороны или перетащите файл в поле. Подходит любой текстовый файл: .txt, .md, .json, .csv, .log, исходный код. Двоичные файлы и файлы больше 20 МБ отклоняются.
Какие типы файлов можно сравнивать?
Любой текстовый файл: .txt, .md, .json, .csv, .xml, .yaml, .ini, .env, .log, .diff и исходный код на любом языке. Word, PDF и Excel — двоичные контейнеры, они отклоняются: сначала экспортируйте их в простой текст или CSV.
Что за .diff можно скачать?
Стандартный unified diff — формат git и patch. Команда git apply changes.diff на исходном файле даёт изменённую версию.
Почему подсветка меняется при переключении на «Символ»?
Точность «Слово» выделяет слова целиком; «Символ» — только отличающиеся символы. Для изменённого идентификатора или хеша посимвольный вид точнее; для обычного текста пословный читается легче.