How to take clean app screenshots in the iOS Simulator and Android Emulator
A store screenshot starts as a plain capture of your app. If that capture has a 2:47 clock, one bar of signal, a debug banner and an empty list, no amount of design will hide it. This guide covers the commands and settings that give you a clean capture every time.
Both stores ask for this. Google Play's screenshot guidelines say to hide notifications and carrier names and to show the battery, Wi-Fi and cell signal icons at full. Apple doesn't spell out the status bar, but its App Review Guidelines (section 2.3.3) ask for screenshots that show the app in use, and a tidy capture is the easiest way to show it well.
Before you capture: get the app ready
Most messy screenshots are a data problem, not a design problem. Spend ten minutes on these first.
- Use realistic demo data. Fill lists with believable names, amounts and dates. Three to eight items per list usually looks natural. Empty states and "Test 1, Test 2" make an app look unfinished.
- Never use real customer data. Invent names and email addresses, and avoid real phone numbers. Many teams keep a small "demo" account or a seed script just for screenshots so they can rebuild the same state for every release.
- Turn off developer overlays. Remove anything a customer would never see: Flutter's debug banner (
debugShowCheckedModeBanner: false), React Native's dev menu and warnings, layout debug borders, and test-environment labels. - Pick dates that won't age badly. A screenshot showing "Last synced 2021" looks abandoned. Prefer relative dates ("Today", "2 days ago") or a recent month.
- Decide on light or dark mode. Use one appearance for the whole set so the slides look consistent. You can switch the simulator or emulator with one command (shown below).
iOS Simulator
1. Choose the right simulator
Capture on the largest iPhone simulator your Xcode version includes, a "Pro Max" model. Its screen matches the iPhone 6.9-inch size Apple asks for (1320 × 2868 pixels on current models), so App Store Connect can scale your screenshots down for every smaller iPhone. If your app runs on iPad, also capture on a 13-inch iPad simulator. The full list is in our screenshot sizes guide.
2. Clean up the status bar
Boot the simulator, then run this in Terminal. It sets the classic 9:41 time, full Wi-Fi and cell signal, and a full, charged battery:
xcrun simctl status_bar booted override \
--time "9:41" \
--dataNetwork wifi --wifiMode active --wifiBars 3 \
--cellularMode active --cellularBars 4 \
--operatorName "" \
--batteryState charged --batteryLevel 100
booted means "the simulator that's running now". If you have several running, use the device's ID from xcrun simctl list devices booted instead. The override stays until you clear it or erase the simulator:
xcrun simctl status_bar booted clear
3. Set the appearance
xcrun simctl ui booted appearance light # or: dark
4. Capture at full resolution
Press ⌘S in the Simulator window to save a screenshot to your Desktop, or capture from Terminal:
xcrun simctl io booted screenshot ~/Desktop/01-home.png
Both save the screen at the device's full pixel size, without the window or a phone frame around it. That's what you want: a plain capture you can put into a frame and add a headline to. Don't use macOS's own screenshot tool (⇧⌘4) on the Simulator window. It captures the window at your Mac display's scale, which is usually the wrong size.
Tip: Name files with a number first (01-home.png, 02-budgets.png) so they stay in upload order everywhere: in Finder, in the Studio and in App Store Connect.
Android Emulator
1. Choose the right emulator
Use a recent Pixel phone image in Android Studio's Device Manager. Pick a phone with a 1080-pixel-wide screen or larger, because Google Play's recommended portrait size is 1080 × 1920 and smaller captures will look soft when enlarged.
2. Turn on demo mode
Android has a built-in "demo mode" for exactly this job. It freezes the clock and replaces the status bar icons with clean ones. With the emulator running, run these commands from a terminal that has adb (it comes with Android Studio's platform tools):
# Allow demo mode (needed once per device)
adb shell settings put global sysui_demo_allowed 1
# Enter demo mode
adb shell am broadcast -a com.android.systemui.demo -e command enter
# 12:00 clock, full battery, not charging
adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1200
adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false
# Full Wi-Fi and cell signal, no data-type label
adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4
adb shell am broadcast -a com.android.systemui.demo -e command network -e mobile show -e datatype none -e level 4
# Hide notification icons
adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false
When you're done, leave demo mode so the emulator behaves normally again:
adb shell am broadcast -a com.android.systemui.demo -e command exit
A few manufacturers' system images ignore some of these commands. The standard Android Studio emulator images support them.
3. Set the appearance
adb shell cmd uimode night no # or: yes for dark mode
4. Capture at full resolution
Use the camera button in the emulator's toolbar, or capture straight to a file:
adb exec-out screencap -p > 01-home.png
Watch out: most phone captures are too tall for Google Play
This catches a lot of developers. Google Play only accepts screenshots where the long side is no more than twice the short side. Most current Android phones have a taller screen than that: a 1080 × 2400 capture is 2.22 times as tall as it is wide, so Play Console will refuse it as-is.
You have two ways around it:
- Place the capture inside a 9:16 image, with a background and headline around a framed phone. This is what the Studio does: it exports 1080 × 1920 slides and fits your full capture inside the phone frame, so nothing is cut off.
- Crop the capture to 1080 × 2160 or shorter. This works, but you lose part of the screen, usually the status bar or the bottom navigation.
Apple doesn't have this limit. iPhone screenshots are uploaded at the phone's own tall shape.
Capture checklist
- Realistic demo data on every screen, no real customer details.
- Status bar: 9:41 (iOS) or a neat round time (Android), full signal, full battery, no notification icons.
- No debug banners, dev menus or test labels.
- Same light or dark appearance on every capture.
- Captured with
simctl, ⌘S orscreencap, not a desktop screenshot of the window. - Files numbered in the order you'll upload them.
Once you have clean captures, the next step is turning them into store slides with a headline. Our guide to designing screenshots that get installs covers that, and the store rules guide lists what Apple and Google don't allow.