{{ summaryTitle }}
{{ summaryValue }}
{{ summaryLine }}
{{ badge.label }}

{{ summaryAnnouncement }}

Environment conversion source and target controls
One document, up to 200,000 characters and 5,000 lines. Source text is never added to the URL.
{{ sourceActionHint }}
Current resolution: {{ resolvedInputLabel }}. Pin a mode when mixed syntax is intentional.
Conversion updates locally as source or options change.
Use literal strings when the destination must preserve dotenv text semantics exactly.
Fallback forms ${VAR:-fallback} and ${VAR-fallback} remain supported.
Last-wins matches common override-style dotenv loading.
{{ summaryLine }}
Two spaces is the neutral default.
Leave off to preserve first-seen key order.
{{ params.sort_keys ? 'Alphabetical output' : 'Source order' }}
Optional and not shareable because prefixes can reveal internal naming.
{{ artifactAnnouncement }}
{{ outputText }}
{{ tableAnnouncement }}
LineKeyTypeStatusPreviewReviewCopy
{{ row.line }}{{ row.key }}{{ row.type }}{{ row.status }}{{ row.preview }}{{ row.risk }}
{{ chartAnnouncement }}

Environment files look like simple key-value lists, yet small syntax choices can change a deployment. A quoted number may need to remain text, a duplicate key may silently override an earlier value, and a variable reference may resolve differently depending on which declarations came first.

There is no single universal .env grammar. Common files use KEY=value; shell exports add export or declare -x; and Compose-style sources may use a colon. Loaders also disagree about comments, quotes, multiline values, type conversion, and interpolation.

  • Parsing decides which lines are valid assignments and how quotes or inline comments affect their values.
  • Expansion replaces references such as $HOST or ${PORT:-5432} from values already retained earlier in the file.
  • Typing decides whether true, null, 8080, arrays, and objects remain strings or become structured values.
  • Rendering expresses the retained values as YAML, JSON, runtime ENV, INI, or Java properties text.

Conversion cannot guarantee that the destination application will interpret the result in the same way. YAML and JSON preserve data types, while process environments fundamentally carry strings. Flattening a nested object into an ENV or properties name also creates a naming convention that the receiving application must understand.

Configuration text often contains credentials. Masking a suspicious preview reduces accidental exposure during review, but the converted output still contains the retained value. Treat every generated artifact as sensitive until duplicate handling, unresolved references, skipped lines, and secret storage have been checked.

How to Use This Tool:

Match the parser to the source before choosing how values should be expanded, typed, and rendered.

  1. Paste text into ENV content or load one local .env or text file no larger than 2 MiB. Source is limited to 200,000 characters, 5,000 lines, and 5,000 assignments.
  2. Choose Input format. Auto detect recognizes shell prefixes first, then Compose-style colon assignments, and otherwise uses dotenv equals assignments.
  3. Set Value handling, Variable expansion, and Duplicate keys before trusting the retained values.
  4. Choose the Output format. Use the advanced controls only when indentation, alphabetical ordering, or a runtime ENV prefix matters to the destination.
  5. Review Conversion ledger for skipped lines, replaced or retained duplicates, unresolved references, and secret-like values before copying Converted config.

Interpreting Results:

The converted text reflects the retained record set after parsing, expansion, duplicate resolution, and optional smart typing. Sorting changes output order only; it does not change parser order or the ledger.

Skipped means a nonblank line had no supported separator or had an invalid environment key. Unresolved means a variable reference had no earlier retained value and was either kept or blanked according to the selected policy.

A Review or High secret signal is not proof that a value is a credential. It is a prompt to inspect the key and value before sharing. Equally, a Clear signal does not prove that the output contains no secret.

Technical Details:

The parser processes normalized lines from top to bottom. Blank lines and full-line comments are ignored. Valid keys begin with a letter or underscore and continue with letters, numbers, or underscores. Unquoted inline comments begin at a hash preceded by whitespace; quoted values may span lines.

Transformation Core:

The retained document passes through an ordered transformation, so changing an early policy can alter every later artifact.

  1. Resolve the input grammar and extract each supported assignment.
  2. Decode quoted escapes. Double quotes support newline, carriage-return, tab, quote, and backslash escapes; single quotes remain literal except for escaped quote and backslash handling.
  3. Expand eligible references from earlier retained values, then apply smart typing when selected.
  4. Resolve duplicate keys using first-wins or last-wins policy.
  5. Render the retained document. Structured formats keep nesting, while ENV, INI, and properties outputs flatten arrays and objects into path-derived names.

Rule Core:

Environment conversion parsing and rendering rules
DecisionExact behavior
Auto detectionThe first active shell prefix selects shell mode; otherwise an early colon before equals selects Compose style; all other sources use dotenv mode.
Expansion orderOnly values retained earlier in the current file are available. Browser and server process environments are never read.
${VAR:-fallback}Uses the fallback when the variable is missing or its retained value is empty.
${VAR-fallback}Uses the fallback only when the variable is missing.
Smart typingRecognizes booleans, null, finite decimal numbers, and valid JSON arrays or objects. Single-quoted values stay strings.
Runtime ENV namesPath parts become uppercase tokens separated by underscores; non-alphanumeric runs also become underscores.
Visible review boundsThe ledger is limited to 200 rows and stored warnings to 50 distinct messages.

Formula Core:

Secret review uses Shannon entropy per character as one prioritization signal. It measures character diversity, not credential validity.

H=− ∑c pc log2 (pc)

A value is high-entropy when it has at least 14 characters and H is at least 3.7 bits per character. A sensitive-looking key plus high entropy is marked High; either condition alone is marked Review. Suspicious previews reveal at most the first and last two characters, but the generated configuration keeps the full value.

Privacy Notes:

The source file and conversion stay in the browser. Source text and the optional runtime ENV prefix are excluded from the shareable URL. Other format settings may appear in the URL, so they should not be used to encode sensitive naming information.

Secret-like previews are masked only in the review ledger. Copied and downloaded configuration still contains the converted values. Move production credentials through the destination's approved secret-management process rather than ordinary files or chat.

Worked Examples:

Earlier variable and duplicate port

With HOST=db, URL=postgres://$HOST/app, PORT=5432, and a later PORT=6432, expansion resolves the URL because HOST appeared first. Last-wins keeps 6432; first-wins keeps 5432. Smart typing emits the retained port as a number in JSON or YAML, while literal mode keeps it as text.

References: