The Hidden Disk Hogs on Windows Developers Keep Ignoring (And How to Move Them to D:)



If you're a software developer, chances are your C: drive slowly fills up until Windows starts complaining about low disk space—even though you barely store any personal files there.

The real culprit isn't your documents.

It's the dozens of development tools that quietly download SDKs, caches, virtual machines, Docker images, AI models, and package dependencies into your user profile.

Here's a real-world example from my machine.

LocationSizeWhat it containsSafe to reclaim
Local\Docker\...\docker_data.vhdx15.4 GBDocker Desktop WSL virtual disk⭐ Partial
Local\Packages15.5 GBMicrosoft Store apps + WSL disks⭐ Partial
Local\JetBrains + Roaming\JetBrains21.3 GBIDE indexes, logs, caches✅ Mostly
Local\Android + .android12.8 GBAndroid SDK + emulator images⭐ If unused
Local\Google8.1 GBChrome cache & profile⭐ Partial
Local\uv6.4 GBPython uv package cache✅ Yes
Local\Genymobile5.5 GBGenymotion virtual machines⭐ If unused
Roaming\Cursor6.0 GBCursor chat history & database⭐ Partial
.ollama4.4 GBLocal AI models⭐ If unused
.gradle, .m2, npm-cache, pip~9 GBBuild/package caches✅ Yes
$Recycle.Bin1.8 GBTrash✅ Yes

In total, over 100 GB was consumed almost entirely by development tools.


Why everything ends up on C:

Most developer tools default to one of these folders:

C:\Users\<user>\AppData\Local
C:\Users\<user>\AppData\Roaming
C:\Users\<user>
C:\ProgramData

Microsoft recommends applications store user-specific data there, so nearly every IDE, SDK, package manager, and emulator follows the same convention.

The downside?

Your SSD slowly disappears.


Biggest disk consumers

1. Docker Desktop

Typical size

10–100+ GB

Stored in

%LOCALAPPDATA%\Docker

Main offender

docker_data.vhdx

This virtual disk contains

  • Docker images

  • Containers

  • Volumes

  • Build cache

Move to D:

Docker Desktop →

Settings
Resources
Advanced
Disk image location

Choose

D:\Docker

or recreate the WSL disk there.


2. JetBrains IDEs

Typical size

5–30 GB

Large folders

AppData\Local\JetBrains
AppData\Roaming\JetBrains

Contains

  • indexes

  • logs

  • plugin cache

  • Gradle cache

  • local history

Move caches

Add environment variable

IDEA_PROPERTIES

or edit

idea.properties

Example

idea.system.path=D:\JetBrains\system
idea.config.path=D:\JetBrains\config
idea.plugins.path=D:\JetBrains\plugins
idea.log.path=D:\JetBrains\logs

3. Android Studio

Usually

10–50 GB

Largest folders

AppData\Local\Android
.android

Mostly

  • SDK

  • Emulator system images

  • AVDs

Move SDK

Android Studio
Settings
Android SDK

Move AVDs

Set

ANDROID_AVD_HOME=D:\Android\AVD

Move SDK

ANDROID_HOME=D:\Android\Sdk

4. Docker + WSL

Many people overlook

AppData\Local\Packages

Inside

ext4.vhdx

WSL distributions can easily reach

20–100 GB

Move WSL

wsl --export Ubuntu ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu D:\WSL\Ubuntu ubuntu.tar

Now the virtual disk lives on D:.


5. Python uv

Cache

AppData\Local\uv

Clean

uv cache clean

Move cache

UV_CACHE_DIR=D:\uv-cache

6. Ollama

Models often consume

5–200 GB

Default

C:\Users\<user>\.ollama

Move

OLLAMA_MODELS=D:\Ollama\models

or reinstall using the new location.


7. Maven / Gradle

Large dependency caches

.m2
.gradle

Move Maven

MAVEN_OPTS

or

settings.xml
<localRepository>D:/maven/repository</localRepository>

Move Gradle

GRADLE_USER_HOME=D:\Gradle

8. npm

Check cache

npm config get cache

Move

npm config set cache D:\npm-cache --global

9. pip

Move

PIP_CACHE_DIR=D:\pip-cache

10. Cursor

Can grow because of

  • AI chat history

  • embeddings

  • backups

  • workspace state

Location

AppData\Roaming\Cursor

Currently no official setting for all data, but parts can be relocated using Windows junctions.

Example

mklink /J "%APPDATA%\Cursor" "D:\Cursor"

11. Chrome

Profiles and cache

AppData\Local\Google

Move profile

chrome.exe --user-data-dir=D:\ChromeProfile

Using junctions (works for almost anything)

If an application refuses to let you change its location, Windows junctions are incredibly useful.

Move folder

C:\Users\Adam\.ollama

D:\Data\.ollama

Create junction

mklink /J "C:\Users\Adam\.ollama" "D:\Data\.ollama"

Windows thinks the folder is still on C:, but the data is actually stored on D:.

This works for:

  • JetBrains

  • Cursor

  • Ollama

  • Android SDK

  • Genymotion

  • npm cache

  • Maven

  • Gradle

  • Python caches

  • almost any development tool


Environment variables worth changing

VariableSuggested value
ANDROID_HOMED:\Android\Sdk
ANDROID_AVD_HOMED:\Android\AVD
GRADLE_USER_HOMED:\Gradle
UV_CACHE_DIRD:\uv-cache
PIP_CACHE_DIRD:\pip-cache
OLLAMA_MODELSD:\Ollama\models
TEMPD:\Temp
TMPD:\Temp

A good developer folder structure

D:\
├── AI
│ ├── Ollama
│ └── Models
├── Android
├── Docker
├── Gradle
├── Maven
├── npm-cache
├── pip-cache
├── uv-cache
├── WSL
├── JetBrains
├── Temp
└── Workspace

Final thoughts

Modern development environments generate massive amounts of data automatically. Docker layers, AI models, SDKs, build caches, emulator images, and package managers can quietly consume well over 100 GB on your system drive.

The best long-term strategy is to treat C: as the operating system partition and move bulky, regenerable developer data to D: using built-in settings, environment variables, or NTFS junctions. With a one-time setup, you'll avoid constant low-disk warnings while keeping your development environment fast and organized. 

Popular posts from this blog

How to Install Microsoft Office on Your PC: A Step-by-Step Guide

How To Create Spring Boot Project Using Netbeans

Spring Kafka - How to use ReplyingKafkaTemplate send and reply synchronously