DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
Cupertino desk5 min

How to Emulate an iPhone in Puppeteer for Website Screenshots

A practical guide to selecting a Puppeteer iPhone preset, applying it before navigation, capturing viewport or full-page screenshots, and troubleshooting readiness and layout issues.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Puppeteer’s KnownDevices preset and call page.emulate() before opening the page. This applies the selected device’s viewport, user agent, and related metrics; then page.screenshot() saves a viewport or full-page capture.

Emulate an iPhone and capture a page

Install Puppeteer in a Node.js project, then use a device preset. The current Puppeteer device reference includes iPhone 17 Pro; choose the preset that matches the target you need rather than assuming every iPhone uses the same settings.

As an Amazon Associate I earn from qualifying purchases.

import puppeteer, { KnownDevices } from 'puppeteer';

const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();
  const iPhone = KnownDevices['iPhone 17 Pro'];

  await page.emulate(iPhone);
  await page.goto('https://example.com', { waitUntil: 'networkidle2' });
  await page.screenshot({ path: 'iphone.png', fullPage: true });
} finally {
  await browser.close();
}

Run this as an ES module in a Node.js environment with Puppeteer installed. The preset is accessed by its name in Puppeteer’s KnownDevices reference. Preset dimensions can vary with the Puppeteer version; check the entry for the version in your project instead of relying on a dimension copied from elsewhere.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Apply emulation before navigation

page.emulate(device) is a shortcut for setting the user agent and viewport. Puppeteer recommends applying it before navigation: changing the viewport after a page has loaded can trigger a resize that some sites do not handle as expected. See the Page.emulate() documentation.

#1 Best Overall
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
  • This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
  • Please check with your carrier to verify compatibility.
  • The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
  • Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
  1. Create a page with browser.newPage().
  2. Select a device from KnownDevices, or define a device configuration appropriate to your target.
  3. Call await page.emulate(device) before page.goto().
  4. Navigate to the target URL and wait for the page state your capture requires.
  5. Call page.screenshot() with the desired output options.

Choose the screenshot area and readiness condition

Viewport or full page

By default, page.screenshot() captures the current viewport. Set fullPage: true to capture the full page, or use clip in the screenshot options when you need a specific rectangle. Set path to write a file; without it, Puppeteer returns the image data. The Puppeteer screenshots guide and ScreenshotOptions reference document these options, including image type, applicable quality settings, and transparent-background capture with omitBackground.

Wait for the right content

The example uses waitUntil: 'networkidle2', which Puppeteer demonstrates in its screenshots guide. It is not a guarantee that every application has finished rendering: pages may load content after network activity settles. For a known element, wait for it explicitly before capture, for example:

await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
await page.waitForSelector('.page-ready');
await page.screenshot({ path: 'iphone.png', fullPage: true });

Replace .page-ready with a selector that appears when the content you need is available. If the page has no reliable readiness marker, choose a navigation condition or wait strategy suited to that site and verify the resulting capture.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Apple iPhone 16, 128GB, Pink - Unlocked (Renewed)
  • 6.1" Super Retina XDR OLED, HDR10, Dolby Vision, 1000nits (typ), 2000nits (HBM), 2556x1179px at 460ppi, 3561mAh Battery
  • 128GB 8GB RAM, Apple A18 (3nm), Hexa-core (2x4.04 GHz + 4x2.20 GHz), Apple GPU 5-core, 16‑core Neural Engine
  • Rear camera: 48MP, f/1.6, wide + 12MP, f/2.2, ultrawide, Front Camera: 12MP, f/1.9, wide, iOS 18, upgradable to iOS 18.5
  • 4G LTE: 1/2/3/4/5/7/8/12/13/14/17/18/19/20/25/26/28/29/30/32/34/38/39/40/41/42/48/53/66/71, 5G: n1/2/3/5/7/8/12/14/20/25/26/28/29/30/38/40/41/48/53/66/70/71/75/76/77/78/79 - Dual eSIM
  • Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Sprint., Etc.

Choose the right iPhone settings

Use a named preset when your goal is to reproduce a particular Puppeteer-supported device configuration. For a custom setup, compare the properties that affect the screenshot rather than treating “iPhone” as one universal size:

  • Target model: select the closest available preset for the device you are checking.
  • Viewport: width and height determine the page’s responsive layout.
  • Device pixel ratio: affects the relationship between CSS pixels and output pixels.
  • User agent: some sites serve different markup or behavior based on it.
  • Touch and mobile behavior: these are separate emulation considerations, not just changes to the viewport.
  • Orientation and capture area: decide whether you need portrait or landscape and a viewport or full-page image.

