Black Friday

65% off Annual plans

25% off Lifetime · 10 per week

Ends December 2

Get the deal

Made in Europe

11 min read

WordPress Image Sizes: What Size to Upload and Why

WordPress image sizes explained for 7.1: every copy WordPress makes, how browsers pick one, and why 2,000–2,560 px uploads stay sharp and fast.

WordPress Image Sizes: What Size to Upload and Why

WordPress image sizes are simpler than most guides make them look. Upload your photos at about 2,000–2,560 px on the long edge, and WordPress turns each one into a set of smaller copies. Every visitor’s browser then downloads the copy that fits their screen.

Most bad advice on this comes from not knowing what those copies are. So here’s the full picture for WordPress 7.1: what it creates, how the browser picks a copy and what to upload. Then we’ll change the thumbnail size and get sizes right in a gallery.

Good to know

Quick answer: what size should images be for a website?

– Photos in posts and galleries: 2,000–2,560 px on the long edge. – Full-width hero or header: 2,560 px wide. – Featured or social image: 1,200 × 630 px. – Logo: SVG, or a PNG at twice the size it shows. – Anything over 2,560 px: only worth it for downloads and prints.

The default WordPress image sizes

WordPress has six default image sizes, twice as many as the three you see in Settings → Media. One photo can turn into eight files on your server:

Size (name in the code)Default dimensionsCropped?Where you change itIn the editor’s Resolution menu?
Thumbnail (thumbnail)150 × 150YesSettings → MediaYes
Medium (medium)Fits in 300 × 300NoSettings → MediaYes
medium_large768 wide, any heightNoCode onlyNo
Large (large)Fits in 1024 × 1024NoSettings → MediaYes
1536x1536Fits in 1536 × 1536NoCode onlyNo
2048x2048Fits in 2048 × 2048NoCode onlyNo
FullYour upload, or a -scaled copyNo–Yes (“Full Size”)

“Fits in” means the longer side shrinks to that number and the other side follows. A horizontal 3:2 photo’s Medium copy is 300 × 200, not a square.

The 1536 and 2048 sizes arrived in WordPress 5.3. Core’s own code comment says they’re meant for “larger, high-density devices”. Themes and plugins can add more with add_image_size().

What one upload looks like on your server

Here’s a real image size example. Upload a 6000 × 4000 px JPEG called photo.jpg, and your uploads folder gets this, plus any theme sizes:

photo.jpg              6000 × 4000   your original, kept
photo-scaled.jpg       2560 × 1707   used as "Full"
photo-2048x1365.jpg
photo-1536x1024.jpg
photo-1024x683.jpg
photo-768x512.jpg
photo-300x200.jpg
photo-150x150.jpg      cropped square
Attachment details of a large upload with its -scaled file: photo-scaled.jpg at 2560 by 1707 pixels, with photo.jpg kept as the original image.

WordPress never makes a copy bigger than your photo

WordPress only shrinks. Upload a landscape photo 800 px wide and you get Thumbnail, Medium and the 768 copy, but no 1024, 1536 or 2048.

Put that photo in a 1,200 px wide spot and the browser has to stretch it. That’s one of the most common reasons photos look soft on big or high-density screens.

Big photos are scaled down to 2,560 px

If either side of your upload is over 2,560 px, WordPress makes a -scaled copy that fits in 2,560 × 2,560. That copy becomes the Full size for your whole site. Your original stays on the server, untouched.

Developers can raise that threshold or switch it off with the big_image_size_threshold filter (around since 5.3). For most sites, though, 2,560 px is plenty.

Three uploads of one photo: the 800 px file gets only 150, 300 and 768 px copies, the 1,600 px file adds 1024 and 1536, and only the 3,000 px file gets a 2048 copy and a 2,560 px scaled full size.

Good to know

New in WordPress 7.1: upload in the block editor on an HTTPS site, in Chrome or Edge 137 or later, and your browser makes these copies itself before anything reaches the server (Make WordPress Core). Same sizes, same 2,560 px rule. Other browsers, low-memory devices and uploads from the Media Library screen still go through the server.

