Config Converter
Paste one config format, get the other two as you type.
How to use it
- Paste your config — YAML, JSON or Java .properties. The format is detected and the other two appear below as you type; there is no button to press.
- If the guess is wrong, pick the source format yourself. Choose 2 or 4 spaces of indentation, and turn “Expand dotted keys” off to keep Spring-style keys flat.
- Copy or download each result on its own — the file names are config.yaml, config.json and config.properties.
Example
Input (YAML)
server: port: 8080 name: order-service debug: true
JSON and Properties
{
"server": {
"port": 8080,
"name": "order-service"
},
"debug": true
}
Properties
----------
server.port = 8080
server.name = order-service
debug = trueDefault rules only: the source is detected as YAML, so 8080 stays a number and true stays a boolean. Properties has no types, so the same values come out as the strings 8080 and true — when the source is .properties they are strings all the way through.
Rules, limits and known issues
- Only three formats: YAML, JSON and Java .properties. No TOML, no INI [section] headers, no XML or CSV.
- YAML is supported as a config subset: block mappings, sequences, flow {…} / […], quoted scalars and | / > block scalars. Anchors (&), aliases (*), !tags, << merge keys and ? complex keys are reported as errors instead of being guessed.
- Only the first YAML document is converted; a later --- is ignored and reported.
- Comments are not carried over: the three formats place them differently, so a comment kept in the wrong place is worse than no comment.
- Properties has no types. Every value is a string, so port = 8080 becomes "8080" in JSON — not 8080. Numbers, booleans and nulls only survive when the source is YAML or JSON.
- Non-ASCII text is written as-is (UTF-8), not escaped as \uXXXX. Java’s Properties.store() writes ISO-8859-1, so save the file as UTF-8 if you paste it into a Java project.
- Integers beyond the safe range (such as 12345678901234567890) are kept as strings with the exact digits you typed, instead of being rounded to a number.
- Key order follows your input; there is no sorting option.
- A top-level array or bare value cannot be written as properties — that one panel reports it, the other still converts.
- No file upload, no URL parameters, no history. Everything runs in your browser: nothing is uploaded or stored.
- A string containing a line break is written as "a\nb" in YAML, not as a | block scalar.
- Limits: 1,000,000 characters and 64 levels of nesting — over either, you get an error instead of a truncated result. Above 200,000 characters the result updates about 0.6 s after you stop typing; output uses LF and has no trailing newline.
Related tools
What people usually need next, once the config is in the right format.