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 tree command, while also supporting Unix-style options (such as -f and --files)

tree++ is implemented in Rust and is open-sourced on GitHub.

Performance comparison (using deterministic directory fixtures):

TypeBaseline (ms)treepp (ms)Multiplier
Streaming47.3847.391.00x
Batch /T 166.4248.611.37x
Batch /T 249.5638.421.29x
Batch /T 441.4836.331.14x
Batch /T 837.9729.961.27x
Batch /T 1639.4329.971.32x
Batch /T 3224.1723.351.04x
Disk usage23.7424.830.96x
Disk usage /L98.3367.141.46x
.gitignore81.4138.702.10x
Wide tree274.41277.120.99x
Deep tree25.2026.540.95x
Many small files32.8338.440.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 /VShow version information
--ascii -a /ADraw the tree using ASCII characters
--files -f /FShow files
--full-path -p /FPShow full paths
--human-readable -H /HRShow file sizes in human-readable form
--no-indent -i /NIDo not show tree connector lines
--reverse -r /RSort in reverse order
--all -k /ALShow hidden files
--size -s /SShow file size (bytes)
--date -d /DTShow last modified date
--exclude -I /XExclude matching files or directories
--level -L /LLimit recursion depth
--include -m /MShow only matching files
--disk-usage -u /DUShow cumulative directory size
--report -e /RPShow trailing summary statistics
--no-win-banner -N /NBHide the Windows-native tree banner output
--silent -l /SISilent terminal output (use with output)
--output -o /OWrite output to a file or stdout
--format /FMTSelect text, JSON, YAML, or TOML output
--errors -E /ERRSelect warn, strict, or ignore error handling
--batch -b /BUse batch mode
--thread -t /TNumber of scan threads in batch mode
--gitignore -g /GHonor .gitignore
--auto-exclude /AEEnable generated/cache directory exclusions
--no-auto-exclude /NAEKeep generated/cache directory exclusions disabled

For the full option set, see: tree++ Options Documentation