.env Compare & Check

A tool that compares two configuration files, such as .env and .env.example, and lists keys found on only one side, keys defined more than once, and keys with empty values. Values are hidden by default and shown only when you choose. Nothing you enter is sent to a server or saved in browser storage.

Your .env contents are never sent to a server or saved in browser storage. Values are hidden by default.
Supported syntax and limitations
  • KEY=value (an optional leading export is allowed). Keys start with a letter or _ and may contain letters, digits, _, ., and -.
  • An = inside the value is kept as part of the value (only the first = separates key and value).
  • Lines starting with # and blank lines are ignored. Outside quotes, # preceded by whitespace starts an inline comment.
  • In quoted values (" ' `), # is part of the value, and values may span multiple lines.
  • Variable expansion such as ${VAR} and command execution are never performed. Lines that can't be parsed are listed as errors.
Comparison
Copied text never includes values

Enter .env contents on both sides to list missing, duplicate, and empty keys.

How to use

  1. Paste the contents of the two .env files on the left and right, or load the files.
  2. For each key, the status on each side (not defined, empty, or duplicate) is shown.
  3. Use "Show only keys with problems" to filter to keys that are missing, duplicate, or empty.
  4. Press "Show values" to reveal values. "Copy" copies the result without any values.

About this tool

A missing setting in one environment's .env, or a new variable that never made it into .env.example, can cause surprising bugs after deployment. This tool lets you check for missing keys quickly.

Comments and blank lines are ignored. An = inside a value, or a # inside a quoted value, is not treated as a separator. If the same key is defined more than once, every line is shown instead of silently using the last one, and empty values (KEY=) are distinguished from undefined keys. Lines that can't be parsed are listed with their line numbers instead of being ignored.

Variable expansion such as ${VAR} and command execution are never performed. Because the input may contain secrets such as API keys, it's never sent to a server or saved in browser storage.

Enter PORT=3000 and TOKEN= on separate lines on the left, and PORT=8080 on the right. TOKEN is reported as empty on the left and undefined on the right. The different PORT values alone are not considered a problem, helping separate expected environment differences from missing settings.

Copying the report without values is useful for discussing configuration gaps. The input areas still display the original .env text, so inspect those before sharing your screen. Parsing happens locally without expanding variables or running commands.

Frequently asked questions

Can anyone else see my values?

Your input is never sent to a server or saved in browser storage, and values are hidden on screen by default. Closing the page clears everything.

Are keys with different values flagged?

Values normally differ between environments, so different values aren't flagged. Use "Show values" to compare them side by side.

Are multi-line values and quotes supported?

Values wrapped in single quotes, double quotes, or backticks are supported, including values that span multiple lines. Inside double quotes, \n is treated as a line break.