How the browser picks the right image size

You don’t pick which copy of a WordPress image a visitor downloads: their browser does. WordPress lists every same-shape copy up to 2,048 px wide (wider only if it’s the file you inserted) in the image’s srcset, the menu of files a browser can choose from. A sizes hint says how wide the image will show.

The browser then grabs the smallest copy that covers display width × screen density. Screen density is device pixels per CSS pixel: 2 on a Retina screen (MDN), 2 or 3 on an iPhone (Apple). For example:

  • A four-column gallery in a 1,200 px content area: each tile is about 290 px. A 2× laptop needs about 580 px, so it gets the 768 copy.
  • The same gallery on a phone, in one column: 360 px × 3 is about 1,080 px, so it gets the 1536 copy.
  • A full-width hero on a 1,440 px, 2× laptop: 2,880 px wanted, so it gets the biggest copy there is, 2,048 px or the 2,560 px scaled file.
Chrome loaded the 768 px copy for a 290 px gallery tile on a 2× laptop, the 1,536 px copy for a 360 px phone column at 3×, and the 2,560 px scaled file for a 1,440 px hero at 2×.

That last one is why uploading past 2,560 px adds nothing anyone can see.

Since WordPress 6.7, lazy-loaded images also get sizes="auto", so the browser uses the image’s real width in the layout. Chrome, Edge and Firefox support it, and Safari 27 does in part (caniuse, checked October 2026).

This markup is worth protecting. The 2024 Web Almanac found only 42% of mobile pages use srcset. On desktop, one in five sizes attributes is far enough off to make the browser pick a worse file. WordPress gets it right for you, as long as no plugin strips it out.

What size to upload for each type of website image

The best upload size for a website image is at least twice the width it fills, capped at about 2,560 px. That one rule covers most website image dimensions:

ImageUpload thisWhy
Photo in a blog post (700–800 px column)1,600–2,000 px wideTwice the column stays sharp on 2× screens
Full-width hero, header or banner2,560 × 1,440 (16:9), or your theme’s ratioThe biggest file WordPress serves as Full
Featured imageAt least 1,200 px wide; 1,200 × 630 for sharingFacebook asks for at least 1200 × 630, close to 1.91:1; Google Discover wants 1,200 px wide
Gallery photos2,000–2,560 px on the long edgeSharp tiles and a sharp full-screen lightbox
ThumbnailsDon’t make themWordPress crops 150 × 150 copies for you
LogoSVG, or PNG at 2× its display sizeCrisp everywhere (SVG uploads need a plugin)
Product photo with zoomBigger than the zoomed viewZoom shows the file’s real pixels
Photos clients download or printYour full camera fileWordPress keeps your original anyway
The same patch of an 800 px wide column on a 2× screen looks soft from an 800 px file and sharp from a 1,600 px file.

Say you’re a potter with 12 product photos for a shop page. Export them at 2,000 px and upload. WordPress makes the smaller copies, and nobody downloads more than their screen needs.

Pixels, not DPI

DPI doesn’t matter on the web. A 2,000 px photo saved at 72 DPI and at 300 DPI looks identical on screen, because browsers only read pixel dimensions.

Dimensions are how many pixels there are; file size is how many kilobytes they take. WordPress re-encodes its resized copies at quality 82 for JPEG and 86 for WebP by default, so they come out lighter than a high-quality upload.

That weight adds up: images are 911 KB of the median mobile home page’s 2,559 KB (Web Almanac 2025). For formats, see the best image format for photos; for client files, web size vs high resolution.

How to change the WordPress thumbnail size and other image sizes

The default WordPress thumbnail size is 150 × 150 px, cropped square, and you change it in Settings → Media:

  1. Go to Settings → Media.
  2. Under Image sizes, set the Thumbnail size Width and Height.
  3. Keep Crop thumbnail to exact dimensions (normally thumbnails are proportional) checked for squares, or uncheck it to keep each photo’s shape.
  4. Change Medium size or Large size with Max Width and Max Height if you need to.
  5. Click Save Changes.
