Zum Inhalt springen
Bilder & Medien

Warum dein WordPress-Uploads-Ordner so groß ist

Dein WordPress-Uploads-Ordner ist so groß, weil WordPress niemals nur eine Datei pro Bild speichert. Jeder Upload erzeugt einen festen Satz an verkleinerten Kopien neben dem

Veröffentlicht

Dein WordPress-Uploads-Ordner ist so groß, weil WordPress niemals nur eine Datei pro Bild speichert. Jeder Upload erzeugt einen festen Satz an verkleinerten Kopien neben dem Original — sieben Stück für ein typisches Foto in Kameragröße, noch bevor ein Theme oder Plugin weitere hinzufügt. Nichts ist beschädigt; du siehst schlicht die Vervielfachung, die bei jedem einzelnen Upload passiert. Die Lösung: Hör auf, die Größen zu erzeugen, die du nie ausgibst, und regeneriere anschließend, damit die alten Kopien von der Festplatte gelöscht werden.

Rechne es dir aus

Lade ein einziges 4000×3000 JPEG hoch und sieh in /wp-content/uploads/2026/07/ nach. Du findest dort nicht eine Datei. Du findest diese:

  • photo.jpg — das unveränderte Original
  • photo-scaled.jpg — eine 2560px-Kopie, die WordPress anstelle des Originals ausliefert
  • photo-150x150.jpgthumbnail
  • photo-300x225.jpgmedium
  • photo-768x576.jpgmedium_large
  • photo-1024x768.jpglarge
  • photo-1536x1152.jpg — das 2× medium_large
  • photo-2048x1536.jpg — das 2× large

Das ist das Original plus sieben Ableitungen, allein vom Core. Aus einem 3-MB-Upload können so 5–6 MB auf der Festplatte werden, bevor überhaupt ein Plugin läuft. Nimm jetzt noch ein Theme dazu, das vier eigene Größen registriert, und WooCommerce (drei weitere), und aus einem Upload werden vierzehn oder fünfzehn Dateien. Multipliziere das mit einer Mediathek aus ein paar tausend Bildern, und die Ordnergröße ist kein Rätsel mehr.

Wenn du die genaue Zahl für deine eigenen Abmessungen und registrierten Größen willst, übernimmt der Bildspeicher-Rechner die Multiplikation für dich.

Warum das passiert

Beim Upload ruft wp_generate_attachment_metadata() die Funktion wp_create_image_subsizes() auf, die über jede von get_intermediate_image_sizes() zurückgegebene Größe iteriert und für jede, für die das Original groß genug ist, eine Datei schreibt. Der Core registriert thumbnail, medium, medium_large, large sowie die in WP 5.3 hinzugekommenen Retina-Größen 1536x1536 und 2048x2048. Jedes Theme oder Plugin, das add_image_size() aufruft, hängt sich in genau diese Schleife ein — dauerhaft, für jeden künftigen Upload.

Die -scaled-Datei stammt aus einem separaten Mechanismus: dem big_image_size_threshold-Filter, standardmäßig 2560px. Alles Breitere bekommt eine verkleinerte Kopie, die zum ausgelieferten „vollen“ Bild wird, während das Original auf der Festplatte bleibt. Ein großer Upload behält also beide — das riesige Original und die 2560px-Version.

Was dein Setup für ein bestimmtes Bild genau erzeugt, kannst du mit dem Bildgrößen-Inspektor sehen.

So behebst du es, der Reihe nach

1. Miss, bevor du irgendetwas anfasst. Raten kostet Zeit. Vom Site-Root aus:

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. Melde die Größen ab, die du nicht ausgibst. Die meisten Themes geben die 1536- und 2048-Größen nie aus, und viele verwenden medium_large nie. Wirf sie raus:

// 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. Regeneriere, um die alten Kopien zu löschen. Das Abmelden stoppt nur die künftige Erzeugung — die bereits auf der Festplatte liegenden Dateien bleiben, bis du regenerierst:

wp media regenerate --yes

Aktuelle WP-CLI-Versionen löschen dabei die Dateien für Größen, die nicht mehr registriert sind. Wenn du stattdessen das Plugin Regenerate Thumbnails nutzt, setze bei ihm den Haken bei „delete unregistered sizes“ — ohne dieses Häkchen bleiben die alten Dateien erhalten.

4. Jage verwaiste Dateien. Ein Theme-Wechsel räumt die vom alten Theme registrierten Größen nie auf. Auch das Löschen von Beiträgen entfernt deren Ableitungen nicht immer. Wenn du -sh nach Schritt 3 immer noch weit über dem liegt, was der Rechner vorhersagt, hast du Waisen — Dateien auf der Festplatte, auf die kein Anhang mehr verweist.

Was du nicht tun solltest

Deaktiviere skalierte Bilder nicht, um „Platz zu sparen“. Die -scaled-Datei ist kleiner als dein Original. big_image_size_threshold abzuschalten löscht nichts — es sorgt nur dafür, dass WordPress jedem Besucher das volle, mehrere Megabyte große Original ausliefert. Das ist eine Entscheidung über Bandbreite und Qualität, kein Aufräumen von Speicherplatz, und meist wird das Seitengewicht dadurch schlechter. Das Tool zum Deaktivieren skalierter Bilder erklärt, wann das wirklich die richtige Wahl ist; deinen Uploads-Ordner zu verkleinern gehört nicht dazu.

Lösche keine Dateien direkt aus uploads per SFTP. Die Subsize-Liste jedes Anhangs steckt in seinem _wp_attachment_metadata. Dateien von Hand zu löschen hinterlässt kaputte Verweise, und die Regeneration kann eine Größe nicht neu aufbauen, wenn du das Original entfernt hast, aus dem sie abgeleitet wird. Lösch das Original, und das Bild ist unwiederbringlich weg.

Setze thumbnail/medium/large unter Einstellungen → Medien nicht auf 0 in der Erwartung, dass der Ordner schrumpft. Eine Größe auf null zu setzen stoppt die künftige Erzeugung, rührt aber nichts an, was schon auf der Festplatte liegt, und die Oberfläche erreicht weder medium_large, 1536, 2048 noch irgendeine Theme-/Plugin-Größe — die sind dort gar nicht.

Gib nicht der Datenbank die Schuld. Ein schwerer uploads-Ordner besteht aus Bilddateien, so gut wie nie aus der DB. Tabellen zu optimieren bewegt die Zahl nicht.

Immer noch festgefahren?

Wenn der Ordner nach dem Regenerieren immer noch größer ist als erwartet, jage deine echten Bildabmessungen und registrierten Größen durch den Speicher-Rechner und vergleiche seinen Wert mit du -sh wp-content/uploads. Eine große Lücke bedeutet verwaiste Dateien von einem alten Theme oder aus gelöschten Beiträgen — nicht der Core, und nicht etwas, das weiteres Regenerieren beheben wird. Eine kleine Lücke bedeutet, dass die Rechnung eben ist, wie sie ist: sieben plus Dateien pro Upload, die genau so funktionieren, wie es vorgesehen ist.