Skip to content
Marvin's Toolbox.

Text Tree Generator

Type a nested list and watch it turn into a tree drawn with ├── and └── connectors. Tab nests an item, Shift+Tab moves it back out, and a pasted Markdown list or an existing tree is read straight back into the outline. Choose between Unicode, heavy, double, rounded and plain ASCII lines, set the indent width, sorting and a root folder, then copy the result into a README.

Everything runs locally in your browser. Your data never leaves your device.

Items

Tab nests an item under the one above, Shift+Tab moves it back out. Enter adds the next item, and pasting a Markdown list or an existing tree fills the outline from the item you are on. Drag a row by its handle to move it with everything inside it, sideways to change how deep it sits. The handle also works with the arrow keys.

Style

4 characters per level

Tree

Items7Folders3Files4Levels3

Next steps

Keep going. These tools open with your result loaded in.

Write Markdown in a syntax highlighted editor and watch the rendered preview update as you type, side by side or stacked. GitHub Flavored Markdown covers tables, task lists, callouts and highlighted code blocks, with live word count and reading time. Copy the result as Markdown, HTML or rich text.

Convert text into every case at once: title case in the APA, AP, Chicago, MLA, Bluebook, AMA and NYT styles, sentence case, upper, lower, camelCase, snake_case, kebab-case and more.

Count words, characters, sentences, paragraphs, lines and more as you type, with estimated reading and speaking time.

Remove duplicate lines from a list or text, keeping the first occurrence. Optionally ignore case and whitespace, or drop blank lines too.

Replace text in two modes: plain find and replace all, or regular expressions with flag controls and capture group references like $1.

Compare two texts and see every added, removed and changed line highlighted, side by side or inline, with the changed words marked within each line. Ignore case, whitespace or blank lines, read a summary of how much changed, and export the result as a unified diff.

Paste a UUID to see what it carries: version, variant, and for time-based versions the exact timestamp, clock sequence and node. Also shows the raw bytes, the 128-bit integer and the URN form.

Decode Base64 to text or encode text to Base64. Paste into the top box, read the result below, and flip the direction with one click. Handles Unicode correctly, reads URL-safe Base64, and shows binary payloads as a hex dump you can download.

Convert numbers between binary, octal, decimal, hexadecimal and any base up to 36. Type into any field and the others update as you go. Handles huge integers without losing precision and accepts 0x, 0b and 0o prefixes.

About the Text Tree Generator Tool

This tool turns a nested list into the kind of text tree you see in a README or an issue: one item per line, connected with ├── and └── characters. Type into the outline on the left and the tree on the right redraws with every keystroke.

The keyboard model is the one you know from note apps. Enter starts the next item, Tab nests it under the item above, Shift+Tab moves it back out. Rows can also be dragged by their handle: up and down to move an item with everything inside it, sideways to change how deep it sits, with a line showing where it will land. Nothing has to line up by hand, so reordering a folder or renaming a file redraws every connector for you.

What you can do

  • Draw a folder structure for a README or a documentation page.
  • Convert a Markdown list into a tree diagram.
  • Turn an existing tree back into an editable list, then change it.
  • Switch between Unicode, rounded, heavy, double and plain ASCII connectors.
  • Sort a tree alphabetically or with folders first.
  • Copy the tree wrapped in a Markdown code block.

How to use the Text Tree Generator

  1. 1Type your items, using Tab and Shift+Tab to set how deep each one sits.
  2. 2Pick a connector style, the indent width and any extras like a root folder or a count line.
  3. 3Copy the tree or download it as a text file.

Pasting a list you already have

Paste into any row and the whole block is read as an outline, so a Markdown list, a tab indented note or a tree someone drew earlier all land as proper items. Indentation decides the nesting, whatever width it uses, and list markers like -, *, +, 1. and task boxes are stripped off. The Paste a list button does the same for a larger block and replaces the outline in one go.

Reading a drawn tree back in is the useful half of this. Copy the structure out of a README, fix a name or move a folder, and draw it again in the style you want. Code fences and the 2 directories, 5 files line that the tree command prints are skipped, so pasting a whole block works without cleaning it up first.

Connector styles and indent width

Unicode is the default and matches what the tree command prints. ASCII swaps in |-- and ` -- `` for terminals and fonts that render box-drawing characters badly, and heavy, double, rounded and dashed change the weight of the lines. Indent only and Markdown list drop the connectors entirely, which is handy when the tree is going somewhere that renders lists itself.

The indent slider sets how many characters each level takes, from a tight two up to ten. Four is the classic width, ├── , and narrower settings help when a deep tree would otherwise wrap in a code block.

Folders, sorting and counts

An item with something nested under it counts as a folder. The slash option marks those with a trailing /, the count line reports how many folders and files the tree holds, and sorting orders each level alphabetically or puts the folders before the files. Sorting only affects the output, so your typed order stays as it is.

The root option wraps everything in one named folder, which is what you want when the tree describes a single project. To publish the result, turn on the code block option and paste it into your Markdown, or check how it will look with the Markdown Preview.

Encode and decode Base16, Base32, Base36, Base45, Base58, Base62, Base64 and Base85. Pick the alphabet variant you need, from Crockford Base32 to Bitcoin Base58 and Ascii85, and convert in either direction.

Decode Base64 to text or encode text to Base64. Paste into the top box, read the result below, and flip the direction with one click. Handles Unicode correctly, reads URL-safe Base64, and shows binary payloads as a hex dump you can download.

Format code in JavaScript, TypeScript, JSON, JSON5, HTML, Vue, CSS, SCSS, LESS, Markdown, YAML, GraphQL, XML and SQL. Pick tabs or spaces, set the indent width, and format the input in place with one click.

Open a CSV or TSV file and read it as a proper table. Sort by any column, filter rows with a search or per-column conditions, hide columns you do not need, and copy or download what is left.

Remove duplicate lines from a list or text, keeping the first occurrence. Optionally ignore case and whitespace, or drop blank lines too.

Replace text in two modes: plain find and replace all, or regular expressions with flag controls and capture group references like $1.