Image sizes in WordPress Settings → Media: Thumbnail 150 × 150 with the crop box checked, Medium 300 × 300 and Large 1024 × 1024.

Don’t set both boxes of a size to 0. That switches the copy off, and WordPress falls back to the full-size file wherever that size was asked for. So a tiny spot downloads a big image.

Meant gallery thumbnails, the small previews that open a bigger photo? That’s a different job.

Your existing images keep their old sizes

New values only apply to new uploads. To rebuild older images:

  • Regenerate Thumbnails: over a million installs, but its wordpress.org page warns it “hasn’t been tested with the latest 3 major releases of WordPress” (checked October 2026). Try it on staging first.
  • WP-CLI (WordPress’s command line): wp media regenerate --only-missing fills in missing sizes, and --image_size=thumbnail rebuilds just one (docs).

Back up your uploads folder before either.

Adding your own size (for developers)

Need a 900 × 600 portfolio crop? Register it in a child theme or a snippets plugin. Never use the parent theme’s functions.php, because the next update wipes it:

add_image_size( 'portfolio-tile', 900, 600, true );

true means hard crop: WordPress cuts the copy to exactly 900 × 600. Add it to the editor’s Resolution menu with the image_size_names_choose filter, then regenerate.

A 1,600 × 2,400 portrait becomes a 900 × 600 center crop with hard crop on, and a 400 × 600 copy that keeps its shape with it off.

Should you remove sizes to save space?

Usually not. The 1536 and 2048 copies are what high-density phones and laptops download, and core’s own code says removing them “is not recommended”. Never delete sizes by editing theme code you don’t own.

How to resize one image in WordPress

Resizing a single image in WordPress comes down to one rule: picking a file and setting a display size are different things.

  • In the Image block: Resolution picks the file: Thumbnail, Medium, Large or Full Size, if your original is big enough (Image block docs, updated October 2026). Width, height and aspect ratio only change how big it shows.
  • In Media → Library → Edit Image: Scale and Crop save a new, edited file. Scale can’t go bigger than the original, and Restore original image brings the old version back.

Getting image sizes right in a Modula gallery

Image sizes in a Modula gallery come down to three things: which file loads, how big it shows, and what the lightbox and downloads hand out. We make Modula, a WordPress gallery plugin with 160,000+ active installations, so this part comes from its 3.0 code and from questions people send our support team.

What Image file size does (and doesn’t)

Image file size, in Layout, picks the WordPress copy a gallery starts from. Medium is the default, and it stays sharp. Modula adds a srcset with every same-shape copy WordPress made, up to the full-size file, plus a sizes hint. So the browser swaps in the 768, 1536 or 2048 copy when a tile or screen needs it.

With Load images as people scroll on (the default), each tile’s real width on the page decides which copy loads. You’ll find Image file size in Masonry, Uniform grid, Fit grid, Justified grid, Custom grid, Creative, Polaroid and Parallax; Slider has its own.

Image file size set to Medium in the Layout section of the Modula editor

So a Medium gallery isn’t a low-quality gallery. Don’t switch to Large “to fix blur” before the checks below.

When to pick another setting

  • Full, for animated GIFs: WordPress’s resized GIF copies don’t move. See how to add GIFs to a gallery.
  • Thumbnail, rarely: it starts from WordPress’s 150 × 150 square crop, so your tiles may come out square. For squares on purpose, use Uniform grid, where Shape of each image is Square by default.
  • Custom, for an exact shape: set Custom dimensions and turn on Crop images to fit. Modula makes its own crops, with extra sizes up to 1,600 px for sharp screens.
A Uniform grid gallery with Shape of each image set to Square, next to a preview of square tiles

If the gallery still looks soft

Work through this before you touch Image file size:

  1. Is the original big enough? It needs at least twice the tile width. Check its pixels in Media → Library.
  2. Do the copies exist? Imported images, or sizes changed after upload, can be missing copies. Regenerate.
  3. Is a plugin stripping srcset? Some cache or optimization plugins rewrite image tags. Pause yours and test.
  4. Only if a plugin you need keeps stripping srcset, pick Large.

