Developer Tools

Folder Tree Generator

Turn a list of paths or an indented outline into a directory tree for a README, project brief, or support message. Choose Unicode or ASCII connectors, filter unwanted entries, and export the result.

Free online tool

Loading tool…

Folders are inferred from child paths or a trailing /. Ignores remove a matching folder and its descendants. No files are opened.

All parsing and formatting happens in your browser. No file contents or directory listing is uploaded.

GET STARTED

How to use the Folder Tree Generator

  1. 01

    Paste one relative file path per line, such as src/pages/index.astro. Alternatively, choose Indented names and use two or four spaces per level.

  2. 02

    Add a trailing / to mark an empty folder. Folders with child paths are detected automatically.

  3. 03

    Set a root label, ignore patterns, sort order, and maximum depth. A depth of 0 shows all levels.

  4. 04

    Choose plain text or a Markdown code block, then copy or download your tree.

Examples

Document a source folder

Enter src/index.ts, src/utils/date.ts, and package.json on separate lines. The output groups index.ts and utils/ under src/.

Hide generated files

Keep node_modules and .git in the ignore list. Add *.log to hide matching names at any level, or src/generated to hide that path.

Use an indented outline

Choose two-space indentation, enter docs/ on the first line, then two spaces and getting-started.md on the next. The second line becomes a child of docs/.

Paths versus indentation

Path mode accepts forward or backward slash separators and merges repeated folder paths. Indented mode accepts a single name on each line and infers a folder when deeper lines follow it. Each tab counts as the selected indent width. Mixed indentation or a jump over a level produces a visible error.

Ignore and export options

Ignore rules are a small wildcard format, not full .gitignore syntax. An asterisk matches any text, a question mark matches one character, and matching is case sensitive. A rule without a slash checks a name anywhere in the tree; a rule with a slash checks the full relative path. Matching folders and their descendants are removed. Exported Markdown includes a text code fence so connectors align in a monospaced font.

Readable trees for documentation

Keep a tree focused on what a reader needs. A root label identifies the project without repeating a root directory in every input path. Maximum depth limits long listings and marks omitted descendants with an ellipsis. ASCII connectors work in environments that cannot display box-drawing characters.

What to know

  • Input is limited to 200,000 characters. Paths are descriptive text, not a verified filesystem listing.
  • Dot and dot-dot path segments are rejected; ignore rules are case sensitive.

Common questions

Does this scan my computer?

No. The tool formats text you paste. It does not request folder access, read files, or verify that paths exist.

How do I include an empty folder?

End its name or path with a slash. Otherwise a name without descendants is treated as a file.

Does it support .gitignore rules?

It supports simple * and ? wildcards and exact names or relative paths. Negation, comments, character classes, and Git-specific glob rules are not supported.

Why does my pasted tree fail?

Paste paths or a plain indented outline rather than an already drawn tree. Remove existing connectors such as ├── and use the selected number of spaces per level.