json → .env · UPPER_SNAKE keys · safe quoting · live

Convert JSON to .env

Generate a dotenv file from a flat JSON object. Keys are upper-snake-cased, values are stringified, and anything with whitespace or special characters is double-quoted.

JSON → ENV
Input
145 B
7 lines
Output
109 B
5 lines
Status
ready
live
Ratio
0.75×
out/in
input · json
output · .env
DATABASE_URL=postgres://localhost:5432/db
API_KEY=sk-1234
DEBUG=true
MAX_RETRIES=3
FEATURES="{\"beta\":true}"
Quick Start

How JSON becomes .env

The root JSON object's keys are normalised into UPPER_SNAKE_CASE. Scalar values are stringified directly; nested objects and arrays are JSON-encoded; values with whitespace or special characters get double-quoted with internal quotes escaped.

  1. 01

    Paste JSON

    Root must be an object — top-level arrays aren't valid dotenv.

    Parsing is strict-but-tolerant — comments and trailing commas are accepted on input where the source format historically permits them; output stays canonical.

    inputstricttolerantliveparse
    in · sourcejson · live
    { "api_key": "sk-..." }
    loaded · parsedtarget · ready
  2. 02

    Keys normalised

    Mixed case and hyphens become UPPER_SNAKE_CASE; anything outside [A-Z0-9_] becomes an underscore.

    Conversion preserves type information where the target supports it (numbers stay numeric, booleans stay boolean) so the destination parser never has to re-coerce.

    keystype-preservinglosslesslivememoised
    case · optionssnake · live
    apiKey → API_KEY
    options applied · liveround-trip
  3. 03

    Values stringified

    Booleans and numbers stay literal; objects and arrays render as JSON; whitespace forces double-quoting.

    Re-encoding is idempotent: running output back through the same converter produces the same bytes, which keeps round-trips git-friendly.

    valuesidempotentround-tripdiff-cleandeterministic
    type · convertedstring · ready
    DEBUG=true
    NOTE="hello world"
    converted · livediff-clean
  4. 04

    Copy or download

    Save as .env or paste into your secret manager.

    Copy writes via navigator.clipboard.writeText; downloads use the target’s native MIME so editors apply the right syntax highlighting on open.

    exportclipboardtarget MIMEblobclient-side
    ✓ · copiedready · done
    ✓ Copied
    shipped · ready to shipsuccess
Pro tips

Converting between formats, safely

Pick the strictest source format

Lossy formats hide bugs. Choose JSON or YAML as your source-of-truth, convert downstream as needed.

Round-trip in CI

If your converter is idempotent, your CI can verify A → B → A equals the original. Catches subtle data loss.

Numbers vs strings differ

YAML/TOML have a number type; CSV doesn’t. Quote IDs in CSV to keep leading-zero values intact.

Watch character encoding

Source format may be Latin-1 / Windows-1252; target should be UTF-8. Convert encoding before structure.

Preserve comments where you can

YAML and TOML support comments. Don’t silently drop them — they often encode intent.

Schema-aware beats blind

Use a schema to guide conversion. Field types, required-ness, and defaults survive better with structure.

Use Cases

When to generate .env

Bootstrap envs, share secrets, swap formats.

Project bootstrap

Seed a new repo's .env.example from a JSON config. Type information survives: numbers stay numeric, booleans stay boolean, strings stay strings. The destination parser doesn't have to re-coerce, which avoids the "'true' becomes "true"" bug class.

round-trip safe

12-factor adoption

Move embedded config out of code and into env vars. Run output back through the inverse converter to verify idempotent round-trips in CI. A → B → A should produce byte-identical input — if it doesn't, you've found data loss.

type-preserving

CI pipelines

Materialise a env file from a JSON secret before tests run. Comments and metadata survive where the target format supports them (YAML, TOML, HCL). The tool doesn't silently drop intent-encoded annotations, which keeps your config self-documenting.

schema-aware

Container builds

Produce a Docker / Compose env_file from JSON config. Pair with a schema (JSON Schema, OpenAPI, Zod, Pydantic) to catch shape drift on either side. Catch breaking changes at conversion time rather than at runtime in production.

lossless

Migrations

Move JSON-shaped settings into a dotenv-only deployment. Output respects target-format conventions: quoting in CSV, indent in YAML, brackets in JSON. Existing parsers don't need patches, and the result drops into legacy pipelines unchanged.

diff-clean

Sharing

Hand teammates a ready-to-source .env from a shared config. Encoding-aware: handles UTF-8 vs UTF-16 vs Latin-1 / Windows-1252 transparently. The character-set surprise that breaks "works on my machine" doesn't apply here.

spec-grade
FAQ

Frequently asked questions

Internal double quotes are escaped with a backslash. The entire value is wrapped in double quotes.
No — they JSON-encode in place. Use JSON to Properties if you need dot-path flattening.
Yes — keys are emitted in the order the JSON object lists them.
They become empty strings, matching dotenv conventions for unset variables.
No. Conversion is entirely local.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!