ENV compare
Missing, extra, duplicate and similar keys, names only.
Questions
What does this tool do?
ENV compare puts a .env next to its .env.example and lists what differs by name: keys the example has and the .env is missing, keys the .env has that the example does not, keys written twice in one file, and names that are almost the same — a typo away from a match. Only the names are read; the values in your .env are dropped as each line is parsed and appear nowhere.
Where do the values in my .env go?
Nowhere. The parser keeps the key of each KEY=value line and discards the value as it goes; the lists, the report and the page hold names only. The text stays in the field you pasted it into until you clear it or leave.
What do the four lists mean?
Missing: in .env.example, not in .env — something the app expects that is not set. Extra: in .env, not in the example — set but undocumented, or a leftover. Duplicate: the same key twice in one file; the last one usually wins, silently. Similar: a missing and an extra name within two edits of each other, most often a typo.
Which .env syntax does it read?
KEY=value lines, with or without export in front, quoted or not, with comments after # and blank lines between. A bare KEY with no = counts as a key too. Anything else is counted as a line it could not read.
Is the comparison case-sensitive?
Names are compared exactly, case and all: DATABASE_URL and database_url are two keys. The similar list ignores case when it measures the distance, so those two show up there as a pair.
Why compare with .env.example?
The example is the list of what the app needs, committed without values; the .env is what this machine has. Comparing the two after a pull, a deploy or a teammate's change shows the variable you forgot to set before the app fails on it.
