Pourquoi votre dossier uploads WordPress est aussi volumineux
Votre dossier uploads WordPress est volumineux parce que WordPress ne stocke jamais un seul fichier par image. Chaque envoi déclenche une série fixe de copies redimensionnées à côté de
Publié
Votre dossier uploads WordPress est volumineux parce que WordPress ne stocke jamais un seul fichier par image. Chaque envoi déclenche une série fixe de copies redimensionnées à côté de l’original — sept d’entre elles pour une photo au format d’un appareil photo classique, avant même qu’un thème ou un plugin n’en ajoute d’autres. Rien n’est corrompu ; vous constatez simplement la multiplication qui se produit à chaque envoi. La solution : arrêter de générer les tailles que vous ne servez jamais, puis régénérer pour que les anciennes copies soient supprimées du disque.
Faites le calcul
Envoyez un seul JPEG de 4000×3000 et regardez à l’intérieur de /wp-content/uploads/2026/07/. Vous n’y trouverez pas un seul fichier. Vous y trouverez ceux-ci :
photo.jpg— l’original, intactphoto-scaled.jpg— une copie de 2560px que WordPress sert à la place de l’originalphoto-150x150.jpg—thumbnailphoto-300x225.jpg—mediumphoto-768x576.jpg—medium_largephoto-1024x768.jpg—largephoto-1536x1152.jpg— lemedium_largeen 2×photo-2048x1536.jpg— lelargeen 2×
Cela fait l’original plus sept dérivés, rien qu’avec le cœur de WordPress. Un envoi de 3 Mo peut peser 5 à 6 Mo sur le disque avant même qu’un seul plugin ne s’exécute. Ajoutez maintenant un thème qui enregistre quatre tailles supplémentaires et WooCommerce (trois de plus), et un seul envoi devient quatorze ou quinze fichiers. Multipliez par une médiathèque de quelques milliers d’images et la taille du dossier n’a plus rien d’un mystère.
Si vous voulez le chiffre exact pour vos propres dimensions et tailles enregistrées, le calculateur de stockage d’images fait la multiplication pour vous.
Pourquoi cela se produit
Lors de l’envoi, wp_generate_attachment_metadata() appelle wp_create_image_subsizes(), qui boucle sur chaque taille renvoyée par get_intermediate_image_sizes() et écrit un fichier pour chacune que l’original est assez grand pour produire. Le cœur enregistre thumbnail, medium, medium_large, large, plus les tailles retina 1536x1536 et 2048x2048 ajoutées dans WP 5.3. Tout thème ou plugin qui appelle add_image_size() vient s’ajouter à cette même boucle — de façon permanente, pour chaque envoi futur.
Le fichier -scaled provient d’un mécanisme distinct : le filtre big_image_size_threshold, réglé par défaut à 2560px. Tout ce qui est plus large reçoit une copie redimensionnée qui devient l’image « full » servie, tandis que l’original reste sur le disque. Ainsi, un envoi volumineux conserve à la fois l’original géant et la version 2560px.
Vous pouvez voir exactement ce que votre configuration génère pour une image donnée avec l’inspecteur de tailles d’images.
Comment corriger le problème, dans l’ordre
1. Mesurez avant de toucher à quoi que ce soit. Deviner fait perdre du temps. Depuis la racine du 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. Désenregistrez les tailles que vous ne servez pas. La plupart des thèmes ne produisent jamais les tailles 1536 et 2048, et beaucoup n’utilisent jamais medium_large. Supprimez-les :
// 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. Régénérez pour supprimer les anciennes copies. Le désenregistrement ne fait qu’arrêter la génération future — les fichiers déjà présents sur le disque restent tant que vous ne régénérez pas :
wp media regenerate --yes
Les versions récentes de WP-CLI suppriment au passage les fichiers des tailles qui ne sont plus enregistrées. Si vous utilisez plutôt le plugin Regenerate Thumbnails, cochez son option « delete unregistered sizes » — sans cette case cochée, les anciens fichiers restent.
4. Traquez les fichiers orphelins. Changer de thème ne nettoie jamais les tailles que l’ancien thème avait enregistrées. Supprimer des articles ne supprime pas toujours leurs dérivés non plus. Après l’étape 3, si du -sh reste bien au-dessus de ce que le calculateur prédit, vous avez des orphelins — des fichiers sur le disque qu’aucune pièce jointe ne référence.
Ce qu’il ne faut pas faire
Ne désactivez pas les images scaled pour « gagner de la place ». Le fichier -scaled est plus petit que votre original. Désactiver big_image_size_threshold ne supprime rien — cela pousse simplement WordPress à servir l’original de plusieurs mégaoctets à chaque visiteur. C’est une décision de bande passante et de qualité, pas un nettoyage de stockage, et cela alourdit généralement le poids des pages. L’outil disable-scaled-images explique quand c’est réellement le bon choix ; réduire votre dossier uploads n’en fait pas partie.
Ne supprimez pas les fichiers directement depuis uploads via SFTP. La liste des sous-tailles de chaque pièce jointe est stockée dans son _wp_attachment_metadata. Supprimer les fichiers à la main laisse des références cassées, et la régénération ne peut pas reconstruire une taille si vous avez supprimé l’original dont elle dérive. Supprimez l’original et cette image est perdue pour de bon.
Ne réglez pas thumbnail/medium/large à 0 dans Réglages → Médias en espérant que le dossier rétrécira. Mettre une taille à zéro arrête la génération future mais ne touche à rien de ce qui est déjà sur le disque, et l’interface ne peut atteindre ni medium_large, ni 1536, ni 2048, ni aucune taille de thème ou de plugin — celles-ci n’y sont pas.
Ne mettez pas la base de données en cause. Un dossier uploads lourd, ce sont des fichiers image, presque jamais la base de données. Optimiser les tables ne fera pas bouger le chiffre.
Toujours bloqué ?
Si le dossier reste plus volumineux que prévu après régénération, passez vos vraies dimensions d’image et tailles enregistrées dans le calculateur de stockage et comparez son chiffre à du -sh wp-content/uploads. Un gros écart signifie des fichiers orphelins issus d’un ancien thème ou d’articles supprimés — pas le cœur, et pas quelque chose qu’une régénération de plus corrigera. Un petit écart signifie que le calcul est simplement ce qu’il est : plus de sept fichiers par envoi, fonctionnant exactement comme prévu.