tree++: A Much Better Windows tree Command
July 31, 2026 · View on GitHub
The tree command on Windows has seen virtually no changes since it was released nearly 40 years ago. In today’s LLM era, as a tool that is very commonly used to describe project structure, the only two options—/f and /a—are clearly insufficient. It is also not particularly fast.
tree++ is a comprehensive upgrade to tree, bringing the following to the Windows tree command:
- An expanded parameter set, covering common features such as displaying file sizes, limiting recursion depth, changing output style, writing results to a file, and excluding specified directories (including honoring
.gitignore) - Better performance via a Rust implementation; additionally supports multithreading in batch mode, delivering a significant scanning speed improvement
- Retains the familiar parameters and output layout of the original Windows
treecommand, while also supporting Unix-style options (such as-fand--files)
tree++ is implemented in Rust and is open-sourced on GitHub.
Performance comparison (using deterministic directory fixtures):
| Type | Baseline (ms) | treepp (ms) | Multiplier |
|---|---|---|---|
Streaming | 47.38 | 47.39 | 1.00x |
Batch /T 1 | 66.42 | 48.61 | 1.37x |
Batch /T 2 | 49.56 | 38.42 | 1.29x |
Batch /T 4 | 41.48 | 36.33 | 1.14x |
Batch /T 8 | 37.97 | 29.96 | 1.27x |
Batch /T 16 | 39.43 | 29.97 | 1.32x |
Batch /T 32 | 24.17 | 23.35 | 1.04x |
Disk usage | 23.74 | 24.83 | 0.96x |
Disk usage /L | 98.33 | 67.14 | 1.46x |
.gitignore | 81.41 | 38.70 | 2.10x |
Wide tree | 274.41 | 277.12 | 0.99x |
Deep tree | 25.20 | 26.54 | 0.95x |
Many small files | 32.83 | 38.44 | 0.85x |
Installation
Download the Windows x64 package from Release, extract it to a suitable directory, and add that directory to your environment variables.
Open Windows Terminal and run:
treepp /v
You should see output like:
treepp 1.0.0
Installation is now complete.
After that, you can use it the same way as the normal Windows tree command:
treepp /f
Quick Reference
| Option Set (Equivalent Forms) | Description |
|---|---|
--help -h /? | Show help information |
--version -v /V | Show version information |
--ascii -a /A | Draw the tree using ASCII characters |
--files -f /F | Show files |
--full-path -p /FP | Show full paths |
--human-readable -H /HR | Show file sizes in human-readable form |
--no-indent -i /NI | Do not show tree connector lines |
--reverse -r /R | Sort in reverse order |
--all -k /AL | Show hidden files |
--size -s /S | Show file size (bytes) |
--date -d /DT | Show last modified date |
--exclude -I /X | Exclude matching files or directories |
--level -L /L | Limit recursion depth |
--include -m /M | Show only matching files |
--disk-usage -u /DU | Show cumulative directory size |
--report -e /RP | Show trailing summary statistics |
--no-win-banner -N /NB | Hide the Windows-native tree banner output |
--silent -l /SI | Silent terminal output (use with output) |
--output -o /O | Write output to a file or stdout |
--format /FMT | Select text, JSON, YAML, or TOML output |
--errors -E /ERR | Select warn, strict, or ignore error handling |
--batch -b /B | Use batch mode |
--thread -t /T | Number of scan threads in batch mode |
--gitignore -g /G | Honor .gitignore |
--auto-exclude /AE | Enable generated/cache directory exclusions |
--no-auto-exclude /NAE | Keep generated/cache directory exclusions disabled |
For the full option set, see: tree++ Options Documentation