Naar de inhoud
Afbeeldingen & media

Waarom je WordPress uploads-map zo groot is

Je WordPress uploads-map is groot omdat WordPress nooit één bestand per afbeelding opslaat. Elke upload genereert een vaste set verkleinde kopieën naast het

Gepubliceerd

Je WordPress uploads-map is groot omdat WordPress nooit één bestand per afbeelding opslaat. Elke upload genereert een vaste set verkleinde kopieën naast het origineel — zeven stuks voor een gemiddelde cameragrote foto, nog voordat een thema of plugin er meer aan toevoegt. Er is niets beschadigd; je ziet gewoon de vermenigvuldiging die bij elke upload plaatsvindt. De oplossing is om te stoppen met het genereren van formaten die je toch nooit uitserveert, en daarna opnieuw te genereren zodat de oude kopieën van de schijf worden verwijderd.

Doe de rekensom

Upload één 4000×3000 JPEG en kijk in /wp-content/uploads/2026/07/. Je vindt daar niet één bestand. Je vindt deze:

  • photo.jpg — het origineel, ongewijzigd
  • photo-scaled.jpg — een kopie van 2560px die WordPress serveert in plaats van het origineel
  • photo-150x150.jpgthumbnail
  • photo-300x225.jpgmedium
  • photo-768x576.jpgmedium_large
  • photo-1024x768.jpglarge
  • photo-1536x1152.jpg — de 2× medium_large
  • photo-2048x1536.jpg — de 2× large

Dat is het origineel plus zeven afgeleiden, alleen al vanuit de core. Een upload van 3 MB kan als 5–6 MB op de schijf belanden voordat er ook maar één plugin draait. Voeg daar een thema aan toe dat zelf vier formaten registreert en WooCommerce (nog eens drie), en één upload wordt veertien of vijftien bestanden. Vermenigvuldig dat met een bibliotheek van een paar duizend afbeeldingen en de grootte van de map is geen mysterie meer.

Wil je het exacte aantal voor je eigen afmetingen en geregistreerde formaten, dan doet de image storage calculator de rekensom voor je.

Waarom het gebeurt

Wanneer je uploadt, roept wp_generate_attachment_metadata() de functie wp_create_image_subsizes() aan, die door elk formaat loopt dat get_intermediate_image_sizes() teruggeeft en een bestand wegschrijft voor elk formaat waar het origineel groot genoeg voor is. De core registreert thumbnail, medium, medium_large, large, plus de retina-formaten 1536x1536 en 2048x2048 die in WP 5.3 zijn toegevoegd. Elk thema of elke plugin die add_image_size() aanroept, voegt iets toe aan diezelfde loop — permanent, voor elke toekomstige upload.

Het -scaled-bestand komt uit een apart mechanisme: de big_image_size_threshold filter, standaard 2560px. Alles wat breder is krijgt een geschaalde kopie die de uitgeserveerde “full” afbeelding wordt, terwijl het origineel op de schijf blijft staan. Een grote upload houdt dus zowel het enorme origineel als de versie van 2560px.

Je kunt precies zien wat jouw setup voor een bepaalde afbeelding genereert met de image sizes inspector.

Hoe je het oplost, op volgorde

1. Meet voordat je iets aanraakt. Gokken kost tijd. Vanuit de root van de site:

du -sh wp-content/uploads
find wp-content/uploads -type f \( -name '*.jpg' -o -name '*.webp' -o -name '*.png' \) | wc -l
du -ah wp-content/uploads | sort -rh | head -20

2. Deregistreer de formaten die je niet uitserveert. De meeste thema’s tonen nooit de formaten 1536 en 2048, en veel gebruiken medium_large nooit. Gooi ze eruit:

// functions.php — stop generating sizes this site never outputs
add_action( 'init', function () {
    remove_image_size( '1536x1536' );
    remove_image_size( '2048x2048' );
} );

// Drop medium_large too, if your theme doesn't use the 768px size
add_filter( 'intermediate_image_sizes_advanced', function ( $sizes ) {
    unset( $sizes['medium_large'] );
    return $sizes;
} );

3. Genereer opnieuw om de oude kopieën te verwijderen. Deregistreren stopt alleen toekomstige generatie — de bestanden die al op de schijf staan blijven bestaan tot je opnieuw genereert:

wp media regenerate --yes

Recente WP-CLI-versies verwijderen tijdens het proces de bestanden voor formaten die niet meer geregistreerd zijn. Gebruik je in plaats daarvan de plugin Regenerate Thumbnails, vink dan de optie “delete unregistered sizes” aan — zonder dat vinkje blijven de oude bestanden staan.

4. Spoor verweesde bestanden op. Bij het wisselen van thema wordt nooit opgeruimd welke formaten het oude thema geregistreerd had. Ook het verwijderen van berichten verwijdert niet altijd hun afgeleiden. Als du -sh na stap 3 nog steeds ver boven ligt wat de calculator voorspelt, heb je wezen — bestanden op de schijf waar geen enkele bijlage naar verwijst.

Wat je niet moet doen

Schakel scaled images niet uit om “ruimte te besparen”. Het -scaled-bestand is kleiner dan je origineel. Het uitzetten van big_image_size_threshold verwijdert niets — het zorgt er alleen voor dat WordPress het volledige origineel van meerdere megabytes aan elke bezoeker serveert. Dat is een keuze rond bandbreedte en kwaliteit, geen opschoning van schijfruimte, en het maakt de paginagrootte meestal juist erger. De disable-scaled-images tool legt uit wanneer het écht de juiste keuze is; het verkleinen van je uploads-map hoort daar niet bij.

Verwijder geen bestanden rechtstreeks uit uploads via SFTP. De lijst met subformaten van elke bijlage staat in zijn _wp_attachment_metadata. Bestanden met de hand verwijderen laat kapotte verwijzingen achter, en opnieuw genereren kan een formaat niet herbouwen als je het origineel waar het van is afgeleid hebt weggegooid. Verwijder het origineel en die afbeelding is definitief weg.

Zet thumbnail/medium/large niet op 0 in Instellingen → Media in de verwachting dat de map krimpt. Een formaat op nul zetten stopt toekomstige generatie, maar raakt niets aan wat al op de schijf staat, en de interface kan medium_large, 1536, 2048 of welk thema-/pluginformaat dan ook niet bereiken — die staan er niet.

Geef de database niet de schuld. Een zware uploads-map bestaat uit afbeeldingsbestanden, vrijwel nooit uit de database. Tabellen optimaliseren verandert het getal niet.

Kom je er niet uit?

Als de map na het opnieuw genereren nog steeds groter is dan verwacht, haal dan je echte afbeeldingsafmetingen en geregistreerde formaten door de storage calculator en vergelijk het cijfer met du -sh wp-content/uploads. Een groot verschil betekent verweesde bestanden van een oud thema of verwijderde berichten — niet de core, en niet iets wat meer opnieuw genereren oplost. Een klein verschil betekent dat de rekensom simpelweg is wat hij is: zeven-plus bestanden per upload, precies werkend zoals bedoeld.