100 % local: tus datos nunca salen de tu navegador

.env a JSON — ajustes que tu código sí lee

Convierte un archivo .env en JSON. Comillas, comentarios y export están resueltos: los ajustes llegan como objeto que tu app o tu CI lee directamente.

Instantáneo Privado Cero cookies
Indentación
Invertir: JSON → .env

Entrada .env

Salida JSON

Qué hace esta herramienta

Un archivo .env se vuelve un objeto JSON plano.

# servicio
export PORT=8080
NAME="Ada Lovelace"
EMPTY=
{
  "PORT": "8080",
  "NAME": "Ada Lovelace",
  "EMPTY": ""
}

Las líneas de comentario y las vacías se saltan, un export inicial se quita, y las comillas alrededor de un valor se van con él. Entre comillas dobles, \n y \t pasan a ser salto de línea y tabulación; entre comillas simples todo queda literal, como en un shell.

Una variable puesta dos veces se rechaza

PORT=8080
PORT=3000
Duplicate variable "PORT" on line 2: it already has a different value

Un shell se queda con la última asignación y no dice nada: el primer valor simplemente desaparecía. En un .env fusionado, editado y copiado entre entornos, ese silencio sale caro: lees el archivo, ves PORT=8080 arriba, y el proceso corre en 3000. Ahora la herramienta se detiene y nombra la variable y la línea. Dos asignaciones idénticas no son la confesión de nada y siguen pasando. Era un defecto real, encontrado al escribir esta página y corregido.

Todo es cadena

ID=007
ACTIVE=true
COUNT=3
{
  "ID": "007",
  "ACTIVE": "true",
  "COUNT": "3"
}

Una variable de entorno es texto: eso es lo que el sistema guarda y lo que process.env devuelve. Tipar aquí COUNT como número sería una suposición, y tipar ID así le costaría sus ceros. La conversión conserva el texto, y el tipado se queda donde se conoce el significado: en tu código.

Lo que el formato no lleva

  • Expansión. PATH=$HOME/bin se queda en $HOME/bin. Lo que valga $HOME depende de una máquina que esta página no ve.
  • Anidamiento. .env es una lista plana de nombres y valores; no hay secciones ni estructura que encontrar.
  • Un comentario tras un valor entrecomillado. A="a #b" conserva su almohadilla, que está dentro de las comillas. Tras un valor desnudo, # abre un comentario y se corta.
  • Cualquier nombre. Un nombre se hace de letras, cifras, _ y ., y no empieza por cifra: la regla que aplica el propio shell. Lo demás se rechaza nombrándolo, en vez de escribirse en un JSON que ningún .env podría recoger otra vez.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Por qué se rechaza una variable puesta dos veces?
Porque uno de los dos valores desaparecía sin decir nada. Un shell se queda con la última asignación, así que la herramienta hacía lo mismo —y un `.env` con `PORT` en la línea 3 y otra vez en la 40 suele delatar una fusión mal hecha, no una decisión—. Ahora la conversión se detiene y nombra la variable y la línea. Repetir el mismo valor no cambia nada, así que eso sigue pasando.
¿Por qué `PORT=8080` es una cadena en el JSON?
Porque una variable de entorno es texto: es todo lo que el sistema operativo guarda. `8080`, `true` y `007` entran como cadenas y salen como cadenas; `process.env.PORT` también lo es. Un conversor que las tipara decidiría por ti, y de paso convertiría en número un identificador con ceros.
¿Se expande `$HOME`?
No. `PATH=$HOME/bin` te devuelve la cadena `$HOME/bin`, tal como está escrita. La expansión es cosa del shell, depende de un entorno que esta página no ve, y adivinarla pondría en tu JSON un valor que nunca existió en tu archivo.

Convertidores relacionados