Is my appsettings.json uploaded anywhere?
No. Parsing and conversion run in your browser with JavaScript; nothing you paste is sent to a server. Because appsettings files often hold connection strings and keys, the Share button is switched off whenever the input contains secret-looking values.
Why does ASP.NET Core use a double underscore (__) in environment variable names?
Configuration keys are hierarchical and use a colon as the separator (Logging:LogLevel:Default), but most Linux shells and container runtimes reject a colon in a variable name. The environment variable provider in Microsoft.Extensions.Configuration replaces __ with : when it reads variables, so Logging__LogLevel__Default works on every platform.
How are arrays like AllowedHosts converted?
Each element gets its index as a key segment: AllowedHosts__0=a.com and AllowedHosts__1=b.com. Arrays of objects nest further, for example Downstream__0__BaseUrl. When converting back, keys become a JSON array only if the indexes run 0, 1, 2… without gaps; otherwise they stay an object and the tool warns you.
What happens to null values, numbers and booleans?
Environment variables are always strings. Numbers and booleans are written as their JSON text (50, true), and .NET converts them back when it binds options. A null becomes an empty value, which .NET reads as an empty string rather than null. Empty objects and arrays produce no variables at all, and the tool lists the paths it dropped.
How does the prefix option relate to AddEnvironmentVariables("MYAPP_")?
When you call AddEnvironmentVariables with a prefix, .NET only reads variables that start with it (matched case-insensitively) and strips the prefix before mapping __ to :. Enter the same prefix here and every generated name starts with it; in reverse mode, variables without the prefix are skipped and listed.
Can I use colons instead of double underscores?
On Windows and in launchSettings.json, yes — the "Colon keys" output uses Section:Key. On Linux, in Docker and in Kubernetes, stick with __, because a colon is not a valid character in most shells' variable names.
Why does the tool warn about keys that differ only by case?
.NET configuration keys are case-insensitive. Two JSON keys such as Logging and logging in the same object make the JSON provider throw "A duplicate key was found" at startup, and as Linux environment variables both names can exist at once while .NET silently keeps only one of them.