Skip to content

Releases: dundee/gdu

v5.37.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 08:48
v5.37.0

What's New

This release brings a browser-based UI, more control over long scans, richer
file-list information, and finer-grained configuration and export options. Below
is a walkthrough of each new feature.

Web UI

Gdu can now serve a browser-based interface instead of the terminal UI.

gdu --web /some/dir

Gdu scans the directory, prints the URL, and (by default) opens it in your
default browser. The interface shows an animated donut chart of the current
directory's contents alongside a sortable table with size bars, breadcrumb
navigation, and a disk-usage/apparent-size toggle. Scan progress is streamed
live while the analysis runs.

By default the server binds to localhost on a random free port. Use
--web-listen (or the web.listen config option) to pin a fixed address, and
--web-open=false to print the URL without launching a browser.

The compiled web assets are embedded in the binary, so no extra files or network
access are required.

Security: the web UI is read-only and has no authentication. It exposes file
names and sizes over HTTP, so keep it bound to localhost (the default). Binding
to a non-loopback address makes those details reachable by other hosts on the
network and prints a warning.

Screenshot 2026-08-18 at 12 56 21

by @dundee in #617

Preview results during a scan (Tab)

You no longer have to wait for a scan to finish before looking at results. Press
Tab during a scan to preview the directory totals found so far, then keep
watching them update as the analysis continues.

by @ultranity in #594

Stop scanning and keep partial results

Long scans can now be cut short without losing work. Press Ctrl+C during a scan
to stop scheduling new work and keep the results found so far, so you can start
browsing (or exporting) immediately instead of aborting the whole run.

by @ShivamB25 in #606

Show symlink target

Symlinks can be displayed as name -> target, showing the link destination next
to the name just like ls -l. Enable it with:

gdu --show-symlink-target /some/dir

Symlinks and sockets continue to be marked with the @ file flag.

by @yurenchen000 in #612

Move items to XDG trash (D key)

In addition to permanent deletion (d), you can now move the selected file or
directory to the XDG trash with the D key on Linux, matching the behavior of most
desktop file managers so items can be recovered later.

by @phaethix in #608

Configurable colors for marked items

The colors used for marked items can now be customized in the configuration
file:

style:
    marked:
        text-color: white
        background-color: "#6600cc"

by @dundee in #566

System-wide config: /etc/gdu.yaml

Gdu now loads /etc/gdu.yaml as a system-wide configuration file, letting
administrators set defaults for all users on a machine. Per-user config files
($HOME/.config/gdu/gdu.yaml and $HOME/.gdu.yaml) still apply on top of it.

by @graysky2 in #567

Numeric percentage on usage bars

Usage bars now display the numeric percentage alongside the bar, making it easier
to read exactly how much space each item takes relative to its siblings.

by @dundee in #590

Confirm before quitting after a long scan

To prevent accidentally discarding the results of a long scan, gdu now asks for
confirmation before quitting when a lengthy scan's results would otherwise be
lost. You can disable the prompt with --no-confirm-quit.

by @ultranity in #593

Honor block size environment variables

Terminal output now honors the BLOCK_SIZE and BLOCKSIZE environment
variables. BLOCK_SIZE takes precedence; both accept GNU coreutils block-size
values such as 1K, kB, human-readable, and si. Explicit size-format flags
override these variables, and exported JSON always retains raw byte values.

by @ShivamB25 in #604

Customize JSON export attributes

The JSON export can now be trimmed to only the attributes you need:

gdu --output-attrs=asize,dsize -o out.json /some/dir

name is always included; available optional attributes are asize, dsize,
items, mtime, and notreg. Directories always retain their asize, dsize,
and items summary stats so they can be preserved on import.

by @ShivamB25 in #605

Exclude OneDrive online-only file sizes

Gdu can now exclude the sizes of OneDrive online-only ("cloud") files, so
placeholder files that aren't actually stored locally don't inflate your disk
usage totals.

by @tpill90 in #609

