Skip to content

Blog

Fix "The dimensions of one or more screenshots are wrong"

App Store Connect rejects a screenshot set on exact pixel counts, not on aspect ratio. Here is what it is actually checking, and how to find the one file that is four pixels off.

A glass phone panel held between the jaws of a precision caliper

You uploaded ten screenshots. App Store Connect took nine and threw this at the tenth:

The dimensions of one or more screenshots are wrong.

It does not say which file. It does not say what it wanted. And the image looks completely fine, because it is off by four pixels.

What App Store Connect is actually checking

It compares the exact pixel width and height of the file against the list of sizes it accepts for the display class you are uploading to. Not the aspect ratio, not "close enough", not a tolerance band. 1280 × 2768 is not a slightly small 1284 × 2778 — it is an unrecognised size, and it is refused.

That distinction matters because most of the ways a screenshot gets resized will happily hand you a near-miss:

  • Image models return an approximation of what you asked for. We log this constantly in our own render pipeline: ask for 1284 × 2778 and you get 1280 × 2768 back. Every generated panel goes through a deterministic resize afterwards for exactly this reason.
  • "Fit within" resize modes preserve aspect ratio and undershoot one axis. A 19.5:9 source fitted into a 19.5:9 box lands a pixel or two short after rounding.
  • Screenshots from the wrong simulator. An iPhone 16 Pro capture is 1206 × 2622. An iPhone 16 Pro Max is 1290 × 2796. Both are valid App Store sizes — for different display classes. Mixed into one set, one of them is wrong.
  • Anything that opened in an editor and got exported. Export dialogs round.

Find the offending file in one command

You do not need to open anything. On macOS:

# every PNG in the folder, with its real pixel dimensions
sips -g pixelWidth -g pixelHeight *.png

# or, grouped — anything that is not the majority size is your problem
magick identify -format "%w x %h  %f\n" *.png | sort | uniq -c | sort -rn

The second one is the useful one. A healthy set prints a single row. A broken set prints your answer on line two.

The sizes Apple accepts

These are the dimensions our exporter renders against, straight from the preset registry it uses — so this table cannot drift from what actually ships.

DevicePixelsApple display typeMax per listing
iPhone1260 × 2736APP_IPHONE_6710
iPad2064 × 2752APP_IPAD_PRO_3GEN_12910
Every other accepted size (21)
DevicePixelsApple display typeMax per listing
iPhone1290 × 2796APP_IPHONE_6710
iPhone1320 × 2868APP_IPHONE_6710
iPhone1284 × 2778APP_IPHONE_6510
iPhone1242 × 2688APP_IPHONE_6510
iPhone1179 × 2556APP_IPHONE_6110
iPhone1206 × 2622APP_IPHONE_6110
iPhone1170 × 2532APP_IPHONE_6110
iPhone1125 × 2436APP_IPHONE_6110
iPhone1080 × 2340APP_IPHONE_6110
iPhone1242 × 2208APP_IPHONE_5510
iPhone750 × 1334APP_IPHONE_4710
iPhone640 × 1136APP_IPHONE_4010
iPhone640 × 960APP_IPHONE_3510
iPad2048 × 2732APP_IPAD_PRO_3GEN_12910
iPad1488 × 2266APP_IPAD_PRO_3GEN_1110
iPad1668 × 2420APP_IPAD_PRO_3GEN_1110
iPad1668 × 2388APP_IPAD_PRO_3GEN_1110
iPad1640 × 2360APP_IPAD_PRO_3GEN_1110
iPad1668 × 2224APP_IPAD_10510
iPad1536 × 2048APP_IPAD_9710
iPad768 × 1024APP_IPAD_9710

You do not need all of them. Apple derives smaller sizes from larger ones, so in practice a current listing needs 6.9-inch iPhone, plus 13-inch iPad if your app supports iPad. Uploading the full matrix is harmless and removes a class of support question, but it is not required.

Fixing it properly

The fix is a resize to the exact target, not a nudge:

  1. Identify the display class you are uploading to, and pick one size from the table above. Do not mix sizes within a class.
  2. Resize with cover, not fit — fit will undershoot an axis and put you back where you started.
  3. Re-check with the identify command before you upload again.

With sharp, that is:

await sharp(input)
  .resize(1290, 2796, { fit: 'cover', position: 'centre' })
  .png()
  .toFile(output);

fit: 'cover' guarantees the output is exactly the dimensions you named. It will crop a sliver if the aspect ratio differs, which is the correct trade — a two-pixel crop nobody can see beats a rejected upload.

Why this keeps happening

Because the requirement is a pixel count and almost every tool in the chain thinks in ratios. The only durable fix is to make the exact size the last operation before the file is written — never an intermediate step, never something an export dialog gets a vote on.

That is how our renderer works: whatever the model, the canvas or the device frame produced, the final write is a deterministic resize to a size from the registry. There is no path through it that can emit 1280 × 2768.

Specs & fixes

App icon sizes, and what makes an icon work at 40 pixels

Every size iOS and Android actually need, why the store's 1024 is the least important one to design for, and the three things that separate an icon that survives a home screen from one that does not.

Read
Specs & fixes

App Store Connect release checklist

The things that actually hold up a submission, in the order you hit them. Written as a list you can run down before pressing Submit for Review rather than after the rejection email.

Read
Specs & fixes

Common App Store and Google Play rejections, and what they actually mean

Rejection messages are terse and rarely name the file. A translation guide for the metadata and screenshot rejections you are most likely to hit, with the specific fix for each.

Read