dmosk / envdiff

Сравнение .env, JSON, TOML и ini по ключам

Выберите формат, вставьте или загрузите два конфига — увидите ключи только слева, только справа и с разными значениями. Всё считается в браузере.

Формат выбирается один для обеих сторон. Ссылка «Поделиться» кладёт оба текста во фрагмент # адреса — на сервер он не уходит, но не делитесь такой ссылкой, если внутри настоящие секреты.

Слева

Справа

Зачем нужен envdiff

  • Логическое сравнение. Сравниваются ключи и значения, а не строки: порядок, комментарии и пустые строки не мешают.
  • Четыре формата. .env, JSON, TOML и ini; вложенные ключи JSON/TOML превращаются в пути вроде db.host.
  • Маскирование секретов. По желанию значения ключей password, token, secret, key показываются как [REDACTED].
  • Только в браузере. Без API: файлы не покидают устройство. Состояние можно передать через фрагмент URL.

Как сравнить конфиги

  1. Выберите формат — он общий для обеих сторон.
  2. Вставьте текст или загрузите файл в каждую панель; обе обязательны.
  3. Нажмите «Сравнить» — появятся ключи только слева, только справа и с разными значениями.
  4. При необходимости включите маскирование и нажмите «Поделиться», чтобы скопировать ссылку с состоянием.

Ключи, форматы и секреты

envdiff сравнивает ключи, а не строки. Форматы не смешиваются: вложенный JSON и TOML разворачиваются в пути через точку, секции ini превращаются в section.key, а .env читается как KEY=VALUE.

Рекомендации:

  • Комментарии, пустые строки и порядок ключей игнорируются.
  • Массивы разворачиваются с индексами, например servers[0].host.
  • Значения сравниваются как текст: число 5432 в JSON и строка 5432 в .env совпадают.
  • Маскирование меняет только отображение: ключи вроде password, token, secret, key показываются как [REDACTED].
  • Для YAML есть yamaster, для поиска утечек — secret-scanner.

Для чего нужен сервис

  • сравнить .env между dev, staging и production;
  • проверить конфиг до и после деплоя;
  • найти ключи, которых нет в одном из окружений;
  • посмотреть правки JSON, TOML или ini без шумного текстового diff;
  • поделиться сравнением по ссылке (без настоящих секретов).

Частые вопросы

Можно сравнить разные форматы?

Нет. Формат выбирается один для обеих сторон — смешивать форматы нельзя.

Важны ли комментарии и порядок?

Нет. Сравниваются только ключи и значения.

Мои данные загружаются на сервер?

Нет. Разбор и сравнение работают в браузере, API нет.

Что делает маскирование?

Значения ключей вроде password, secret, token, key показываются как [REDACTED]; само сравнение идёт по настоящим значениям.

Как показываются вложенные ключи?

Через точку для объектов и таблиц и с индексами для массивов, например db.host или servers[0].