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 |
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 /vYou 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| 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