Kleaner PRO

Professional care for Windows 7/10/11.

Made with care for performance.

Follow us
Products
  • Kleaner PRO
  • Store
  • Activation portal
  • What's new in Kleaner PRO
  • More products — coming soon
Resources
  • Features
  • FAQ
  • Compare tools
  • Knowledge Base
  • Blog
  • Download
  • Kleaner SafeCheck
  • Storage planner
Legal
  • License agreement
  • Terms of service
  • Privacy policy
  • Refund policy
[email protected]Telegram support @Vladimlrovlch
© 2026 Kleaner PRO · kleaner.pro. All rights reserved.
Payments
ЮMoneyVisaMastercardМИРPayPalWebMoneyUseGatewayBitcoinEthereumUSDT
Kleaner PRO
FeaturesSmart CarePricingFAQKnowledge BaseBlogDownload
Services▾
Kleaner SafeCheckLocal SHA-256 · VirusTotal report lookupStorage plannerFree Windows storage tool
Activate
FeaturesSmart CarePricingFAQKnowledge BaseBlogDownload
ServicesKleaner SafeCheck · SHA-256Storage planner
Activate
BuyBuy license
Blog →5 min read2025-10-30· Kleaner PRO Team

WSL1 vs WSL2: Same Penguin, Two Very Different Storage Bills

WSL1 and WSL2 both put a Linux prompt on your Windows desktop, but under the hood one is a translation layer and the other is a virtual machine — and their disk footprints behave completely differently. If your C: drive quietly lost 30 or 50 GB, the ext4.vhdx of a WSL2 distro is usually where it went.

Two architectures, two storage models

WSL1 has no Linux kernel at all: it translates Linux system calls into Windows ones in real time, and its files sit in a normal folder — historically %LOCALAPPDATA%\Packages\<Distro>\LocalState\rootfs — fully visible to Windows tools. That makes it light on disk and fast when scripts touch files on /mnt/c, but the translation is incomplete: Docker, systemd and anything needing exotic syscalls does not work. WSL2 runs a real Linux kernel in a lightweight utility VM, which fixes compatibility, but the distro's entire filesystem now lives inside an ext4.vhdx — a virtual disk image that Windows mounts but does not interpret.

The vhdx is stored under %LOCALAPPDATA%\Packages for Store-installed distros and under %LOCALAPPDATA%\wsl for more recent installs, and it has one nasty property: it grows on demand and never shrinks on its own. Deleting files inside the distro frees space inside the virtual disk, but the .vhdx file keeps its high-water mark until you compact it. Checking the file size in Explorer right after a big cleanup inside the distro is the classic disappointment: the number has not moved.

Where each one hides its gigabytes

Neither version cleans up after itself, and the space disappears into surprisingly few places:

  • The WSL2 ext4.vhdx — every distro has one; a Docker-heavy dev setup routinely pushes it past 30 GB
  • Docker Desktop's own data disk (docker_data.vhdx), which follows the same grow-only rule
  • The WSL1 rootfs folder — modest by comparison, but old abandoned distros still hold their full install
  • Linux package and build caches inside the distro — apt caches, node_modules, target/ and build folders that inflate the vhdx permanently
  • wsl --export backups and downloaded distro images parked in Downloads and forgotten

Reclaiming space without breaking the distro

Clean inside first: apt autoremove and apt clean, docker system prune in Docker Desktop, npm and pip cache purges — anything that empties the virtual disk before you shrink its container. Then run wsl --shutdown, because a running distro locks its vhdx, and compact the image: Optimize-VHD with the -Mode Full option if you have Hyper-V tooling, or diskpart with select vdisk file="<path>", attach vdisk, compact vdisk, detach vdisk on any Windows. Recent WSL versions offer wsl --manage <Distro> --set-sparse true, which lets the vhdx release space automatically — a genuinely better long-term setting.

Two last resorts deserve their names. wsl --export packs the distro into a .tar you can import on another drive with wsl --import, which is the clean way to move a WSL2 install off a full C:. And wsl --unregister <Distro> deletes the distro and its vhdx entirely — that command has no undo, so treat it as the nuke it is. While you are at it, cap the VM's appetite with a .wslconfig file limiting memory and processors; idle WSL2 VMs otherwise hold gigabytes of RAM for nothing.

Questions and Answers

How do I shrink the WSL2 ext4.vhdx file?

Clean up inside the distro first, run wsl --shutdown, then compact the vhdx with diskpart (select vdisk file, attach vdisk, compact vdisk, detach vdisk) or Optimize-VHD. On recent WSL, wsl --manage <Distro> --set-sparse true makes the disk release space automatically.

Should I use WSL1 or WSL2?

WSL2 is the default and the only choice for Docker, systemd and anything needing a real kernel. WSL1 still wins for light command-line work that mostly reads and writes files on your Windows drives — no VM, no vhdx, no memory overhead.

Know what is included before you buy.

The one-time 30-minute trial covers core tools. PRO-labelled features stay locked until a paid license is activated.

Download for WindowsBuy license

Read next

What Is VHDX: Virtual Disks That Eat Real Space→What Is Dev Drive on Windows 11 and Who Benefits→Why Your C: Drive Keeps Filling Up No Matter What→

Write to us: [email protected]

English
EnglishРусскийУкраїнськаDeutschEspañolFrançaisPortuguês (BR)PolskiItalianoTürkçe日本語简体中文