Было
Стало
Что здесь важно знать
Какой режим когда. «По строкам» — для конфигов, логов и форматированного JSON: изменённая строка видна целиком. «По словам» — для текстов и сообщений об ошибках. «По символам» — для токенов, идентификаторов и коротких строк, где различие может быть в одном знаке.
Если всё окрасилось, а на глаз тексты почти одинаковые — почти всегда виноваты невидимые различия: неразрывные пробелы вместо обычных, пробелы в конце строк, похожие, но разные символы (дефис и тире, латинская и русская «с»). Кнопка «Пробелы не важны» быстро скажет, в пробелах ли дело; невидимые символы в строке покажет «Счётчик символов» — открыть его.
Концы строк (CRLF против LF) этот инструмент сравнить не может — и это ограничение браузера, а не наша забывчивость: поле ввода приводит CRLF к LF ещё при вставке, до всякого сравнения. Тексты, различавшиеся только концами строк, здесь честно покажутся одинаковыми. Если подозрение именно на концы строк — это проверяется через «Хеши»: возьмите оба варианта файлами, кнопка «Взять из файла» читает байты как есть.
Подсветка показывает кратчайший путь правок, а не намерение. Алгоритм ищет минимальный набор вставок и удалений. Если в тексте переставили два абзаца, дифф покажет «удалили здесь, добавили там» — он не знает, что это был один перенос. Это свойство всех диффов, включая git.
Два ответа одного эндпоинта — вот первая пара для сравнения: DevTools → Network → запрос → вкладка Response → правый клик → Copy. Два состояния конфига: из репозитория или с серверов. Ожидаемое и полученное из упавшего теста: большинство раннеров печатают оба. Кнопка «Пример» подставляет учебную пару.
Сравнение с большими текстами может сдаться. Посимвольный дифф двух текстов по двести тысяч знаков — это миллиарды сравнений. Через две секунды инструмент останавливает поиск и честно говорит об этом; обычно помогает режим «По строкам» — он на порядки быстрее.
Частые вопросы
Тексты куда-то отправляются?
Нет, сравнение считает библиотека jsdiff, которая лежит на этом же сайте и работает в браузере. Сеть после загрузки страницы не нужна.
Почему дифф не видит разницу в концах строк CRLF и LF?
Поле ввода браузера приводит CRLF к LF ещё при вставке — это ограничение textarea, а не инструмента. Такая разница проверяется через хеши, взяв оба варианта файлами.
Что делать, если всё подсвечено, а тексты на глаз похожи?
Обычно виноваты невидимые различия: неразрывные пробелы, пробелы в конце строк, похожие символы вроде дефиса и тире. Кнопка «Пробелы не важны» быстро покажет, в пробелах ли дело.