Options
What is YAML to ENV Converter?
Environment variables stored in .env files are the de facto standard for configuring applications across Node.js (via the dotenv package), Python, Docker, and most backend frameworks. They use a flat KEY=VALUE format with no nesting, which makes them simple but limited. YAML, on the other hand, supports deeply nested structures, arrays, and rich data types — making it a better authoring format for complex configuration. This converter bridges the two worlds by flattening nested YAML structures into .env format. Nested keys are joined with a configurable separator (underscore by default), and values are converted to strings. The tool also applies case conversion (upper case by default) to match the standard environment variable naming convention.
How to Use
- Paste your YAML content into the input area — nested structures and arrays are fully supported
- Configure options: choose a key separator (underscore, double underscore, or dot), case format (upper, lower, or original), array handling (comma-join or indexed keys), and value quoting
- Click 'Convert' to flatten the YAML into .env KEY=VALUE format
- Review the generated environment variable pairs in the output area
- Copy the result and save it as a .env file in your project root
Why Use This Tool?
Tips & Best Practices
- Uppercase with underscore separator is the standard .env convention — most frameworks expect this format
- Use double underscore separator when your YAML keys themselves contain underscores to avoid ambiguity
- Indexed keys (e.g., HOSTS_0, HOSTS_1) work better when array order matters or items contain commas
- Quote all values for maximum compatibility with .env parsers that might misinterpret unquoted special characters
- YAML comments (# lines) are automatically stripped from the output since .env files handle comments differently
Frequently Asked Questions
How are nested YAML keys flattened?
Nested keys are joined with the configured separator. For example, database.host with underscore separator becomes DATABASE_HOST. With dot separator it becomes database.host. This preserves the hierarchy information while creating the flat KEY=VALUE pairs that .env files require.
When should I NOT use this converter?
If your YAML configuration contains deeply nested structures that lose meaning when flattened (e.g., arrays of objects with different schemas), the resulting .env file may be hard to manage. In such cases, consider keeping the YAML format or converting to JSON instead, which preserves structure natively.
Is my data secure?
Yes. All processing happens entirely in your browser. Your YAML content is never sent to any server. No data is collected, stored, or transmitted. You can safely convert configs containing sensitive values like API keys and database passwords.
How are YAML arrays handled?
Arrays can be handled in two ways: comma-separated values (FEATURES=authentication,logging,metrics) or indexed keys (FEATURES_0=authentication, FEATURES_1=logging, FEATURES_2=metrics). Choose the option that best fits your application's needs.
What separator options are available?
You can choose between underscore (_), double underscore (__), or dot (.) as the key separator. Underscore is the most common for environment variables. Double underscore is useful when keys themselves contain underscores. Dot separator creates namespace-style keys like database.host.
Can I convert .env back to YAML?
Not with this tool, but you can use the Dotenv to YAML converter for the reverse operation. That tool parses .env KEY=VALUE pairs and reconstructs nested YAML structure based on key separators.
Real-world Examples
Docker Compose environment variables from YAML
Converting a YAML configuration file into .env format for use with Docker Compose, which reads environment variables from .env files automatically.
database:
host: db.example.com
port: 5432
name: myapp_production
credentials:
username: admin
password: s3cret
redis:
host: cache.example.com
port: 6379
features:
- authentication
- logging
- metricsDATABASE_HOST=db.example.com DATABASE_PORT=5432 DATABASE_NAME=myapp_production DATABASE_CREDENTIALS_USERNAME=admin DATABASE_CREDENTIALS_PASSWORD=s3cret REDIS_HOST=cache.example.com REDIS_PORT=6379 FEATURES=authentication,logging,metrics
Application config from nested YAML to .env
Converting a multi-environment application configuration from YAML to .env for deployment in a Node.js application using the dotenv package.
app:
name: MyAPI
port: 3000
debug: false
allowedOrigins:
- https://example.com
- https://app.example.comAPP_NAME=MyAPI APP_PORT=3000 APP_DEBUG=false APP_ALLOWEDORIGINS=https://example.com,https://app.example.com