Image file size doesn’t change how big photos look

How big photos show depends on Columns, Spacing and Gallery width, all in Layout. Image file size only picks the file.

This trips people up in one-column galleries, where a tall portrait can fill the whole screen. Switching to Medium won’t shrink it, because the photo still fills the whole column. Set Gallery width to something like 75% or 900px instead. A narrower gallery stays centered by default in 3.0, so you don’t need custom CSS.

Layout settings with Type set to Masonry, Columns, Spacing and Gallery width, next to the live preview

What the lightbox and downloads load

The lightbox opens the full-size file, whatever Image file size says. Modula 3.0 has no separate lightbox size and no setting to cap click-to-zoom. For any upload over 2,560 px, that full-size file is WordPress’s -scaled copy, so zoom never goes past 2,560 px. A bigger upload costs storage, not lightbox weight. The lightbox’s own Download button saves that same file.

Want small images on the page but the big file for visitors? Turn on Interact → Enable download and check that Download size says Full. Full hands out the untouched original, while the grid keeps loading small copies. Downloads come with the Business plan (see plans).

Enable download on in the Interact section, with Download size set to Full

Picture a wedding photographer sharing 300 photos with a couple. The grid loads light copies, the lightbox opens the full-size file, and the download button hands over the original. More in the downloadable gallery guide, the download docs and what a lightbox is.

Make the files lighter

Lazy loading is free and on by default. Speed Up (Trio plan and up) adds site-wide compression in Settings → Performance: Off, Lossless, Lossy or Glossy.

Each gallery can override it with Thumbnail compression, Lightbox compression and Modern image files. Lightbox compression is the fix when the full-size lightbox file feels heavy.

The Compression choices Off, Lossless, Lossy and Glossy in Modula Settings, Performance

The Speed Up docs and our guide to faster gallery loading cover the rest. Get the upload right once, about 2,560 px on the long edge, and WordPress, the browser and your gallery handle everything after that.

Frequently asked questions

For photos, upload 2,000–2,560 px on the long edge. That covers high-density screens in almost any layout, and WordPress scales anything bigger down to 2,560 px anyway. Use 1,200 × 630 px for a featured image that gets shared, and SVG for a logo.

WordPress has six: Thumbnail (150 × 150, cropped), Medium (fits in 300 × 300), medium_large (768 wide), Large (fits in 1024 × 1024), plus 1536 and 2048 copies for high-density screens. Full is your upload, or its 2,560 px scaled copy. Changes in Settings → Media only apply to new uploads, so regenerate older images.

Yes. WordPress makes smaller copies of every upload. If either side is over 2,560 px, it also makes a copy with “-scaled” in the file name and uses it as the Full size, while your original stays on the server. It never makes a copy bigger than your photo.

You don’t have to: WordPress scales anything over 2,560 px down by itself. Exporting at about 2,560 px still saves storage and upload time, and core WordPress never shows visitors a file bigger than the scaled copy. Keep the camera file if clients will download or print it.

At least 1,200 px wide, and 1,200 × 630 px if it gets shared. Facebook asks for at least 1200 × 630, and Google Discover wants images at least 1,200 px wide. WordPress has no featured image size setting of its own, so your theme decides the crop.

Usually the original is smaller than the spot it fills, and WordPress won’t make a copy bigger than your photo. Upload at least twice the display width for sharp 2× screens. Next, check for copies missing after an import or a size change, and for a plugin stripping srcset.

The upload limit comes from your server’s PHP settings, and the upload screen shows it as “Maximum upload file size”. The 2,560 px mark isn’t a limit. It’s the point where WordPress makes a scaled copy and keeps your original, and developers can move it with the big_image_size_threshold filter.

Leave Image file size on Medium, the default. Modula adds a srcset that goes up to the full-size file, so sharp screens and wide tiles still get bigger copies. Pick Full for animated GIFs, because WordPress’s resized GIF copies don’t move, and Custom when you need an exact crop.

Make your next gallery
the one people remember.