Summary of all changes

  • feat: add web UI by @dundee in #617
  • feat: preview results found so far during a scan (Tab) by @ultranity in #594
  • feat: stop scanning and keep partial results by @ShivamB25 in #606
  • feat: show symlink target #260 by @yurenchen000 in #612
  • feat: move items to XDG trash with D key (#12) by @phaethix in #608
  • feat: config option to change colors for marked items by @dundee in #566
  • feat: load /etc/gdu.yaml as system-wide config by @graysky2 in #567
  • feat: show numeric percentage on usage bars by @dundee in #590
  • feat: confirm before quitting when a long scan would be lost by @ultranity in #593
  • feat: honor block size environment by @ShivamB25 in #604
  • feat: customize JSON export attributes by @ShivamB25 in #605
  • feat: excluding OneDrive online file storage sizes by @tpill90 in #609
  • feat: update vite by @dundee in #628
  • fix: respect --show-apparent-size for file paths in non-interactive mode by @wahajahmed010 in #558
  • fix: ignore for root directory not working by @dundee in #573
  • fix: correct item count and size for empty dirs by @dundee in #574
  • fix: stack overflow by @dundee in #577
  • fix: import panic for empty array by @dundee in #578
  • fix: import panic on wrong name by @dundee in #581
  • fix: implement IsDir and GetPath for SimpleDir by @dundee in #583
  • fix: SQLite analyzer permission error flags by @sjh9714 in #598
  • fix(report): make JSON export respect -t, --depth and --summarize filters by @ShivamB25 in #600
  • fix: sanitize control characters in paths printed on quit by @carfeii in #616
  • fix(report): preserve directory stats in JSON export by @ShivamB25 in #603
  • fix(device): skip malformed mount lines instead of panicking by @VXNCXNX in #625
  • fix(cmd): stop truncating a --config-file path at the first space by @VXNCXNX in #624
  • fix(ignore): anchor the whole ignore-pattern alternation by @VXNCXNX in #623
  • fix: don't materialize dataless files when scanning on macOS by @ngrilly in #622
  • fix(timefilter): drop the stray separator in the until= filter footer by @VXNCXNX in #621
  • perf: concurrent processing in sqlite analyzer by @dundee in #565
  • refactor: use atomic counter instead of mutex by @dundee in #597
  • docs: fix typo "relase" -> "release" in release run-book by @maxtaran2010 in #601
  • docs: for contributors and agents by @dundee in #626
  • chore(deps): bump golang.org/x/text from 0.36.0 to 0.37.0 by @dependabot[bot] in #569
  • chore(deps): bump golang.org/x/sys from 0.43.0 to 0.44.0 by @dependabot[bot] in #568
  • chore(deps): bump golang.org/x/sys from 0.44.0 to 0.45.0 by @dependabot[bot] in #575
  • chore(deps): bump github.com/gdamore/tcell/v2 from 2.13.9 to 2.13.10 by @dependabot[bot] in #579
  • chore(deps): bump github.com/mattn/go-isatty from 0.0.21 to 0.0.22 by @dependabot[bot] in #559
  • chore(deps): bump modernc.org/sqlite from 1.49.1 to 1.51.0 by @dependabot[bot] in #582
  • chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #592
  • chore(deps): bump golang.org/x/net from 0.47.0 to 0.55.0 by @dependabot[bot] in #596
  • chore(deps): bump actions/setup-go from 6 to 7 by @dependabot[bot] in #602
  • chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #620
  • chore(deps-dev): bump vitest from 2.1.9 to 3.2.6 in /webui/frontend by @dependabot[bot] in #619
  • chore(deps): bump github/codeql-action from 4 to 4.37.4 by @dependabot[bot] in #613
  • chore(deps): bump docker/login-action from 4 to 4.5.2 by @dependabot[bot] in #610
  • chore(deps): bump modernc.org/sqlite from 1.51.0 to 1.52.0 by @dependabot[bot] in #588
  • cho...
Read more

v5.36.1

Choose a tag to compare

@github-actions github-actions released this 29 Apr 22:00
v5.36.1

What's Changed

  • perf: top dir analyzer optimizations by @dundee in #562
  • perf: replace progress channel with atomic counters and ticker polling in all analyzers by @dundee in #563
  • refactor: analyzers and improve SQLite backend by @dundee in #549
  • fix: improve SQLite storage and analyzer implementation by @dundee in #541
  • test: fix flaky test by @dundee in #561

Full Changelog: v5.36.0...v5.36.1

v5.36.0

Choose a tag to compare

@github-actions github-actions released this 27 Apr 22:31
v5.36.0

This release brings a major improvement in memory consumption (mainly for larger disks) and also a bit better speed for non-interactive mode.

What's Changed

  • feat: top-dir analyzer for non-interactive mode by @dundee in #557
  • feat: implement deletion, JSON encoding, and query optimizations for SQLite storage by @dundee in #536
  • test: cover internal packages by @dundee in #535
  • chore(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.21 by @dependabot[bot] in #546
  • chore(deps): bump golang.org/x/sys from 0.42.0 to 0.43.0 by @dependabot[bot] in #545
  • chore(deps): bump modernc.org/sqlite from 1.48.0 to 1.48.2 by @dependabot[bot] in #548
  • chore(deps): bump golang.org/x/text from 0.34.0 to 0.36.0 by @dependabot[bot] in #547
  • chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #552
  • chore(deps): bump modernc.org/sqlite from 1.48.2 to 1.49.1 by @dependabot[bot] in #553
  • chore(deps): bump github.com/gdamore/tcell/v2 from 2.13.8 to 2.13.9 by @dependabot[bot] in #554

Full Changelog: v5.35.0...v5.36.0

v5.35.0

Choose a tag to compare

@github-actions github-actions released this 31 Mar 09:21
v5.35.0

What's Changed

  • feat: show progress bar when analysing the whole disk/partition by @dundee in #523
  • feat: print marked items to stdout by @dundee in #528
  • feat: add support for browsing tar archives by @dundee in #513
  • feat: force interactive mode by @dundee in #533
  • fix: create parent dir for sqlite db by @dundee in #511
  • fix: use smaller value log file size for 32bit systems by @dundee in #519
  • fix: make itemCount 64bit by @dundee in #520
  • ci: use Golang 1.26 by @dundee in #508
  • ci: drop support for golang 1.24 by @dundee in #521
  • ci: release gh action by @dundee in #527
  • test: move coverage for app package by @dundee in #534
  • chore(deps): bump modernc.org/sqlite from 1.46.1 to 1.47.0 by @dependabot[bot] in #515
  • chore(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 by @dependabot[bot] in #524
  • chore(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #529
  • chore(deps): bump modernc.org/sqlite from 1.47.0 to 1.48.0 by @dependabot[bot] in #531

Full Changelog: v5.34.0...v5.35.0

gdu v5.34.2

Choose a tag to compare

@dundee dundee released this 20 Mar 23:35
v5.34.2

fix: run sqlite test only on supported platforms

Full Changelog: v5.34.1...v5.34.2

gdu v5.34.1

Choose a tag to compare

@dundee dundee released this 20 Mar 10:03
v5.34.1

fix: make itemCount 64bit (#520)
fix: use smaller value log file size for 32bit systems (#519)
fix: create parent dir for sqlite db (#511)

Full Changelog: v5.34.0...v5.34.1

gdu v5.34.0

Choose a tag to compare

@dundee dundee released this 09 Mar 20:30
v5.34.0

What's Changed

  • feat: add interactive file type filtering via -T key by @ShivamB25 in #493
  • feat: allow navigating above launch directory by @ShivamB25 in #494
  • feat: add --no-view-file flag for interactive viewer (#428) by @ShivamB25 in #496
  • fix: enable --show-item-count in non-interactive mode (#431) by @ShivamB25 in #495
  • fix: align columns in non-interactive mode by @dundee in #500
  • fix: support for sqlite db on all platforms by @dundee in #507
  • chore(deps): bump modernc.org/sqlite from 1.45.0 to 1.46.1 by @dependabot[bot] in #499
  • chore(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #505
  • chore(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #503
  • chore(deps): bump docker/metadata-action from 5 to 6 by @dependabot[bot] in #506

Full Changelog: v5.33.0...v5.34.0

gdu v5.33.0

Choose a tag to compare

@dundee dundee released this 13 Feb 23:12
v5.33.0

What's Changed

  • feat: add SQLite analyzer and some assorted changes by @quetz in #484
  • feat: add --archive-browsing flag to show zip/jar files as dirs, add --collapse-path flag to for collapsing single-child directory
  • feat: add --depth flag by @sguptasf in #485
  • feat: add options to force output units by @shuaixr in #464
  • feat: allow excluding file(s) by their type by @AmauMaill in #472
  • feat: bump version of go and badger by @joy4eg in #438
  • feat: time filters by @Sarke in #425
  • feat: bump versions of dependencies by @dundee in #450
    chains by @bingoohuang in #434
  • fix: non-deterministic ordering in ParallelAnalyzer by @ShivamB25 in #445
  • docs: add mise alternative method installation by @jylenhof in #465
  • chore: bump Go to 1.25.5 to fix crypto/x509 CVEs by @almeida-silas in #471

New Contributors

Full Changelog: v5.32.0...v5.33.0

gdu v5.32.0

Choose a tag to compare

@dundee dundee released this 22 Nov 11:21
v5.32.0

What's Changed

New Contributors

Full Changelog: v5.31.0...v5.32.0

gdu v5.31.0

Choose a tag to compare

@dundee dundee released this 06 Jun 10:52
v5.31.0

What's Changed

New Contributors

Full Changelog: v5.30.1...v5.31.0