WordPress Thumbnail Sizes: Why One Photo Becomes 8 Files
WordPress turns one large photo into 8 files: the original, a -scaled copy and 6 sizes. We tested 28 popular themes, WooCommerce and Elementor.
Short answer: WordPress core has six thumbnail sizes: thumbnail (150×150, cropped), medium (300), medium_large (768), large (1024), 1536 and 2048. A big photo also gets a -scaled copy at 2560 px, and the original stays on disk. So one camera photo becomes 8 files before your theme or plugins add anything. We counted them on WordPress 7.1.4 with 28 popular free themes, plus WooCommerce and Elementor. Below are the counts, the sizes each theme adds and the bytes each file takes.
The default WordPress image sizes
These are the sizes WordPress core registers. The pixel sizes and bytes come from one 5696×4784 photo (2,416,996 bytes) uploaded to WordPress 7.1.4 with no theme sizes and no plugins:
| Size name | Limit | What our photo became | File size |
|---|---|---|---|
thumbnail | 150×150, cropped | 150×150 | 7,017 bytes |
medium | fits inside 300×300 | 300×252 | 20,395 bytes |
medium_large | 768 wide | 768×645 | 110,230 bytes |
large | fits inside 1024×1024 | 1024×860 | 182,605 bytes |
1536x1536 | fits inside 1536×1536 | 1536×1290 | 367,093 bytes |
2048x2048 | fits inside 2048×2048 | 2048×1720 | 600,786 bytes |
-scaled copy | 2560 on the longest side | 2560×2150 | 884,855 bytes |
| original | kept as uploaded | 5696×4784 | 2,416,996 bytes |
Together that’s 4,589,977 bytes, 1.90 times the photo you uploaded. The two big sizes, 1536 and 2048, take more space than the four classic sizes put together (967,879 bytes against 320,247). When we read the top 5 Google results for “wordpress thumbnail sizes” on 2026-11-06, none of them named these two sizes. Core added the 1536 and 2048 sizes in WordPress 5.3 for high-density screens, and the 2560 px -scaled copy arrived in the same release.
Three things about this table:
- Only 3 of the 6 sizes show in Settings > Media. Thumbnail, medium and large have boxes there.
medium_large, 1536 and 2048 don’t, so you can’t switch them off from that screen. - WordPress never makes a size bigger than your upload. A 1200 px wide image skips 1536 and 2048, and a photo no wider or taller than 2560 px gets no
-scaledcopy. Our 8 files are what a large camera photo makes. - The
-scaledfile is what your pages use as the “full” image. The original is kept but not shown. Our guide on why WordPress adds -scaled to images explains when to keep that copy and how to turn it off.
How many files your theme adds
We installed the 28 themes on wordpress.org’s Popular list that have 50,000 or more active installs. Each one got the same upload on a clean WordPress 7.1.4 site with core settings reset between themes:
| Files per upload | Themes |
|---|---|
| 8 | 17 (16 add nothing, plus Inspiro) |
| 9 | 6 |
| 10 | 3 |
| 11 | 1 (OceanWP) |
| 13 | 1 (Sydney) |
16 of the 28 themes add no image sizes at all: Twenty Twenty-Five, Hello Elementor, Astra, Twenty Twenty-Four, Kadence, Twenty Twenty-Three, Extendable, Hello Biz, Blocksy, GeneratePress, Bluehost Blueprint, Twenty Twenty-Two, Royal Elementor Kit, PopularFX, Storefront and Colibri WP. On those themes core makes every one of the 8 files.
The 12 that change something:
| Theme (version tested) | Sizes it registers | Files per upload | Total bytes |
|---|---|---|---|
| Sydney 2.73 | sydney-large-thumb 1000 wide, sydney-medium-thumb 550×400 crop, sydney-small-thumb 230 wide, sydney-service-thumb 350 wide, sydney-mas-thumb 480 wide | 13 | 4,904,859 |
| OceanWP 4.2.8 | ocean-thumb-m 600×600, ocean-thumb-ml 800×450, ocean-thumb-l 1200×700 (all cropped) | 11 | 4,924,012 |
| Twenty Twenty 3.3 | post-thumbnail 1200 wide, twentytwenty-fullscreen 1980 wide | 10 | 5,396,559 |
| Twenty Seventeen 4.2 | twentyseventeen-featured-image 2000×1200 crop, twentyseventeen-thumbnail-avatar 100×100 crop | 10 | 5,010,448 |
| Envo Royal 1.0.14 | post-thumbnail 300×300 crop, envo-royal-img 650×430 crop | 10 | 4,680,147 |
| Twenty Twenty-One 2.9 | post-thumbnail 1568 wide | 9 | 4,970,782 |
| Twenty Nineteen 3.4 | post-thumbnail 1568 wide | 9 | 4,970,782 |
| Twenty Sixteen 3.9 | post-thumbnail 1200 wide | 9 | 4,829,143 |
| Neve 4.2.17 | neve-blog 930×620 crop | 9 | 4,715,523 |
| Hestia 3.3.9 | hestia-blog 360×240 crop | 9 | 4,613,059 |
| Lightning 15.42.0 | post-thumbnail 320×180 crop | 9 | 4,606,155 |
| Inspiro 2.2.5 | adds inspiro-featured-image 2000 wide, inspiro-loop 950×320 crop, inspiro-loop@2x 1900×640 crop; removes medium_large, 1536 and 2048 | 8 | 4,362,744 |
The file count and the disk space don’t follow each other. Twenty Twenty adds only 2 sizes but uses the most space of all 28 themes, 2.23 times the original, because both of its sizes are big (1200 and 1980 wide). Sydney adds 5 sizes, none wider than 1000 px, and ends up below Twenty Twenty. Inspiro is the only theme that removes core sizes. It makes 8 files and uses the least space, 1.81 times the original.
The plain takeaway: WordPress core makes most of the extra files. In this test the theme added at most 5 files and about 0.8 MB per upload, so switching themes alone won’t shrink a big uploads folder much.
What WooCommerce and Elementor add
Plugins can register sizes too. We ran the same upload with WooCommerce and Elementor, which wordpress.org lists at 7+ million and 10+ million active installs:
| Theme + plugin | Files per upload | Times the original | Sizes added over core |
|---|---|---|---|
| Twenty Twenty-Five, no plugin (control) | 8 | 1.90 | none |
| Astra, Kadence or Twenty Twenty-Five + WooCommerce 11.2.2 | 11 | 1.94 | woocommerce_thumbnail 300×300 crop, woocommerce_single 600 wide, woocommerce_gallery_thumbnail 100×100 crop |
| Storefront + WooCommerce | 11 | 1.93 | the same 3, at Storefront’s 324 and 416 px widths |
| Blocksy + WooCommerce | 12 | 1.96 | WooCommerce’s 3, plus Blocksy’s woocommerce_archive_thumbnail 500×500 |
| OceanWP + WooCommerce | 14 | 2.08 | OceanWP’s 3 plus WooCommerce’s 3 |
| Hello Elementor, Astra or Royal Elementor Kit + Elementor 4.3.6 | 8 | 1.90 | none |
- WooCommerce adds 3 files to every upload. Our test photo wasn’t attached to any product and still got all 3 shop sizes, so expect blog photos to get them too. Our WooCommerce product image size guide covers changing those 3 sizes.
- Blocksy registers its extra size only while WooCommerce is active. Without WooCommerce it added nothing.
- Elementor 4.3.6 added no sizes with any of the 3 themes we paired it with. The files were byte-identical to core alone.
Check how many files your own site makes
Your number depends on your theme, your plugins and the size of what you upload. Three ways to find it:
- Count the files. Upload a large photo, then open
wp-content/uploads/<year>/<month>/over SFTP or in your host’s file manager. Every file that starts with the same name came from that one upload,photo-scaled.jpgandphoto-150x150.jpgincluded. - Ask WP-CLI. WP-CLI’s
wp media image-sizecommand lists every size registered on your site, core, theme and plugins together. We didn’t use this command in our test; it’s documented in the WP-CLI handbook (linked in Sources). - Preview it before you upload. Drop a photo into our WordPress image size lab to see every copy core WordPress makes of it, with the real dimensions and crop boxes. It shows core sizes, so add your theme’s sizes from the table above.
If you want every core size, its option name and its crop rule on one page, the WordPress image sizes cheat sheet has them as a table and as JSON or CSV.
Change, add or remove a size
Change a default size: go to Settings > Media and edit the thumbnail, medium or large boxes. Setting both boxes of a size to 0 stops that size on new uploads.
Add your own size in your child theme’s functions.php or a small plugin:
add_action( 'after_setup_theme', function () {
// Name, width, height, crop. true = cut to exactly 800×450.
add_image_size( 'card-image', 800, 450, true );
} );
Remove sizes you never use. The two big core sizes are removed by name, and medium_large through the size filter:
add_action( 'init', function () {
remove_image_size( '1536x1536' );
remove_image_size( '2048x2048' );
} );
add_filter( 'intermediate_image_sizes_advanced', function ( $sizes ) {
unset( $sizes['medium_large'] );
return $sizes;
} );
Take sizes away with care. The 1536 and 2048 files are what srcset gives large, high-density screens, so a full-width hero image can look softer without them. Our uploads folder guide goes through which sizes are safe to drop and what each one saves.
Old images keep their old sizes until you regenerate
WordPress builds sizes once, at upload time. A new size, a changed box in Settings > Media or a new theme does nothing to images already in the library. To rebuild them:
wp media regenerate --yes
Or use the free Regenerate Thumbnails plugin, which does the same job from Tools > Regenerate Thumbnails.
We tested both on 2026-11-06 with WP-CLI 2.12.0 and Regenerate Thumbnails 3.1.6, tracing every file WordPress’s image editor opened. Both rebuilt every size from the original upload, never from the 2560 px -scaled copy, so a regenerated size is as sharp as a freshly uploaded one. One catch from that test: if you turn the 2560 px limit off completely (__return_false), regenerating does not bring back the full-size image, and only a new upload does. Our guide to why WordPress images look blurry after upload covers that case.
Back up wp-content/uploads before a big regenerate. By default wp media regenerate deletes the old size files it replaces, which breaks any outside link that pointed straight at one of them. Add --skip-delete if that matters to you.
How we tested
- Site: WordPress 7.1.4 on PHP 8.3.36 in WordPress Playground (SQLite) on Windows. WordPress picked the GD image editor (GD 2.3.3). JPEG quality 82 and the 2560 px threshold were left at the core defaults.
- Themes: the 28 themes on wordpress.org’s Popular list with 50,000+ active installs on 2026-11-05, installed from the official ZIPs. Before each theme, the core size settings were reset to the defaults. Each theme was activated and its setup code allowed to run before the upload.
- Plugins (2026-11-06): WooCommerce 11.2.2 and Elementor 4.3.6 from wordpress.org, activated the normal way so their own setup code ran, with default settings.
- Photo: one real CC0 photo by Alan Schmierer (Wikimedia Commons), 5696×4784, 2,416,996 bytes, added with WordPress’s own
media_handle_sideload(), which makes the same sizes as a Media Library upload. After each upload we listed every file on disk with its size, deleted the image and checked that 0 files were left. - Repeat check: the 16 themes that add nothing all produced byte-identical files, and the control run on 2026-11-06 matched the 2026-11-05 run byte for byte.
- Raw results: download the CSV (38 rows: every theme and every theme-plugin pair, with the sizes added and the bytes). Free to reuse under CC BY 4.0 with credit to odiethemes.com.
Limits. This is one photo on one test site. The byte counts will differ with other photos, the Imagick editor, WebP or AVIF output, or a different quality setting. File counts depend only on the size list and the image’s dimensions, so they carry over more widely than the bytes do. Some themes register extra sizes only when an option or starter template is switched on; we used every theme’s defaults. Gallery, slider and other plugins can add their own sizes, and we tested only WooCommerce and Elementor. Playground isn’t a real host, so treat upload times as unmeasured.
Still stuck?
If your images look the right size but soft, see why WordPress images look blurry after upload. If you need the right upload size for a post’s main image, the featured image size guide has it. If the files are the problem and the folder is too big, start with why your uploads folder is so large.
Sources
- WordPress Developer Resources:
_wp_add_additional_image_sizes()registers1536x1536and2048x2048, introduced in 5.3.0. - Make WordPress Core: Introducing handling of big images in WordPress 5.3, the 2560 px default threshold.
- WordPress Developer Resources:
big_image_size_thresholdfilter. - WordPress Documentation: Settings Media screen.
- WordPress Developer Resources:
add_image_size(),remove_image_size()andintermediate_image_sizes_advanced. - WP-CLI handbook:
wp media image-sizeandwp media regenerate. - Our own test data: odiethemes.com image-size benchmark, 2026-11-05 and 2026-11-06 (CSV).
William Lopez is the founder of Odie Themes. He builds the free WordPress tools and themes on this site and has been on WordPress.org since December 2019.
FAQ
Questions
What are the default WordPress thumbnail sizes?
WordPress core registers six: thumbnail 150×150 (cropped square), medium up to 300×300, medium_large 768 wide, large up to 1024×1024, and 1536x1536 and 2048x2048, which were added in WordPress 5.3. A photo wider or taller than 2560 px also gets a -scaled copy at 2560 px.
How many files does WordPress create when I upload one image?
In our test of WordPress 7.1.4, one 5696×4784 photo became 8 files with no theme sizes and no plugins: the original, the -scaled copy and the six core sizes. Across 28 popular free themes (50,000+ installs each) the count ran from 8 to 13, and OceanWP with WooCommerce made 14.
Which WordPress themes add the most image sizes?
Of the 28 themes we tested, Sydney added the most (5 sizes, 13 files per upload), then OceanWP (3), then Twenty Seventeen, Twenty Twenty and Envo Royal (2 each). 16 themes, including Astra, Kadence, GeneratePress, Blocksy and Twenty Twenty-Five, added none.
Does WooCommerce or Elementor add image sizes?
WooCommerce 11.2.2 added 3 files per upload in our test: a 300×300 cropped thumbnail, a 600 px wide single-product image and a 100×100 gallery thumbnail. Elementor 4.3.6 added none with any of the 3 themes we paired it with.
Do new thumbnail sizes apply to images I already uploaded?
No. WordPress makes sizes only at upload time, so a change in Settings > Media or a new add_image_size() call affects new uploads only. To rebuild old images, run wp media regenerate or the Regenerate Thumbnails plugin. In our test both rebuilt every size from the original upload, not from the -scaled copy.