WordPress Image Size Guide: What Dimensions to Export from Figma
The rule: export at twice the width the image is displayed at, capped at 2560px.
For most sites that comes out as 1600px for a blog content image, 2400–2560px for a full-width hero, and 600–800px for a card or thumbnail.
The cap matters as much as the doubling — WordPress silently resizes anything wider than 2560px, so exporting "big to be safe" is actively worse than exporting correctly.
"What size should my images be?" has no single answer, because it depends on your theme — but it has a reliable method, and a set of numbers that fit the large majority of WordPress sites. Here are both.
The cheat sheet
| Where it goes | Typical display width | Export at | Target weight |
|---|---|---|---|
| Full-width hero / banner | 1200–1600px | 2400–2560px | < 300 KB |
| Blog content image | 700–800px | 1600px | < 150 KB |
| Wide / full-bleed in content | 1000–1200px | 2000–2400px | < 250 KB |
| Card or grid thumbnail | 300–400px | 600–800px | < 60 KB |
| Avatar / small thumbnail | 150px | 300px | < 20 KB |
| Logo, icon | any | SVG | a few KB |
| Product photo (zoomable) | 600px | 1600–2000px | < 250 KB |
Why twice the displayed width
Because a CSS pixel isn't a physical pixel. Phones and most modern laptops pack two physical pixels into each CSS pixel, so an image displayed in a 800px-wide slot has 1600 real pixels to fill. Give it 800 and the browser stretches them, which is what "blurry" actually is.
Twice is enough. Three times has a visible benefit only on a handful of high-density phone screens; four times has none at all on the web and quadruples your file size. The full explanation, plus what to do when 2x still looks soft, is in why Figma exports come out blurry.
How to find your real slot widths
The numbers above are typical, not universal. Your theme's are knowable in about fifteen seconds:
- Open a published post on your site, on a desktop browser.
- Right-click an image in the content area → Inspect.
- Look at the rendered width of the image element, in CSS pixels.
Double it. That's your export width for that slot. Repeat once for a hero and once for a card, write the three numbers down, and you never have to think about it again.
Design at the real width where you can. If your content column is 760px, a mockup drawn at 760px means "export at 2x" is literally correct with no arithmetic. Designing a card at 400px that ships at 600px is where most sizing mistakes come from.
The sizes WordPress makes on its own
Every upload triggers WordPress to generate several derivatives. The defaults:
| Name | Dimensions | Behaviour |
|---|---|---|
thumbnail | 150 × 150 | Hard cropped to a square |
medium | up to 300 × 300 | Scaled, aspect kept |
medium_large | 768px wide | Scaled — has no settings-screen UI |
large | up to 1024 × 1024 | Scaled, aspect kept |
full | your upload | Capped at 2560px wide — see below |
Themes and page builders register more on top of these, which is why a single upload can produce a dozen files. WordPress then offers them to the browser through srcset, and the browser picks whichever fits the slot and screen density.
Two consequences worth knowing. First, this is why uploading one large, correctly-sized image is the right move — WordPress derives the small versions itself. Second, if a theme's registered size is narrower than the slot it's displayed in, the browser will be handed something too small no matter how good your original was.
The 2560px threshold
Since WordPress 5.3 there's a "big image" threshold, set to 2560px by default. Upload anything wider and WordPress:
- Scales it down to 2560px on the longest edge,
- Serves that as the full-size image,
- Keeps your original with
-scaledappended to the filename.
The resize is a plain resample with no quality tuning. So a beautifully exported 4000px hero gets replaced by WordPress's own, less careful, downscale — and you never see it happen.
Stay under 2560px and you keep control. That's the whole rule. If you genuinely need larger, the threshold is filterable via big_image_size_threshold, but for a website you almost never do.
To spot whether this has already happened to you: open a hero image on your live site in a new tab and look at the URL. If the filename ends in -scaled, WordPress resized it.
Dimensions are only half of it
Correct dimensions with the wrong format still ships a heavy page. A 1600px PNG straight from Figma is commonly 800 KB to 1.5 MB. The same image as WebP at quality 80 is usually under 150 KB — the same picture, at the same dimensions, five to ten times lighter.
So the full instruction is three parts, not one:
- Dimensions — 2x displayed width, capped at 2560px
- Format — WebP for almost everything, SVG for logos and icons, PNG only when you need lossless detail
- Quality — 75–85 for WebP and JPG
Figma can do the first. It cannot do the second or third — no WebP export, no quality slider, and scale is a multiplier rather than a cap. That's why the export panel alone can't get you to a correctly-sized WordPress image, and why the gap normally gets filled by a round trip through Squoosh.
Fig2WP Image Uploader applies all three at once — max width, format and quality — and shows the resulting file size before anything uploads, so you can see you're under 150 KB rather than hoping.
FAQ
What size should images be for WordPress?
Twice the displayed width, capped at 2560px. About 1600px for a blog content image, 2400–2560px for a full-width hero, 600–800px for a card.
What's the maximum image size WordPress allows?
Two different limits. WordPress downscales anything wider than 2560px. Separately, your host caps the upload file size — commonly 2 MB to 64 MB, and it's the one behind "exceeds the maximum upload size for this site".
Should I resize before uploading, or let WordPress do it?
Resize first. WordPress generates smaller sizes but never optimises your original, and its downscale above 2560px is crude. Exporting correctly is the only way to control quality and weight.
How wide is the WordPress content area?
Theme-dependent, usually 650–800px for blog themes. Inspect the element on your own site rather than guessing.
Does uploading a bigger image improve quality?
Only up to 2x the displayed width. Past that it's wasted bytes, and past 2560px WordPress resizes it anyway.
Set the width once, not per image
Fig2WP lets you set max width, format and quality for the whole batch, then sends the finished images to your WordPress Media Library — under the 2560px threshold, in WebP, with the file size visible before upload.