Collez le fichier et les noms requis. Le tableau masque par défaut les valeurs semblant sensibles, mais le JSON copié contient les valeurs originales.
Fonctionne localement dans votre navigateurFacultatif : un nom de variable par ligne. Les noms manquants sont signalés comme des erreurs.
Les clés de type secret sont masquées par défaut. Toutes les analyses restent dans votre navigateur.
Cette page lit le contenu d’un fichier .env ligne par ligne, liste les variables trouvées et signale les noms invalides, les clés en double, les variables requises absentes et les secrets probables. Collez le fichier, indiquez les noms qui doivent être présents, puis cliquez sur Analyser et valider. Tout se passe dans le navigateur : lors des tests, l’analyse n’a émis aucune requête réseau, un fichier qui ne doit pas quitter votre machine peut donc être vérifié ici.
Le résultat est un tableau clé, valeur, ligne et classement, une ligne de compteurs et une liste de résultats. Les valeurs dont le nom semble contenir un secret restent masquées en •••••••• jusqu’à ce que vous cochiez Afficher les valeurs dans le tableau analysé, mais Copier JSON écrit toujours les valeurs telles qu’elles figurent dans le fichier : considérez ce presse-papiers comme sensible.
Les lignes vides et celles dont le premier caractère visible est # sont ignorées, et le préfixe export est supprimé : export API_URL=... et API_URL=... se comportent donc de la même façon. La clé est tout ce qui précède le premier =, sans espaces autour, et doit commencer par une lettre ou un souligné puis continuer par des lettres, des chiffres ou des soulignés : _PRIVATE est acceptée, 9LIVES et A-B sont signalés comme noms invalides. La valeur est le reste de la ligne. Une valeur entre guillemets garde son contenu : les guillemets doubles décodent \n, \r, \t, \" et \\, les guillemets simples ne traitent que \' et \\ ; une valeur sans guillemets perd un « # commentaire » final et les espaces sont coupés. Un # sans espace devant reste dans la valeur (A=a#b donne a#b) et les références ne sont pas développées : A=$HOME reste $HOME.
Quand une clé apparaît deux fois, les deux lignes sont listées et la dernière valeur est celle qui part dans le JSON, comme l’indique l’avertissement. Les clés distinguent majuscules et minuscules : A et a sont deux variables différentes. Les fins de ligne Windows et les espaces superflus se lisent comme un fichier LF propre, et le numéro de ligne compte toutes les lignes physiques du fichier, y compris celles qui sont ignorées.
La décision vient du nom, pas de la valeur. Les noms contenant password, passwd, pwd, passphrase, secret, token, api_key, access_key, ssh_key, signing_key, encryption_key, private, credential, dsn ou webhook, ainsi que ceux qui commencent par auth ou contiennent _auth, sont classés sensibles. Lors des tests, cela couvrait PWD, MYSQL_PWD, ACCESS_KEY, AWS_ACCESS_KEY_ID, SSH_KEY, SENTRY_DSN, SLACK_WEBHOOK_URL, ENCRYPTION_KEY et SIGNING_KEY, tandis que AUTHOR et AUTHORITY restaient visibles car ils n’ont que les lettres de auth.
Comme le test porte sur le nom, les secrets aux noms anodins passent au travers : DATABASE_URL, MONGODB_URI, REDIS_URL et STRIPE_SK n’ont pas été masqués lors des tests, alors qu’une chaîne de connexion contient souvent un mot de passe. Afficher les valeurs permet de les lire dans le tableau, et le JSON copié les contient de toute façon.
Il ne lit ni l’environnement du processus ni un fichier du disque, il n’accède pas au réseau, il ne vérifie pas si une valeur est valide, à jour ou joignable, et il n’écrit rien. Les noms requis sont comparés littéralement : un nom qui ne peut pas être une clé, comme A.B, est simplement signalé comme absent.
Deux limites d’analyse méritent d’être connues : un guillemet non fermé est conservé tel quel au lieu d’être signalé, et une barre oblique inverse finale ne prolonge pas la ligne. La taille n’est pas une limite pratique : lors des tests, 2 000 variables ont été analysées en environ 0,3 s et une valeur unique de 200 000 caractères en environ 0,2 s.