How to Make an App Demo Video on Mac: Script to Export
Plan, record and export an app demo video on Mac: window capture for Mac and web apps, the iOS Simulator for iPhone apps, zooms, audio and export sizes.
To make an app demo video, pick one thing a user wants to get done and write a short script for it. Record only the app's window (for an iPhone app, the Xcode Simulator window). Then add zooms, a cleaner cursor and a background, and export an MP4 sized for where it will play.
macOS can make the raw recording on its own with the Screenshot toolbar, ⇧⌘5 (Shift-Command-5). The editing that makes a demo readable at small sizes needs an editor. The steps below use Screen Bolt, the Mac recorder we make, and point out where the built-in tools are enough.
What a good app demo video looks like
A good demo shows one user getting one result, with nothing on screen pulling attention away from it. People usually watch it small: in a landing-page hero, a store listing or a chat embed. That means the part of the screen that matters has to be zoomed in at the moment it matters.
The format depends on where the video plays:
| Demo type | Where it plays | Sound | Shape |
|---|---|---|---|
| Hero loop | Top of a landing page | None (autoplaying video is generally muted) | 16:9 or the app's own shape |
| Narrated walkthrough | Product page, YouTube, sales emails | Voice, optional music | 16:9 |
| Store preview | App Store listing | Check Apple's rules | Apple's required size |
| Social clip | X, LinkedIn, Reels | May be watched muted, so add text | 9:16, 1:1 or 4:5 |
| Docs or README clip | Help center, GitHub | None | GIF or short MP4 |
For finished demos broken down scene by scene, see our app and product demo video examples.
Plan the demo: one user goal
Weak demos try to show every feature. Pick the single outcome a new user cares about most ("send the first invoice", "turn a photo into a sticker") and cut everything that doesn't lead to it.
- Write the goal as a result, not a feature name.
- List every click and tap from opening the app to the result. Cut steps that don't change what's on screen.
- Write one sentence of script per step. Our product demo video script template gives you a structure.
- Set up a demo account with realistic fake data: made-up names,
example.comemails, no real customer records. - Decide where the video plays first. That sets the shape, the length and whether you need sound.
If you'll narrate while recording, Screen Bolt's teleprompter keeps the script in front of you without appearing in the video. Click Script in the recording bar, paste your text, and mark beats with cue markers such as [PAUSE] or [EMPHASIS]. Scrolling starts when the recording starts.
Before you record, turn on a Focus such as Do Not Disturb from Control Center so notifications don't appear mid-take. Our checklist for preparing your Mac for a clean recording covers the rest.
Mac and web apps: window or area capture
Record the app's window, not the whole display. A full external monitor squeezed into a small player makes every label unreadable, and a window recording also leaves out your Dock, menu bar and other apps.
Record a single window
- Resize the app or browser window to roughly the shape you'll export. For a 16:9 video, make the window wide so the background doesn't fill most of the frame.
- In the Screen Bolt recording bar, click Window.
- In Select Window to Record, click your app's window, then click Record Window (or press Return).
- Click the red record button.
- Work through your script. Click Pause between steps if you need to reset something; the paused gap is removed from the recording.
- Click Stop. The editor opens, with zooms already generated from your clicks if Create zooms automatically is on (the default). While Screen Bolt is the active app, ⌥⌘4 (Option-Command-4) opens the window picker and starts recording as soon as you confirm. It isn't a global hotkey, so it does nothing while another app is in front.
Details that matter for app demos:
- The window is recorded on its own, even if another window covers it.
- The picker lists only on-screen, titled windows at least 150×150 points. Small palettes and floating panels may not appear.
- Screen Bolt captures at 2× the window's size in points, so a 1280×720-point window becomes 2560×1440 pixels. This assumes a Retina display, so record on a Retina screen if you can.
- For web apps, use a clean browser profile with no extension icons in the toolbar and the bookmarks bar hidden.
For window capture on its own, see how to record a single window on Mac.
When to use Area instead
Use Area when you want only part of a window, such as a web app without the browser's tab bar. Drag a rectangle (larger than 20×20 points), click Record Area, then click the red record button.
The built-in option
The Screenshot toolbar (⇧⌘5) offers Record Entire Screen and Record Selected Portion, but no single-window recording. Its files carry no click data, so an editor can't generate zooms or cursor effects from them later. That's fine for a raw clip you plan to cut elsewhere. It falls short if you want the zoomed-in look without placing every zoom by hand.
iOS apps: recording the Simulator window
Screen Bolt can't record an iPhone's screen over a cable; it uses an iPhone only as a camera, through Continuity Camera. For an iOS app demo, run the app in Xcode's Simulator and record the Simulator window like any other Mac window.
- Run your app on an iPhone simulator from Xcode.
- Optional: fix the status-bar clock so it doesn't show a random time (command below).
- Size the Simulator window so the UI is easy to read.
- In Screen Bolt, click Window, pick the Simulator window, click Record Window, then click the red record button.
- Tap through your flow with the mouse.
With one simulator running, this sets its status-bar clock to 9:41:
xcrun simctl status_bar booted override --time 9:41
To put the real clock back:
xcrun simctl status_bar booted clear
What to expect when recording the Simulator:
- Taps are clicks, so auto zoom works. Each tap (or cluster of quick taps) becomes a zoom.
- Scrolling with the mouse is a drag, and drags don't create zooms. Add zooms by hand on scroll-heavy screens.
- The cursor is redrawn as a Mac pointer over a phone screen. In the editor's Cursor panel, lower Size or turn on Auto-hide when Static so it reads less like a mouse.
- Screen Bolt's iPhone frames don't export. They show in the editor preview only. If you want a phone outline in the final file, use the Simulator's own device bezel, which is drawn as part of its window. Check the first test recording to confirm it looks right.
- Use a 9:16 canvas in the Screen panel so the background frames the phone instead of filling a wide video.
Other ways to capture iOS footage
If you need the simulator's pixels with no pointer at all, the Simulator can record itself:
xcrun simctl io booted recordVideo ~/Desktop/demo.mov
This records the running simulator's screen to demo.mov on your Desktop. Press Control-C in that Terminal window to stop and save the file.
For a real iPhone, QuickTime Player can record the phone over a cable: choose File ▸ New Movie Recording, then pick the iPhone from the menu next to the record button.
Footage from either method has no cursor data, so Screen Bolt can't generate zooms or cursor effects for it, though you can still add zoom regions by hand. If you open such a file directly, your edits aren't saved, so finish and export in one sitting. To keep edits, drop the file onto the clip track of an existing project instead, where it becomes a normal clip.
Add zooms, a cleaner cursor and a background
Zooms
With Create zooms automatically on (Settings ▸ Recording), Screen Bolt turns your clicks into zoom regions when you stop recording. Clicks within 1 second and 200 pixels of each other merge into one zoom. Each zoom holds for at least 1.8 seconds, and the view follows your cursor while zoomed in. Our auto zoom explainer covers how this works.
To adjust them:
- In the Zoom panel, Default Level sets the level for new regions (1.2× to 6.0×, default 2.0×). Apply to All Regions applies it to existing ones.
- On the zoom track, drag a region to move it or drag its edges to resize it. Right-click it for Change Zoom Level and Transition Speed (from Snap (none) to Cinematic (1.0s)).
- Press ⌘K (Command-K) to add a zoom at the playhead.
Two things to plan for while recording:
- Typing doesn't create zooms. On a form-filling step, click into the field before you type so the click triggers the zoom.
- A zoom centers on wherever the cursor was at that moment, and there's no control to move its focus point afterwards. Rest the pointer on the element you're talking about.
Leave Auto Zoom on Click switched on: turning it off disables every zoom in preview and export, including the ones you added by hand. More in how to zoom in on a screen recording.
Cursor
In the Cursor panel, Smooth Movement (on by default) smooths out your mouse path. Size runs from 1.0× to 7.0× (default 3.0×). That suits a desktop app but looks oversized over a phone screen, so lower it for Simulator recordings. Highlight on Click (off by default) marks each click or tap, which helps viewers follow an iOS flow.
Turning Show Cursor off hides the cursor in the preview only; the export still draws it.
Background, shape and corners
In the Screen panel, set Aspect Ratio (Original, 16:9, 4:3, 21:9, 1:1, 9:16, 3:4, 4:5), Padding (default 5%; at 0% no background is rendered) and Corner Radius (default 12 px). In the Background panel, choose Wallpaper, Gradient, Color or Image.
Not everything in the preview reaches the exported file:
| Setting | In the exported file |
|---|---|
| Built-in wallpapers, your Mac's wallpapers, custom images | Yes |
| Padding, corner radius, aspect ratio, 3D camera tilt | Yes |
| Custom gradient colors | Exported as the selected wallpaper preset's gradient |
| Solid color | Exported as a dark gradient |
| Background blur, screen shadow, inset | No, preview only |
| Device frames and reflection | No, preview only |
To get a brand color behind your app, make a solid-color image file and choose it under Image, since custom images do export. To reuse the look on every demo, save it with Presets ▸ Save Current as Preset.... More in adding a background to a screen recording.
Trim, label and redact
- Press S to split at the playhead, then delete the dead section. Or set In and Out points with I and O and remove the range with Cut I-O.
- Press T to add a text overlay that labels a step. Whatever Animate In style you pick, it exports as a fade.
- Press B to add a blur region over anything private.
- In the Effects panel, Auto-Detect Sensitive Text finds email addresses (plus phone numbers and your keywords if you set them) and adds blurs that follow the text. Run it after you've finished cutting and changing speed: detections aren't re-timed if you cut or reorder clips afterwards. Review the results on the Blur track before exporting.
The live Blur zones in the recording bar don't blur Window-mode recordings, so for window captures use the editor blurs above.
Voice, music or silent
Let the destination decide.
- Silent for landing-page heroes. Browsers generally only autoplay video that's muted, so a hero loop has to make sense without sound. Put the key lines in text overlays. Before recording, choose Don't record system audio in the Audio menu and Don't record microphone in the Mic menu, or afterwards right-click the track rows and choose Remove System Audio or Remove Microphone.
- Voice for walkthroughs. Pick a microphone from the Mic menu before you record. In the editor's Audio panel, Auto Audio Enhance switches on Noise Reduction, Volume Normalization (to about −16 LUFS) and Voice Clarity, all processed on your Mac. See removing background noise.
- Music under a hero loop or social clip. Use Add Audio Track to place a music file, then set its Volume, Fade In and Fade Out (up to 3 seconds each). Only use music you have the rights to.
For videos watched with sound on, the Sounds panel adds click sounds on every click and whooshes at each zoom. Keyboard sounds also need Input Monitoring permission, granted before you record, because the key timing is captured during the recording.
Exporting for landing pages and stores
- Click Export in the editor toolbar.
- Under Format, choose MP4 (H.264, plays everywhere) for the web, or MOV (HEVC, smaller files) for archives or handing off to another editor.
- Under Quality, choose Original, 4K, 1080p or 720p. Each tile shows the output pixel size; sizes larger than your recording are disabled.
- Check the size estimate, set Save to (Desktop by default) and click Export. Frame rate (30 or 60 FPS, default 60) and Compression are in Settings ▸ Quick export. The frame rate also applies to recording, so set it before you record.
| Destination | Format | Quality | Compression |
|---|---|---|---|
| Landing-page hero | MP4 | 1080p | Web, to keep the page light |
| YouTube or product page | MP4 | 1080p or 4K | Studio or Social Media |
| Social clip | MP4 on a 9:16 or 4:5 canvas | Check the pixel size on the tile | Social Media |
| README or docs | GIF (Pro) or a short MP4 | GIF Standard (640 px) or HD (960 px) | Not used for GIF |
GIFs export at about 10 fps with no sound. Clips over 60 seconds are refused, and over 15 seconds you're asked to confirm. Both limits are measured against the full recording, not the trimmed result, so record GIF demos as short takes. See adding a demo GIF to a GitHub README, and estimate MP4 sizes with the video file size calculator.
For App Store previews, Apple sets the accepted resolutions, lengths and frame rates per device. Check Apple's current app preview specifications in App Store Connect Help, then compare them with the pixel size on each Quality tile. If a Screen Bolt preset doesn't match, the Simulator's own recordVideo output above, which has no Mac pointer, may get you closer.
The free version of Screen Bolt exports at 720p, up to 3 minutes, with a watermark, and without GIF. The 3-minute check also uses the full recording length rather than the trimmed length, so record each demo as its own take.
Common mistakes
- Recording the whole display. Record the window so the app fills the frame.
- Typing without clicking first. No click means no zoom on that step.
- Skimming with J or L, then forgetting. Those keys change the project's speed, and that speed is exported. Check that the speed menu reads 1x before exporting. Speed ramps on an In/Out range play in the preview but don't export.
- Trusting the preview for frames and shadows. Device frames, screen shadow, inset and background blur don't reach the file.
- Real data on screen. Use a seeded demo account and run Auto-Detect Sensitive Text as your last edit.
If you haven't written the script yet, start with the product demo video script template, and for the editing side in more depth, see making product demos without a video editor. Screen Bolt is free to download, and Pro is a one-time $79 as of November 2026 (compare free and Pro).