INI / .env Diff

Paste two .env or .ini config files and see exactly what changed — keys added, removed and changed, grouped with a count summary. Optional case-insensitive keys and secret masking. Runs entirely in your browser; nothing is uploaded.

Try:
Config diff

About this tool

INI / .env Diff compares two configuration files — .env dotenv files or .ini/.conf files — and reports exactly which settings changed between them, so you never have to eyeball two configs side by side again.

Paste your first (left / old) file and your second (right / new) file. The tool parses both into key→value pairs and groups every difference into four buckets, relative to the left→right direction:

A one-line count summary sits at the top, e.g.:

Config diff (env) — 1 added, 1 removed, 1 changed, 1 unchanged

Added (1):
  + NEW_FLAG = on

Removed (1):
  - DEBUG = true

Changed (1):
  ~ DB_HOST: localhost -> prod.internal

Unchanged (1):
  DB_PORT

The parser handles real-world config syntax: KEY=VALUE and key = value / key: value pairs, # and ; comments, blank lines, single- and double-quoted values, inline comments, a leading export prefix, and [section] headers (flattened to dotted section.key). Parse format is auto by default (it switches to INI parsing if either file has a [section] header, otherwise treats them as flat .env), or you can force env or ini.

Turn on Ignore key case to treat DB_HOST and db_host as the same key, or Mask secret values to redact values of sensitive-looking keys (names containing SECRET, TOKEN, PASSWORD, KEY, AUTH, …) so the diff can be shared safely. Switch Output to json for a structured { format, summary, added, removed, changed, unchanged } object.

Everything runs locally in your browser via WebAssembly — your files are never uploaded.

Handy for

FAQ

Which file is "old" and which is "new"?

The left file is the old/base one and the right file is the new/compared one. "Added" means a key that appears only on the right, and "removed" means a key that appears only on the left — so the diff always reads as left → right. Swap the two boxes to reverse the direction.

Does it work with .ini / .conf files that have [section] headers?

Yes. In auto mode, the moment either file contains a [section] header the tool switches to INI parsing and reports keys as dotted section.key (e.g. db.host). You can also force it with Parse format → INI. Flat .env files with no sections stay plain KEY names.

How are quotes, comments and `export ` handled?

Wrapping single or double quotes are stripped from values, full-line #/; comments and blank lines are ignored, an inline # … / ; … comment after an unquoted value is dropped, and a leading export prefix (as in export KEY=value) is removed before comparing. So export API_URL="http://x" # dev compares as just API_URL = http://x.

If a key appears twice in one file, which value is used?

The last occurrence wins, matching how shells and dotenv loaders read a file top-to-bottom. Only that final value takes part in the diff.

Are my files uploaded anywhere?

No. The entire diff runs in your browser via WebAssembly — nothing is sent to a server. That's also why Mask secret values is safe to rely on when you paste a real .env: the masking happens locally before anything is shown.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool ini-env-diff "# base
export DB_HOST=localhost
DB_PORT=5432
DEBUG=true
API_TOKEN=dev-token-123456" 'right=DB_HOST=prod.internal
DB_PORT=5432
NEW_FLAG=on
API_TOKEN=prod-token-987654'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/ini-env-diff/?left=%23%20base%0Aexport%20DB_HOST%3Dlocalhost%0ADB_PORT%3D5432%0ADEBUG%3Dtrue%0AAPI_TOKEN%3Ddev-token-123456&right=DB_HOST%3Dprod.internal%0ADB_PORT%3D5432%0ANEW_FLAG%3Don%0AAPI_TOKEN%3Dprod-token-987654&format=auto&ignore_case=true&mask_secrets=true&output=report

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.