<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Free Up Space on a Windows PC for AI, Gaming and Development · Loosely Decoupled</title>
    <link>https://looselydecoupled.com/series/developer-windows-disk-cleanup/</link>
    <description>Find which models, caches and Windows files fill your PC&#39;s drive, and get the space back without breaking a model setup, a game library or Windows itself.</description>
    <language>en-us</language>
    
    <copyright>© 2026 Emmanuel Tsouris</copyright>
    <lastBuildDate>Fri, 30 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://looselydecoupled.com/series/developer-windows-disk-cleanup/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>How to Find What&#39;s Taking Up Space on Your C: Drive with PowerShell</title>
      <link>https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/</link>
      <guid isPermaLink="true">https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate>
      <dc:creator>Emmanuel Tsouris</dc:creator>
      <category>Windows Server</category>
      <category>PowerShell</category>
      
      <description>You finish with each large C: folder matched to its owner, whether an AI model folder, a package cache or the hibernation file, and to the cleanup it needs.</description>
      <content:encoded><![CDATA[<div class="answer" data-answer="true">
  <p class="answer__label" data-pagefind-ignore>TL;DR</p>
  <p>Record the free space, then size the folders one level at a time until a directory belongs to one tool. That tells you which cleanup you need. Clean it with that tool&rsquo;s own command where it has one, never by deleting files inside a cache a tool manages. Then record the free space again, because a cleanup&rsquo;s own report isn&rsquo;t what the disk got back.</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-Volume</span> <span class="console__token">-DriveLetter</span> <span class="console__token">C</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">SizeRemaining,</span> <span class="console__token">Size</span>
</span><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-ChildItem</span> <span class="console__token">-LiteralPath</span> <span class="console__token">$env:USERPROFILE</span> <span class="console__token">-Force</span> <span class="console__token">-Directory</span> <span class="console__token">|</span> <span class="console__token">ForEach-Object</span> <span class="console__token">{</span> <span class="console__token">[pscustomobject]@{</span> <span class="console__token">Name</span> <span class="console__token">=</span> <span class="console__token">$_.Name;</span> <span class="console__token">GiB</span> <span class="console__token">=</span> <span class="console__token">[math]::Round((Get-ChildItem</span> <span class="console__token">-LiteralPath</span> <span class="console__token">$_.FullName</span> <span class="console__token">-Recurse</span> <span class="console__token">-File</span> <span class="console__token">-Force</span> <span class="console__token">-ErrorAction</span> <span class="console__token">SilentlyContinue</span> <span class="console__token">|</span> <span class="console__token">Measure-Object</span> <span class="console__token">Length</span> <span class="console__token">-Sum).Sum</span> <span class="console__token">/</span> <span class="console__token">1GB,</span> <span class="console__token">2)</span> <span class="console__token">}</span> <span class="console__token">}</span> <span class="console__token">|</span> <span class="console__token">Sort-Object</span> <span class="console__token">GiB</span> <span class="console__token">-Descending</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">-First</span> <span class="console__token">10</span></span></code></pre>
    </div>
  </div></div>
</div>

<p>My Windows 10 PC had 586.4 GB free on a 999.0 GB disk, so the disk wasn&rsquo;t full and nothing was urgent. I measured it anyway. I use it for ComfyUI and Hugging Face models, Steam games and development, and I wanted to know what was there before it became a problem. The largest folder in my user profile was Documents, at 75.86 GiB. Nearly all of it was ComfyUI, and most of that was model checkpoints. Which directory is largest on your PC depends on what you run. The <a href="https://looselydecoupled.com/series/developer-windows-disk-cleanup/">series</a> covers each cause. This is the Windows counterpart of the Mac series, built from readings I took on this PC. The Mac version of this article is <a href="https://looselydecoupled.com/mac-disk-full-developer-caches/">What&rsquo;s Taking Up All the Space on My Developer Mac?</a>.</p>
<h2 id="record-the-free-space-before-you-start">Record the free space before you start<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#record-the-free-space-before-you-start"
     aria-label="Link to section: Record the free space before you start" data-pagefind-ignore></a>
</h2>
<p>You check a cleanup by comparing two readings, so take the first one now. <code>Get-Volume</code> reads the volume and changes nothing. C: is the drive Windows lives on; use the letter of the drive you are sizing up:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-Volume</span> <span class="console__token">-DriveLetter</span> <span class="console__token">C</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">SizeRemaining,</span> <span class="console__token">Size</span></span></code></pre>
    </div>
  </div><div class="code-block code-block--wrap console__output">
    <p class="console__output-label">Output</p>
    <div class="code-block__scroll"><pre><code><span class="line">
</span><span class="line"><span class="console__token">SizeRemaining</span>          <span class="console__token">Size</span>
</span><span class="line"><span class="console__token">-------------</span>          <span class="console__token">----</span>
</span><span class="line"> <span class="console__token">586395574272</span>  <span class="console__token">999002918912</span></span></code></pre>
    </div>
  </div></div><div class="tested" id="tested">
  <p class="label label--seam">Tested with</p><dl class="tested__rows">
    <div class="tested__row"><dt>Windows</dt> <dd>10 Pro 22H2 (10.0.19045), PowerShell 7</dd></div>
    <div class="tested__row"><dt>Date</dt> <dd>November 2026</dd></div>
  </dl>
</div>
<p>Both columns are bytes. Take the reading when the PC is quiet: no update installing, no application downloading, nothing you started still writing. I took this one with no ComfyUI or Python process running. A PC keeps writing while you work, so free space can move between readings. On this one, two readings taken a minute after a first one were each less than 2 MB below it.</p>
<p>Use one unit for every reading. <code>Get-Volume</code> reports bytes, and 586.4 GB and 546.1 GiB are the same free space. In this article, volume figures are GB and folder sizes are GiB (1024 to the third power, which is what <code>1GB</code> means in PowerShell).</p>
<h2 id="find-whats-taking-up-space-with-powershell">Find what&rsquo;s taking up space with PowerShell<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#find-whats-taking-up-space-with-powershell"
     aria-label="Link to section: Find what’s taking up space with PowerShell" data-pagefind-ignore></a>
</h2>
<p>Each command here reads sizes and changes nothing. A folder that PowerShell can&rsquo;t read adds nothing to its total, so a size can be too low. The function in step 2 counts those paths instead of hiding them. A size can also be too high: a hard link is a second directory entry for the same file data. PowerShell counts that file in full in every folder that has an entry for it, so two folders can share the same bytes and both report them.</p>
<!-- style-check: procedure -->
<ol>
<li>
<p>List the size of each folder in your user profile. This is the command from the answer:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-ChildItem</span> <span class="console__token">-LiteralPath</span> <span class="console__token">$env:USERPROFILE</span> <span class="console__token">-Force</span> <span class="console__token">-Directory</span> <span class="console__token">|</span> <span class="console__token">ForEach-Object</span> <span class="console__token">{</span> <span class="console__token">[pscustomobject]@{</span> <span class="console__token">Name</span> <span class="console__token">=</span> <span class="console__token">$_.Name;</span> <span class="console__token">GiB</span> <span class="console__token">=</span> <span class="console__token">[math]::Round((Get-ChildItem</span> <span class="console__token">-LiteralPath</span> <span class="console__token">$_.FullName</span> <span class="console__token">-Recurse</span> <span class="console__token">-File</span> <span class="console__token">-Force</span> <span class="console__token">-ErrorAction</span> <span class="console__token">SilentlyContinue</span> <span class="console__token">|</span> <span class="console__token">Measure-Object</span> <span class="console__token">Length</span> <span class="console__token">-Sum).Sum</span> <span class="console__token">/</span> <span class="console__token">1GB,</span> <span class="console__token">2)</span> <span class="console__token">}</span> <span class="console__token">}</span> <span class="console__token">|</span> <span class="console__token">Sort-Object</span> <span class="console__token">GiB</span> <span class="console__token">-Descending</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">-First</span> <span class="console__token">10</span></span></code></pre>
    </div>
  </div></div><p>On the PC measured here, an inventory of the same folders on 2026-11-01 put <code>Documents</code> first at 75.86 GiB, then <code>AppData</code> at 31.89 GiB, <code>.cache</code> at 6.14 GiB and <code>OneDrive</code> at 5.45 GiB.</p>
</li>
<li>
<p>Define a function that sizes one level of any path, folders and files together, and counts what it could not read. Then run it on the largest folder, and on the largest folder inside that, until one tool owns the directory:</p>
<div class="code-block" data-copyable data-copy-label="PowerShell">
  <div class="code-block__head"><span class="code-block__lang">PowerShell</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nv">$script:unread</span> <span class="p">=</span> <span class="mf">0</span>
</span></span><span class="line"><span class="cl"><span class="kd">function</span><span class="w"> </span><span class="nb">Get-FolderSize($root</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nb">Get-ChildItem</span> <span class="n">-LiteralPath</span> <span class="nv">$root</span> <span class="n">-Force</span> <span class="p">|</span> <span class="nb">ForEach-Object</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nv">$e</span> <span class="p">=</span> <span class="vm">$null</span>
</span></span><span class="line"><span class="cl">    <span class="nv">$bytes</span> <span class="p">=</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$_</span><span class="p">.</span><span class="n">PSIsContainer</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="nb">Get-ChildItem</span> <span class="n">-LiteralPath</span> <span class="nv">$_</span><span class="p">.</span><span class="py">FullName</span> <span class="n">-Recurse</span> <span class="o">-File</span> <span class="n">-Force</span> <span class="n">-ErrorAction</span> <span class="n">SilentlyContinue</span> <span class="n">-ErrorVariable</span> <span class="n">e</span> <span class="p">|</span> <span class="nb">Measure-Object</span> <span class="n">Length</span> <span class="n">-Sum</span><span class="p">).</span><span class="py">Sum</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="py">Length</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="nv">$script:unread</span> <span class="p">+=</span> <span class="nv">$e</span><span class="p">.</span><span class="py">Count</span>
</span></span><span class="line"><span class="cl">    <span class="p">[</span><span class="no">pscustomobject</span><span class="p">]</span><span class="vm">@</span><span class="p">{</span> <span class="n">Name</span> <span class="p">=</span> <span class="nv">$_</span><span class="p">.</span><span class="n">Name</span><span class="p">;</span> <span class="n">GiB</span> <span class="p">=</span> <span class="p">[</span><span class="no">math</span><span class="p">]::</span><span class="n">Round</span><span class="p">(</span><span class="nv">$bytes</span> <span class="p">/</span> <span class="mf">1</span><span class="p">GB,</span> <span class="mf">2</span><span class="p">)</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span> <span class="p">|</span> <span class="nb">Sort-Object</span> <span class="n">GiB</span> <span class="n">-Descending</span> <span class="p">|</span> <span class="nb">Select-Object</span> <span class="n">-First</span> <span class="mf">8</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
  </div>
</div><div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-FolderSize</span> <span class="console__token">&#34;$env:USERPROFILE\Documents&#34;</span>
</span><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">&#34;$script:unread</span> <span class="console__token">paths</span> <span class="console__token">could</span> <span class="console__token">not</span> <span class="console__token">be</span> <span class="console__token">read&#34;</span></span></code></pre>
    </div>
  </div></div><p>Repeat <code>Get-FolderSize</code> on the largest entry it lists. On this PC that was <code>Documents\ComfyUI</code>, where the <code>models</code> folder holds the checkpoints, text encoders and LoRA files.</p>
</li>
<li>
<p>Check the hidden places, even if they didn&rsquo;t top the first list. <code>AppData\Local</code> holds the caches that tools keep for themselves. The files at the root of C: include the ones Windows manages, such as <code>hiberfil.sys</code>:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-FolderSize</span> <span class="console__token">&#34;$env:USERPROFILE\AppData\Local&#34;</span>
</span><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-ChildItem</span> <span class="console__token">C:\</span> <span class="console__token">-Force</span> <span class="console__token">-File</span> <span class="console__token">-ErrorAction</span> <span class="console__token">SilentlyContinue</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">Name,</span> <span class="console__token">@{</span> <span class="console__token">n</span> <span class="console__token">=</span> <span class="console__token">&#39;GiB&#39;;</span> <span class="console__token">e</span> <span class="console__token">=</span> <span class="console__token">{</span> <span class="console__token">[math]::Round($_.Length</span> <span class="console__token">/</span> <span class="console__token">1GB,</span> <span class="console__token">2)</span> <span class="console__token">}</span> <span class="console__token">}</span> <span class="console__token">|</span> <span class="console__token">Sort-Object</span> <span class="console__token">GiB</span> <span class="console__token">-Descending</span></span></code></pre>
    </div>
  </div></div><p>On this PC, the 2026-11-01 inventory read <code>hiberfil.sys</code> at 6.38 GiB and <code>pagefile.sys</code> at 2.82 GiB. <code>pagefile.sys</code> changes size; it read 2.38 GiB on 2026-10-30.</p>
</li>
<li>
<p>For a package manager, ask the tool where its cache is rather than assuming a path. Each command runs only when the tool is on <code>PATH</code>; if PowerShell can&rsquo;t find it, see <a href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#cache-command-not-found">Cache command not found</a>:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">uv</span> <span class="console__token">cache</span> <span class="console__token">dir</span>
</span><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">python</span> <span class="console__token">-m</span> <span class="console__token">pip</span> <span class="console__token">cache</span> <span class="console__token">dir</span></span></code></pre>
    </div>
  </div></div></li>
</ol>
<!-- style-check: end procedure -->
<p>The sizes in the next section come from a separate inventory of known locations on the same PC. It doesn&rsquo;t drill down level by level, so use it as a checklist of places to look, not as a replacement for the steps earlier.</p>
<h2 id="match-the-directory-to-its-cause">Match the directory to its cause<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#match-the-directory-to-its-cause"
     aria-label="Link to section: Match the directory to its cause" data-pagefind-ignore></a>
</h2>
<p>This table lists the large directories on this PC and the part of the series that covers each one:</p>
<div class="table-wrap" data-scrollable data-label="Table: Directory and what fills it">
  <table>
    <thead>
      <tr><th scope="col">Directory and what fills it</th><th class="align-right" scope="col">Size here</th><th scope="col">Covered in</th></tr>
    </thead>
    <tbody>
      <tr><td><code>Documents\ComfyUI</code><br>Model checkpoints (54.65 GiB), text encoders, LoRA files, and one virtual environment</td><td class="align-right">75.86 GiB</td><td>Part 3 (AI models)</td></tr>
      <tr><td><code>AppData</code><br>Per-user application data, including the two caches below</td><td class="align-right">31.89 GiB</td><td>Part 4 (hidden caches)</td></tr>
      <tr><td><code>.cache\huggingface</code><br>Hugging Face model cache; the newest file is from 2023</td><td class="align-right">5.27 GiB</td><td>Part 3 (AI models)</td></tr>
      <tr><td><code>AppData\Local\uv</code><br>The uv cache of ComfyUI Desktop&rsquo;s bundled uv; at least one of its files is hard-linked into the ComfyUI virtual environment</td><td class="align-right">4.56 GiB</td><td>Part 4 (hidden caches)</td></tr>
      <tr><td><code>AppData\Local\pip</code><br>The pip cache of a Python 3.10 since uninstalled</td><td class="align-right">2.72 GiB</td><td>Part 4 (hidden caches)</td></tr>
      <tr><td><code>C:\hiberfil.sys</code><br>The hibernation file</td><td class="align-right">6.38 GiB</td><td>Part 6 (Windows itself)</td></tr>
      <tr><td>Component store, <code>WinSxS</code><br>Windows system components; DISM reports the real size and needs an elevated session; read two days earlier</td><td class="align-right">11.76 GB</td><td>Part 6 (Windows itself)</td></tr>
      <tr><td><code>C:\Windows\SoftwareDistribution\Download</code><br>Windows Update downloads</td><td class="align-right">1.15 GiB</td><td>Part 6 (Windows itself)</td></tr>
      <tr><td><code>C:\Windows\Installer</code><br>Installer files that Windows keeps</td><td class="align-right">1.07 GiB</td><td>Part 6 (Windows itself)</td></tr>
      <tr><td><code>C:\$Recycle.Bin</code><br>Held nine crash dumps (178.8 MB, 0.17 GiB) on 2026-10-30 before it was emptied, and 129 bytes right after; the size here is the later inventory&rsquo;s reading</td><td class="align-right">0.02 GiB</td><td>Part 2 (crash dumps)</td></tr>
      <tr><td><code>C:\ProgramData\NVIDIA Corporation\Downloader</code><br>NVIDIA app downloads</td><td class="align-right">2.41 GiB</td><td>Part 5 (gaming)</td></tr>
      <tr><td>Steam library<br>Mostly on another drive; 0.62 GiB on C:, with shader and web caches under 1 GiB each</td><td class="align-right">0.62 GiB on C:</td><td>Part 5 (gaming)</td></tr>
    </tbody>
  </table>
</div>
<p>The rows overlap. Of the 3.96 GiB in the ComfyUI virtual environment&rsquo;s <code>site-packages</code>, 3.87 GiB are in files with more than one hard link. On the one file I checked, the other link was in the uv cache. A hard-linked file counts in full in both the <code>Documents\ComfyUI</code> row and the <code>uv</code> row, so clearing the uv cache can free much less than its folder total. Part 4 measures how much.</p>
<p>The numbers move between runs. One ComfyUI update grew the uv cache from 3.55 to 4.56 GiB. Quote the reading you took, not one from this table.</p>
<p>Some directories stay whatever their size:</p>
<ul>
<li>Model files you still use. A checkpoint isn&rsquo;t a cache.</li>
<li>A Steam library. It holds installed games, not leftovers.</li>
<li><code>OneDrive</code> and <code>iCloudDrive</code>. Both sync with online storage. <code>OneDrive</code> is a reparse point here: its files can be placeholders for files stored online, so neither folder&rsquo;s size is a cleanup target.</li>
<li><code>C:\Windows\Installer</code> and the component store. Do not delete files from either by hand. Windows manages both, and part 6 (Windows itself) covers the commands that do.</li>
</ul>
<p>Docker and WSL aren&rsquo;t covered in this series. Docker Desktop and any WSL distribution are absent on this PC (only Windows&rsquo; built-in <code>wsl.exe</code> stub is present), so this article has no readings for them.</p>
<h2 id="record-the-free-space-again">Record the free space again<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#record-the-free-space-again"
     aria-label="Link to section: Record the free space again" data-pagefind-ignore></a>
</h2>
<p>Run the same command you started with:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">PS&gt; </span><span class="console__token">Get-Volume</span> <span class="console__token">-DriveLetter</span> <span class="console__token">C</span> <span class="console__token">|</span> <span class="console__token">Select-Object</span> <span class="console__token">SizeRemaining,</span> <span class="console__token">Size</span></span></code></pre>
    </div>
  </div></div><p>Compare the new figure with the first reading, not with the size of what you removed; only the volume&rsquo;s figure says what the disk got back. <a href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#emptying-the-bin-freed-no-space">Emptying the bin freed no space</a> shows a cleanup where the two differed.</p>
<h2 id="do-this-with-a-coding-agent">Do this with a coding agent<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#do-this-with-a-coding-agent"
     aria-label="Link to section: Do this with a coding agent" data-pagefind-ignore></a>
</h2>
<p>Paste this prompt into your own local coding agent. It measures and reports, and it changes nothing:</p>
<div class="code-block" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Find what is taking up space on this Windows PC&#39;s system drive. Measure and
</span></span><span class="line"><span class="cl">report only. Delete, move or clean nothing, and stop and ask me before any
</span></span><span class="line"><span class="cl">change. Use PowerShell. Do not run elevated commands unless I ask. Do not
</span></span><span class="line"><span class="cl">open, move or change files in model folders, game libraries or the Hugging Face
</span></span><span class="line"><span class="cl">cache. You may size them, but do not suggest deleting their contents.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">1. Record free space on C: first with Get-Volume -DriveLetter C
</span></span><span class="line"><span class="cl">   (SizeRemaining, Size). Say that the figures are bytes, and use one unit for
</span></span><span class="line"><span class="cl">   every size you report.
</span></span><span class="line"><span class="cl">2. List the size of each folder in my user profile, then do the same on the
</span></span><span class="line"><span class="cl">   largest folder inside it, one level at a time, until each large directory
</span></span><span class="line"><span class="cl">   belongs to one tool. In this step do not recurse into ComfyUI, models,
</span></span><span class="line"><span class="cl">   checkpoints, .cache\huggingface, Steam or any game library; report each by
</span></span><span class="line"><span class="cl">   size as a whole and map it to part 3 (models) or part 5 (games) by name.
</span></span><span class="line"><span class="cl">   Also check AppData\Local and the files at the root of C:. Count the paths
</span></span><span class="line"><span class="cl">   you could not read, and say that a size can be too low because of them, or
</span></span><span class="line"><span class="cl">   too high because a hard-linked file counts in every folder that links it.
</span></span><span class="line"><span class="cl">   Ask package managers for their cache paths (for example uv cache dir or
</span></span><span class="line"><span class="cl">   python -m pip cache dir) instead of assuming them, and say so if a tool is
</span></span><span class="line"><span class="cl">   not on PATH.
</span></span><span class="line"><span class="cl">3. For each measured directory over 1 GiB, report a table with its size, which
</span></span><span class="line"><span class="cl">   tool owns it, what fills it, and that tool&#39;s own cleanup command if it has
</span></span><span class="line"><span class="cl">   one.
</span></span><span class="line"><span class="cl">4. Mark anything that is in use or holds work: a running application that has
</span></span><span class="line"><span class="cl">   files open there, an update in progress, a game launcher, a project with
</span></span><span class="line"><span class="cl">   uncommitted changes. Say what would be lost if each were removed.
</span></span><span class="line"><span class="cl">5. Treat OneDrive and iCloud folders as placeholders for online files and do
</span></span><span class="line"><span class="cl">   not scan them for cleanup.
</span></span><span class="line"><span class="cl">6. End by naming which part of the series applies to each large folder: part 2
</span></span><span class="line"><span class="cl">   for crash dumps and error reports, part 3 for AI models, part 4 for hidden
</span></span><span class="line"><span class="cl">   uv and pip caches, part 5 for gaming, part 6 for Windows itself.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Then stop and wait. I will choose what to clean.</span></span></code></pre></div></div>
  </div>
</div><h2 id="common-failures">Common failures<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#common-failures"
     aria-label="Link to section: Common failures" data-pagefind-ignore></a>
</h2>
<h3 id="emptying-the-bin-freed-no-space">Emptying the bin freed no space<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#emptying-the-bin-freed-no-space"
     aria-label="Link to section: Emptying the bin freed no space" data-pagefind-ignore></a>
</h3>
<p>I emptied the bin with <code>Clear-RecycleBin -DriveLetter C -Force</code>. It held nine crash dumps, 178.8 MB. <code>Get-Volume</code> read 581,462,724,608 bytes before and 581,462,724,608 after. One minute later, two more readings were each less than 2 MB below the first, and the <code>$Recycle.Bin</code> folder was down to 129 bytes. Free space didn&rsquo;t rise.</p>
<p>The cause isn&rsquo;t established, and the evidence points away from restore points. In a controlled test, I created a 1 GiB file, deleted it and read <code>Get-Volume</code>, with and without a shadow copy newer than the file, and the space came back at once both times. The dumps are gone, so the original run can&rsquo;t be repeated.</p>
<p>Do not delete shadow copies to make the number move. They are the restore points System Restore uses.</p>
<h3 id="cache-command-not-found">Cache command not found<a class="heading-anchor" href="https://looselydecoupled.com/find-whats-taking-up-space-c-drive-windows/#cache-command-not-found"
     aria-label="Link to section: Cache command not found" data-pagefind-ignore></a>
</h3>
<p>On this PC, neither <code>uv</code> nor <code>python</code> is on <code>PATH</code>, the list of folders PowerShell searches for a command, so neither command can find a tool to run. The cache folders exist all the same: <code>AppData\Local\uv</code> at 4.56 GiB and <code>AppData\Local\pip</code> at 2.72 GiB. A cache can belong to a copy of a tool that an application bundles, or to a tool you&rsquo;ve since uninstalled. Here there&rsquo;s one of each. The uv cache belongs to the copy of uv that ComfyUI Desktop bundles, which its log shows running <code>uv pip install --dry-run</code> at the start of an update, and whose cache gained files during that update. The pip cache belongs to a Python 3.10 installed in 2022 and since uninstalled; its newest file is from January 2023, and nothing on the PC uses it. Size the folder with <code>Get-FolderSize</code>, as in step 2, and treat the owner as unconfirmed until you find the tool that wrote it.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
