App Store Screenshot Size Generator: Choose the Right Dimensions
Generate the exact App Store screenshot dimensions for every iPhone, iPad, Mac, TV and Vision Pro display class.
Direct answer: there is no single App Store screenshot size. Choose the Apple platform, display class and orientation, then generate the exact pixel canvas for that class. For iPhone, the most important current classes are 6.9-inch and 6.5-inch; for iPad, the 13-inch class is required when the app runs on iPad. App Store Connect accepts one to 10 screenshots per upload set, in JPEG, JPG or PNG format, without transparency.
This guide gives you the dimensions, a practical generator implementation, upload rules, scaling guidance and a production checklist.
1. How the generator should work
- Ask for the platform: iPhone, iPad, Mac, Apple TV, Apple Vision Pro or Apple Watch.
- Ask for the display class.
- Ask for portrait or landscape orientation.
- Return the exact width and height in pixels, with a copy button.
- Mark required classes and explain when App Store Connect can scale a larger asset down.
Portrait and landscape use the same dimensions in reverse. For example, an iPhone 6.9-inch canvas of 1290×2796 in portrait becomes 2796×1290 in landscape.
2. Exact App Store screenshot dimensions
iPhone
| Display class | Portrait dimensions (px) | Landscape dimensions (px) | Requirement note |
|---|---|---|---|
| 6.9-inch | 1260×2736, 1290×2796, or 1320×2868 | 2736×1260, 2796×1290, or 2868×1320 | Use when your supported models require this class. |
| 6.5-inch | 1284×2778 or 1242×2688 | 2778×1284 or 2688×1242 | Required for iPhone apps when 6.9-inch screenshots are not supplied. |
| 6.3-inch | 1179×2556 or 1206×2622 | 2556×1179 or 2622×1206 | Choose the exact accepted size for the model group. |
| 6.1-inch | 1170×2532, 1125×2436, or 1080×2340 | 2532×1170, 2436×1125, or 2340×1080 | Several model groups share this class. |
| 5.5-inch | 1242×2208 | 2208×1242 | Exact class size. |
| 4.7-inch | Use Apple’s current screenshot specification for the supported model group. | Reverse the accepted pair. | Keep this preset in the generator when supporting older devices. |
| 4-inch | Use Apple’s current screenshot specification for the supported model group. | Reverse the accepted pair. | Keep this preset in the generator when supporting older devices. |
| 3.5-inch | Use Apple’s current screenshot specification for the supported model group. | Reverse the accepted pair. | Keep this preset in the generator when supporting older devices. |
| iPhone Duo outer display | Use the accepted dimensions listed by Apple for the outer display. | Reverse the accepted pair. | Model-specific class. |
| iPhone Duo inner display | Use the accepted dimensions listed by Apple for the inner display. | Reverse the accepted pair. | Model-specific class. |
iPad
| Display class | Portrait dimensions (px) | Landscape dimensions (px) | Requirement note |
|---|---|---|---|
| 13-inch | 2064×2752 or 2048×2732 | 2752×2064 or 2732×2048 | Required if the app runs on iPad. |
| 12.9-inch | Use Apple’s accepted class dimensions. | Reverse the accepted pair. | Retain for supported older iPad groups. |
| 11-inch | 1488×2266, 1668×2420, 1668×2388, or 1640×2360 | 2266×1488, 2420×1668, 2388×1668, or 2360×1640 | Several model groups share this class. |
| 10.5-inch | Use Apple’s accepted class dimensions. | Reverse the accepted pair. | Keep when the app supports this class. |
| 9.7-inch | Use Apple’s accepted class dimensions. | Reverse the accepted pair. | Keep when the app supports this class. |
Mac, Apple TV and Apple Vision Pro
| Platform | Accepted dimensions |
|---|---|
| Mac | 1280×800, 1440×900, 2560×1600, or 2880×1800 |
| Apple TV | 1920×1080 or 3840×2160 |
| Apple Vision Pro | 3840×2160 |
| Apple Watch | Use the display-specific dimensions in Apple’s current specification. |
Refer to Apple’s screenshot specifications when adding or revising older display classes.
3. A complete browser generator
The following standalone file generates dimensions from a data table. Save it as index.html and open it in a browser.
<!doctype html>
<meta charset="utf-8">
<title>App Store Screenshot Size Generator</title>
<label>Platform
<select id="platform"></select>
</label>
<label>Display class
<select id="display"></select>
</label>
<label>Orientation
<select id="orientation">
<option value="portrait">Portrait</option>
<option value="landscape">Landscape</option>
</select>
</label>
<output id="result"></output>
<button id="copy" type="button">Copy dimensions</button>
<script>
const presets = {
iPhone: {
'6.9-inch': { sizes: [[1260,2736],[1290,2796],[1320,2868]], required: 'Preferred when available' },
'6.5-inch': { sizes: [[1284,2778],[1242,2688]], required: 'Required when 6.9-inch is absent' },
'6.3-inch': { sizes: [[1179,2556],[1206,2622]] },
'6.1-inch': { sizes: [[1170,2532],[1125,2436],[1080,2340]] },
'5.5-inch': { sizes: [[1242,2208]] },
'4.7-inch': { sizes: [], note: 'Add the current Apple specification for this class.' },
'4-inch': { sizes: [], note: 'Add the current Apple specification for this class.' },
'3.5-inch': { sizes: [], note: 'Add the current Apple specification for this class.' },
'Duo outer': { sizes: [], note: 'Add Apple’s accepted outer-display dimensions.' },
'Duo inner': { sizes: [], note: 'Add Apple’s accepted inner-display dimensions.' }
},
iPad: {
'13-inch': { sizes: [[2064,2752],[2048,2732]], required: 'Required when the app runs on iPad' },
'12.9-inch': { sizes: [] },
'11-inch': { sizes: [[1488,2266],[1668,2420],[1668,2388],[1640,2360]] },
'10.5-inch': { sizes: [] },
'9.7-inch': { sizes: [] }
},
Mac: { 'Mac': { sizes: [[1280,800],[1440,900],[2560,1600],[2880,1800]] } },
'Apple TV': { 'Apple TV': { sizes: [[1920,1080],[3840,2160]] } },
'Apple Vision Pro': { 'Vision Pro': { sizes: [[3840,2160]] } },
'Apple Watch': { 'Apple Watch': { sizes: [], note: 'Add the current Apple specification.' } }
};
const platform = document.querySelector('#platform');
const display = document.querySelector('#display');
const orientation = document.querySelector('#orientation');
const result = document.querySelector('#result');
const copy = document.querySelector('#copy');
for (const name of Object.keys(presets)) platform.add(new Option(name, name));
function refreshDisplays() {
display.replaceChildren();
for (const name of Object.keys(presets[platform.value])) display.add(new Option(name, name));
render();
}
function render() {
const item = presets[platform.value][display.value];
if (!item) return;
const dimensions = item.sizes.map(([w,h]) => orientation.value === 'portrait' ? `${w}×${h}` : `${h}×${w}`);
result.textContent = dimensions.length ? dimensions.join(', ') : (item.note || 'No dimensions configured.');
result.dataset.copy = dimensions.join(', ');
}
platform.addEventListener('change', refreshDisplays);
display.addEventListener('change', render);
orientation.addEventListener('change', render);
copy.addEventListener('click', async () => {
if (result.dataset.copy) await navigator.clipboard.writeText(result.dataset.copy);
});
refreshDisplays();
</script>
4. Generator data and UX decisions
- Store arrays, not one value. A display class can contain multiple accepted pixel sizes because different models share the class.
- Reverse dimensions programmatically. This prevents portrait and landscape values from drifting apart.
- Show requirement status. Mark 6.9-inch iPhone when available, 6.5-inch iPhone when 6.9-inch assets are absent, and 13-inch iPad when the app runs on iPad.
- Keep a source link beside the data. Apple can add or retire model groups.
- Copy the full list. If a class has several accepted sizes, let the designer choose the model-specific canvas.
5. Upload rules and scaling
- App Store Connect accepts one to 10 screenshots per relevant upload set.
- Accepted extensions are
.jpeg,.jpgand.png. - Images cannot contain an alpha channel or transparency.
- If the same interface is used across device sizes and localizations, Apple says to provide only the highest-resolution screenshots required. App Store Connect can scale them down to smaller device sizes.
- You can add specific sizes later in Media Manager.
Scaling is useful when your UI is identical, but exact class presets give designers predictable text size, spacing and device framing. Do not assume a scaled image is acceptable when your composition depends on pixel-specific typography or when a class has different safe areas.
6. Submission checklist
- Confirm which platforms the app supports.
- Confirm the required display classes for those platforms.
- Generate portrait and landscape canvases separately.
- Export as JPEG, JPG or PNG.
- Remove transparency and verify the alpha channel is absent.
- Keep between one and 10 screenshots in each upload set.
- Check every screenshot at 100% zoom for clipped text, unreadable controls and stretched artwork.
- Upload the highest required resolution when one design is shared across classes.
- Use Media Manager to add a class-specific asset later if scaling produces an unacceptable result.
7. Troubleshooting
| Error or symptom | Cause | Fix |
|---|---|---|
| Screenshot size rejected | The width and height do not match an accepted display class. | Select the platform and class again, then export the exact pixel pair. |
| Landscape upload appears rotated or rejected | The portrait dimensions were not reversed. | Swap width and height; do not rotate the file metadata alone. |
| PNG rejected despite correct dimensions | The PNG contains transparency or an alpha channel. | Flatten the image onto an opaque background and export again. |
| Only one device size appears | You supplied one class and expected App Store Connect to create every class immediately. | Provide the highest required resolution, or add specific sizes later in Media Manager. |
| Text looks too small after scaling | A high-resolution screenshot was automatically reduced. | Create a class-specific asset with larger type and spacing. |
| Too many screenshots error | The upload set contains more than 10 files. | Keep the strongest one to 10 screenshots for that set. |
| Old device class is missing from the generator | The data table only includes newer classes. | Add the accepted dimensions from Apple’s current specification before shipping the generator. |
8. Performance, reliability and cost notes
A local generator like the one above is fast, deterministic and free to run. Its main reliability risk is stale specification data, so keep the preset table versioned and review it when Apple changes supported devices.
If you need screenshots of a live website rather than static App Store artwork, browser automation adds loading, cookie banners, popups, bot checks and network timing concerns. A screenshot API can centralize those concerns and make repeated captures easier to operate.
9. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. Its API accepts one GET request and returns PNG, JPEG, WebP or PDF output. Cookie and consent banners are accepted before capture, and more than 60 known consent platforms, newsletter popups and chat widgets are removed. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed; each response reports the result with X-Page-Verdict and X-Billed headers. AI agents can use the MCP tools take_screenshot, get_page_info and capture_pdf.
See the ScreenshotNeo API documentation for all options.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Plans include 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000 screenshots. Create a free ScreenshotNeo account.
10. FAQ
Can I use one iPhone screenshot for every iPhone?
No. Use the required display class, or provide the highest required resolution and let App Store Connect scale it when the interface is unchanged.
Are portrait and landscape separate uploads?
Yes. They are separate orientations with reversed pixel dimensions.
How many screenshots can I upload?
Apple allows one to 10 screenshots per relevant upload set.
Can screenshots have transparent backgrounds?
No. App Store Connect rejects images with transparency or alpha channels.
Should a generator output every accepted size in a class?
Yes. Some classes contain multiple model-specific pixel sizes, so returning the complete list avoids guessing.
Does App Store Connect always resize screenshots automatically?
It can scale a highest-resolution screenshot to smaller device sizes when the same interface and localization are used, but class-specific assets remain the predictable option.