Puppeteer’s Device type includes a user-agent string and viewport. Chrome DevTools describes viewport, device pixel ratio, and touch simulation as distinct mobile-emulation dimensions. Its device mode is an approximation running on desktop, not a physical phone: Chrome DevTools: Simulate mobile devices with device mode.

Understand what the screenshot does—and does not—prove

Puppeteer applies device settings through Chromium’s browser automation APIs. The screenshot is useful for checking responsive layout under those emulated settings, but it does not by itself establish that a page behaves identically in iOS Safari or on iPhone hardware. If device-specific behavior matters, validate it on an actual iPhone as well.

Rank #3
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
  • 6.1inch Super Retina XDR display. Aluminum with color-infused glass back. Ring/Silent switch
  • Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU
  • Advanced dual-camera system. 48MP Main | Ultra Wide. Super-high-resolution photos (24MP and 48MP). Next-generation portraits with Focus and Depth Control. 4X optical zoom range
  • Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
  • Up to 26 hours video playback. USB C, Supports USB 2. Face ID

Troubleshooting common capture problems

The page looks like desktop

Confirm that page.emulate(device) runs on the same page before page.goto(). Check the selected KnownDevices entry and whether the site relies on a user agent, viewport, or touch behavior that your chosen configuration does not reproduce.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The screenshot is blank or missing content

The capture may have happened before the relevant content rendered. Replace a generic readiness assumption with a wait for a page-specific selector, or choose a different navigation condition. A network-idle condition does not ensure that every delayed or client-rendered element is ready.

The layout changes unexpectedly

Apply emulation before navigation, then inspect the chosen preset’s viewport and device settings for your installed Puppeteer version. A page resize after load can affect sites that are not designed to handle a phone-size change mid-session.

Rank #4
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed) | Unlocked
  • This pre-owned product is not Apple certified, but has been professionally inspected, tested and cleaned by Amazon-qualified suppliers.
  • There will be no visible cosmetic imperfections when held at an arm’s length.
  • This product is eligible for a replacement or refund within 90 days of receipt if you are not satisfied.
  • Product may come in generic Box.

The image is cropped or too long

For a viewport-only image, leave fullPage unset or set it to false. For the whole document, set fullPage: true. Use clip when the required output is a defined rectangle.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo takes a screenshot or PDF with one GET request. Cookie and consent banners are accepted before capture, and more than 60 known consent platforms, newsletter popups, and chat widgets can be removed; each of these steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

See the ScreenshotNeo documentation for API setup and options. ScreenshotNeo offers 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Sign up for free ScreenshotNeo access.

Runnable alternatives in Python and Node.js

These examples make the same one-request capture as the cURL command, saving the response body as an image. Replace YOUR_API_KEY with your key.

Best Value
Apple iPhone 16e, 128GB, Black - Unlocked (Renewed)
  • 6.1" Super Retina XDR OLED, HDR10, 800 nits (HBM), 1200 nits (peak), 2532x1170px at 460ppi, 4005mAh Battery
  • 8GB RAM, Apple A18 6-core CPU (2 performance + 4 efficiency cores), Apple GPU 4-core, 16‑core Neural Engine
  • Rear camera: 48MP, f/1.6, wide, Front Camera: 12MP, f/1.9, wide, iOS 18.3.1, upgradable to iOS 18.5
  • Connectivity: Global 4G LTE, Sub-6 GHz 5G, LTE, Wi-Fi 6, Bluetooth 5.3, NFC, USB-C, Wireless Charging (7.5W). (does not have mmWave 5G or MagSafe or physical SIM card) - Dual eSIM Only
  • Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Straight Talk., Etc.

Python

import requests

r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

For API options beyond the basic request, use the ScreenshotNeo documentation.

Frequently Asked Questions

Does Puppeteer’s iPhone preset require a connected phone?

No. The preset configures Puppeteer’s browser session; it does not connect to or control a physical iPhone.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I save the screenshot as a buffer instead of a file?

Yes. Call page.screenshot() without a path; Puppeteer returns the image data.

Quick Recap

Bestseller No. 1
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Please check with your carrier to verify compatibility.; Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
$300.00
Bestseller No. 3
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU; Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
$408.99
Bestseller No. 4
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed) | Unlocked
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed) | Unlocked
There will be no visible cosmetic imperfections when held at an arm’s length.; Product may come in generic Box.
$265.00

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.