Skip to content
100% local

Indented list to JSON tree

Turn an indented or bulleted list into a nested JSON (or YAML) tree, and back again.

Input
Output

Indented list to JSON tree

Paste a list whose hierarchy is shown through indentation — spaces, tabs, or bullets and numbering — and this tool turns it into a nested JSON or YAML tree. It reads outlines, sitemaps, folder listings, org charts and any notes app export where structure lives in the indentation rather than in explicit markup. Flip the direction switch and it works the other way too: paste a JSON tree and get an indented list back.

The options control both how the input is read and how the output is shaped. Indent size sets how many spaces count as one level (a tab always counts as one level, whatever the indent size). Bullets and numbering can be ignored — stripped before a line becomes a node name — or kept as text. Output shape picks between an object with a children array, an array of arrays, or a name map where each level's items become object keys; the children key name only applies to the object shape. Split name/value at breaks each line into a name and a value at a delimiter like ":" — handy for "key: value" outlines — and the same delimiter rejoins them when converting back.

Indentation that doesn't match the configured indent size — three spaces where two were expected — doesn't stop the conversion; the tool assigns the closest level and reports how many lines were uneven in the tally below the output, so a stray tab or paste artifact stands out. Converting a tree back to a list currently reads JSON input only, not YAML.

Everything runs locally in your browser — nothing you paste is ever uploaded. Copy the result, download it as a .txt file, or send it straight back into the input to keep adjusting the shape.

FAQ

What indentation does the tool expect?
Any consistent step of spaces, or tabs — a tab always counts as one level, regardless of the indent size you set for spaces. Lines whose indentation is not a clean multiple of the configured indent size are still converted, and the count of those lines shows up in the tally below the output.
Can I convert a JSON tree back into an indented list?
Yes — switch Direction to "Tree to list". It reads JSON input only; pasting YAML into that direction returns an error asking for JSON instead.
What's the difference between the three output shapes?
"Object with children" nests each item as { name, children: [...] }; "Array of arrays" pairs each name with an array of its children; "Name map" turns each level into object keys, which is compact but requires unique names — duplicates get a "(2)", "(3)" suffix.
What does "Split name/value at" do?
It splits each line at the first occurrence of the character or string you enter — "key: value" with a colon delimiter becomes a node with a separate name and value field, instead of one long name.
Is my list uploaded anywhere?
No. The conversion runs entirely in your browser — your list and the resulting tree never leave your device.