Why this happens
Developers frequently need screenshots of their running apps for documentation, pull requests, marketing mockups, and App Store Connect submissions. While macOS provides system-level screenshot shortcuts like Command + Shift + 4, using system screen captures on the iOS Simulator window often captures incorrect pixel dimensions, scaled downsampling, or window shadows.
The iOS Simulator operates at native device resolutions (such as $1179 \times 2556$ pixels for modern iPhones), but macOS scales the simulator window down to fit your Mac display. When you use macOS window snapping to take a screenshot, the resulting image reflects your Mac monitor’s scale factor rather than the virtual iOS device’s real framebuffer. This causes rejected uploads in App Store Connect due to invalid asset dimensions.
To capture pixel-accurate images, you must instruct the Simulator runtime to dump its virtual display buffer directly to disk. Apple provides built-in mechanisms inside the Simulator app and through the command-line developer tools to capture these frames at full native resolution or wrapped in hardware bezels.
How to fix it
1. Use the Simulator Save Screen Shot Shortcut
The fastest method to save a native-resolution image is the built-in Simulator keyboard shortcut. This bypasses macOS window scaling and grabs the exact virtual device resolution.
- Click inside the active iOS Simulator window to bring it into focus.
- Press
Command + Son your Mac keyboard. - Alternatively, click the Camera icon in the Simulator window title bar or navigate to the menu bar and select File > Save Screen Shot.
By default, the Simulator writes a PNG file directly to your macOS Desktop named with the pattern Simulator Screenshot - <Device Name> - <Timestamp>.png.
2. Copy the Screenshot Directly to the Clipboard
If you need to paste a screenshot into Slack, GitHub PR descriptions, or Figma without cluttering your Mac Desktop with image files, you can copy the framebuffer directly:
- Focus the running Simulator window.
- Navigate to Edit > Copy Screen in the top menu bar.
- Alternatively, press
Control + Command + C. - Paste the image into your destination app using
Command + V.
This method copies the image at full unscaled resolution while keeping your local filesystem clean.
3. Change the Default Screenshot Directory
If saving every screenshot to your Desktop creates clutter, you can force the Simulator to prompt you for a save location or permanently reconfigure where images land.
To specify a folder for a single capture:
- Hold down the
Optionkey on your keyboard. - Select File > Save Screen Shot As… (the
Optionmodifier changes the menu item from “Save Screen Shot”). - You can also press
Option + Command + S. - A standard macOS save dialog will appear, allowing you to select any directory and rename the file before saving.
To change the default screenshot destination permanently, open Terminal and modify the Simulator user defaults domain:
defaults write com.apple.iphonesimulator ScreenShotSaveLocation -string "~/Documents/Screenshots"
Restart the Simulator for this preference change to take effect. If you ever want to revert back to your Desktop, delete the custom key:
defaults delete com.apple.iphonesimulator ScreenShotSaveLocation
4. Capture Screenshots via Terminal with simctl
For automated testing workflows, continuous integration pipelines, or Fastlane scripts, Xcode includes the simctl command-line utility. This tool communicates directly with CoreSimulator runtimes without requiring mouse interaction.
To capture a screenshot from the currently booted simulator, run:
xcrun simctl io booted screenshot ~/Desktop/app_screen.png
You can also specify output formats and display mask flags. For example, to generate a screenshot that includes the display cutout/Dynamic Island masking behavior:
# Capture with display mask handling (e.g., black or alpha)
xcrun simctl io booted screenshot --mask=black ~/Desktop/app_screen_masked.png
Available --mask options in modern Xcode releases include:
– ignored: Captures the full rectangular framebuffer without clipping corners or camera cutouts (preferred for App Store Connect).
– alpha: Cuts out the corners and sensor housings, writing transparency into the PNG alpha channel.
– black: Fills corners and camera cutouts with solid black.
If you have multiple simulators running simultaneously, target a specific device using its UDID instead of the booted alias:
# List all available and booted devices
xcrun simctl list devices | grep Booted
# Capture from a specific UDID
xcrun simctl io 4E2319BC-417A-4D7D-9D2B-89E3B5DFE38C screenshot ~/Desktop/target.png
5. Capture the Device Bezel for Mockups
Standard simulator screenshots produce raw display contents without the physical iPhone hardware bezel. When you want device framing for marketing presentations or portfolio items, use the Simulator window bezel feature combined with macOS window snapping.
- In the Simulator menu bar, ensure the physical frame is visible: select Window > Show Device Bezel.
- Set the window zoom level to 100% actual size under Window > Physical Size or press
Command + 1. - Press
Command + Shift + 4on your keyboard, then tap the Spacebar. Your cursor will turn into a camera icon. - Hover your cursor over the Simulator window and click once.
macOS captures the simulator frame, hardware buttons, bezel corners, and drop shadow directly to your Desktop.
How to prevent it
- Never upload Mac window snips to App Store Connect: Avoid using
Command + Shift + 4selection rectangles for App Store submissions. Always useCommand + Sorxcrun simctl io booted screenshot --mask=ignoredto ensure dimensions match exact Apple device specifications. - Verify window scale settings: In the Simulator menu, check Debug > Optimize Rendering for Window scale. If text appears blurry on lower-density external displays, toggling this setting forces the simulator to maintain crisp pixel density.
- Verify active window focus: Ensure the Simulator window is key (active) before pressing
Command + S. If Xcode or another editor has focus,Command + Swill save your source file instead of snapping a screenshot.
FAQ
Where does the iOS Simulator save screenshots by default?
The iOS Simulator saves screenshots directly to the current macOS user’s Desktop (~/Desktop). The files are saved in PNG format with a name containing the device model and timestamp.
Why does my Simulator screenshot have different dimensions than my Mac screen?
The Simulator captures the device’s native hardware framebuffer, not the scaled size of the window on your Mac display. For instance, an iPhone 16 Pro simulator creates a $1206 \times 2622$ pixel image regardless of whether your Mac window is scaled down to fit your desktop.
Can I record video of the iOS Simulator screen using the same shortcuts?
You cannot record video with Command + S, but you can use xcrun simctl in Terminal. Run xcrun simctl io booted recordVideo demo.mp4, interact with your app, and press Control + C in the Terminal window to stop and save the video.
Parts of this guide are adapted from content licensed under CC BY-SA 4.0; this article is shared under the same license.
