SystemLens

Find out where your disk space went. Pick a folder, get a treemap and a list of the biggest offenders — scanned in this browser tab, with nothing uploaded.

Nothing leaves your machineNo sign-up, no uploadInstallable as an app
Nothing is uploaded. Your folder is read in this browser tab and the results never leave your machine — there is no server involved in the scan.
Advertisement

What the browser version does, and what it can't

A web page is sandboxed on purpose. Two of SystemLens's features are impossible inside that sandbox, so the browser version does not pretend to have them.

In this browser tab

  • Recursive folder scan with per-file sizes and modification dates
  • Treemap you can click into, plus largest-folder and largest-file tables
  • Configurable scan depth and include/exclude glob patterns
  • File-type breakdown by total bytes
  • CSV export of every file, folder and skipped entry
  • Works offline once installed — the scan needs no network at all

Needs a Chromium desktop browser (Chrome, Edge, Opera, Brave, Arc) for the File System Access API. Firefox, Safari and every mobile browser lack it.

Desktop build only

  • Permission auditing — world-writable files, SUID/SGID binaries. The File System Access API exposes only a read/readwrite permission state. POSIX mode bits are not available to a web page at all, so this cannot be approximated or guessed at. The browser version does not attempt it.
  • Remote scanning over SSH. Browsers cannot open raw TCP sockets, so there is no way to speak the SSH protocol from a page.
  • Whole-disk scans and system paths. Chrome blocks the picker from returning sensitive roots such as /, /System, Windows' C:\ or your user profile root.
  • Persistent scan history. The desktop build caches scans in SQLite so repeat runs are near-instant; the browser version starts fresh each time.
Get the desktop build

Browser scanning is also slower than a native tool. Each file costs an asyncgetFile()round trip through Chrome's sandbox, so expect thousands of files per second rather than the tens of thousands a native scanner manages. For a 100,000-file tree, use the desktop build.

How the browser scan works

1. You pick the folder

Chrome shows its own folder picker and asks you to grant read access. The page never gets a path you did not choose, and the grant lasts only for this tab session — reload and you will be asked again.

2. It walks the tree

Directory entries are enumerated depth-first and file sizes read in small parallel batches, yielding to the browser between batches so the page stays responsive. Unreadable entries — locked files, symlinks and junctions Chrome refuses to follow, folders the OS denies — are counted and skipped rather than aborting the run. Cancel stops it immediately.

3. You read the results

Sizes are aggregated up the tree into a treemap you can drill into, plus sorted tables and a file-type breakdown. Export to CSV to keep a record or diff two scans in a spreadsheet.

What people use it for

Developers

  • Build artefacts

    Point it at your projects folder and see how many gigabytes node_modules, target/, .next/ and Docker build contexts have quietly accumulated.
  • Repo hygiene

    Use an include pattern like *.mp4, *.zip, *.psd to find large binaries that should be in object storage instead of Git.

Anyone out of disk space

  • Downloads and Documents

    The usual suspects. One scan of each usually finds tens of gigabytes worth deleting, with no software to install first.
  • Media libraries

    The treemap makes it obvious which few folders hold most of the bytes, which a sorted file list does not.

Locked-down machines

  • No install rights

    On a managed workstation where you cannot install a disk analyser, a browser tab you already have is the whole tool.
  • Sensitive data

    Because the scan is entirely local, file names and sizes from a confidential project never cross a network boundary.

Download SystemLens

Loading release information...

Frequently Asked Questions

Are my files uploaded anywhere?

No. The scan uses the browser's File System Access API, which hands the page a handle to the folder you picked. File names, sizes and timestamps are read in the tab and held in memory; nothing is sent to a server, and the page makes no network request while scanning. The CSV export is generated in the browser too.

Which browsers can scan a folder?

Chromium-based desktop browsers: Chrome and Edge 86+, plus Opera, Brave and Arc. Firefox and Safari have not implemented showDirectoryPicker(), and it is unavailable on iOS and Android. In those browsers this page tells you so instead of showing a picker that cannot work — use the desktop build there.

Why does the browser version not check file permissions?

Because it cannot. The File System Access API deliberately exposes only two permission states, read and readwrite. POSIX mode bits — the setuid, setgid and world-writable bits a permission audit is looking for — are not surfaced to web pages at any privilege level. Showing an inferred or approximate answer would be worse than showing none, so world-writable and SUID/SGID detection live only in the desktop build.

Can it scan a remote server?

Not from the browser. SSH needs a raw TCP socket and browsers do not have one. Remote scanning is a desktop-build feature.

How big a folder can it handle?

Tens of thousands of files is comfortable. The scan reports progress and can be cancelled at any point, and it stops at a 750,000-entry safety limit so a runaway tree cannot exhaust the tab's memory. Very large scans are faster in the desktop build, which reads the filesystem directly rather than through the browser sandbox.

What do scan depth and the include/exclude patterns do?

Scan depth caps how many directory levels below your chosen folder are opened; deeper folders still appear but are not sized. Exclude patterns drop matching files and folders before they are read — node_modules is the usual one. Include patterns, when set, keep only matching files. Both accept globs: * matches within one path segment, ** crosses folders, and a pattern containing / is matched against the path relative to the folder you picked rather than the bare name.

Why were some entries skipped?

Three common reasons: the OS denied access to a subfolder, a file was deleted while the scan was running, or the entry is a symlink or Windows junction that Chrome will not follow. Skipped entries are counted, listed with a reason, and included in the CSV — the scan carries on around them rather than failing.

Can I install it as an app?

Yes. This page ships a web app manifest and a service worker scoped to it alone, so Chrome and Edge will offer “Install” in the address bar or the browser menu. Installed, it opens in its own window and the scanner works with no network connection.

Does it change anything on disk?

No. It requests read-only access and the only filesystem calls it makes are directory enumeration and reading file metadata. It never opens a file's contents, and it cannot write, move or delete anything. Findings that reference weakness classes link out to our CWE Lookup tool.

How do I report a bug or request a feature?

Get in touch through our contact page.

Need the permission audit and remote scanning?

Those two features need operating-system access a browser tab does not have. The desktop build has both.