Skip to content
ThemesIonic — home
WordPress Tutorials

WordPress Image Sizes and Thumbnail Sizes

One upload becomes seven or more files. Here is every default WordPress image size, which ones Settings › Media controls, which ones it hides, and what themes add on top.

4 min read beginner

One upload produces seven or more files, and only three of them appear in Settings › Media. WordPress registers thumbnail, medium and large where you can see them, adds three more sizes you cannot, may create a -scaled copy of the original, and then your theme and plugins add their own. Knowing the full list explains most surprises about disk usage, blurry images and settings that "do nothing".

The default sizes

Size name Default dimensions Crop Where it is set
thumbnail 150 × 150 Hard crop, square Settings › Media
medium up to 300 × 300 Proportional Settings › Media
medium_large 768 wide Proportional Hidden; option medium_large_size_w
large up to 1024 × 1024 Proportional Settings › Media
1536x1536 up to 1536 × 1536 Proportional Core, no setting
2048x2048 up to 2048 × 2048 Proportional Core, no setting
-scaled longest side 2560 Proportional big_image_size_threshold filter
full the original — —

"Up to" matters: a proportional size fits inside the box. A 4000 × 3000 photo becomes 1024 × 768 as large, not 1024 × 1024. Only thumbnail is cropped to exact dimensions by default.

A size is skipped when the upload is smaller than it — WordPress never enlarges. An 800-pixel-wide upload gets thumbnail, medium and medium_large, and nothing above.

Why so many

The hidden sizes exist for responsive images. WordPress writes every generated size with the same aspect ratio, up to 2048 pixels wide, into the srcset attribute, and the browser downloads the smallest one that fills the slot at the device's pixel density. Without 1536x1536 and 2048x2048, a high-density laptop screen would get nothing larger than large and show it soft.

The -scaled copy is the safety net for camera originals: since WordPress 5.3, an upload with a side longer than 2560 pixels is scaled down and the scaled file becomes the working "full" size. The true original is kept on disk. Changing or disabling that threshold is covered in how to resize images in WordPress.

Theme and plugin sizes

Themes register sizes for their own layouts — card grids, hero banners, related posts — with add_image_size(); WooCommerce adds three for the shop, described in WooCommerce product image size. To see the complete list on a site, run this with WP-CLI:

wp media image-size

It prints every registered size with width, height and crop. Ten to fifteen sizes on a typical theme-plus-WooCommerce site is normal; thirty means a theme or plugin is registering sizes it never uses. How custom sizes are registered and removed is in add_image_size.

Changing the sizes

Settings › Media controls thumbnail, medium and large. Two things to know before you change them:

  1. New values apply only to new uploads. Existing images keep their old files, so the change appears to do nothing until you regenerate thumbnails.
  2. The theme may not use them. Many themes output their own registered sizes in templates, so changing large alters what the editor inserts but not the blog grid.

Setting a size to 0 × 0 stops it being generated, which saves disk on sites that never use it.

Which size to pick in the editor

The Image block's Resolution control lists thumbnail, medium, large and full by default; custom sizes appear only when a theme adds them through image_size_names_choose.

  • Content-width images → large, provided it is at least as wide as your content column.
  • Small inline images → medium.
  • Full-width or wide alignment → full, which lets srcset choose down from the largest file.

A soft-looking image is almost always a size smaller than its slot being stretched; the diagnosis is in blurry images in WordPress.

Where the size information is stored

Each attachment's sizes are recorded in its _wp_attachment_metadata post meta: width, height and filename for every generated size, plus original_image when a -scaled copy exists. Functions such as wp_get_attachment_image_src() read that record, not the disk. That is why files deleted over FTP still appear in srcset and produce broken images, and why copying files between sites without the database leaves WordPress unaware of them.

The cost of every size

Each registered size is another file per upload, and each file is another thing an optimizer must compress. Fifteen sizes across 5,000 uploads is 75,000 files, which is why image optimization plugins count every generated size against their quota, whether it is measured in images or megabytes — and why removing sizes you do not use is the cheapest optimisation there is.

Common mistakes

  • Making large smaller than the content column, so every inserted image is upscaled by the browser.
  • Removing medium_large or the 1536/2048 sizes to save disk, then wondering why images look soft on high-density screens.
  • Changing sizes on a live library without regenerating, leaving old and new posts inconsistent.
  • Setting thumbnail to soft crop, which breaks the square grids many themes expect.

Verify

  1. Upload a photo larger than 2560 pixels and check the uploads folder: you should see the original, a -scaled file and one file per registered size.
  2. Run wp media image-size and compare the list with what your theme actually uses.
  3. Insert an image as large, view the page and check the srcset attribute lists several widths.

Frequently asked

150 by 150 pixels, hard-cropped to a square. Medium is up to 300 by 300 and large is up to 1024 by 1024, both scaled proportionally. All three can be changed in Settings › Media.
Sizes are generated at upload time. New settings apply to images uploaded afterwards; existing images keep their old files until you regenerate thumbnails.
Yes. Set a built-in size to 0 by 0 in Settings › Media, or remove sizes with the intermediate_image_sizes_advanced filter. Check that your theme does not use a size before removing it.

Related guides