DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon 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
browser automation

How to Record Page Videos with Puppeteer (Page.record Guide)

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

Use Puppeteer’s page.record() method to capture a page as an MP4. In the Puppeteer 25.12.0 API, this method is marked experimental: open a page, start recording before the activity you want to show, perform or wait for that activity, then call await recorder.stop() and close the browser. The older page.screencast() API is obsolete and should not be the starting point for new code.

Record a page video with Puppeteer

The smallest complete example is an ES module saved as record-page.mjs:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');

const recorder = await page.record({ path: 'recording.mp4' });

// Perform the actions or wait for the page activity to capture.

await recorder.stop();
await browser.close();

Run it with Node.js after installing Puppeteer in your project. The resulting file is recording.mp4. Puppeteer documents ScreenRecording as a readable stream with a stop() method, so stopping the recorder is part of a normal, deliberate shutdown sequence.

What the recording lifecycle does

1. Launch a browser and create the page

puppeteer.launch() starts the browser process and browser.newPage() creates the tab that will be recorded. Keep a reference to both objects so cleanup can happen even when your capture logic changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
kimire Video Camera Camcorder Digital Camera Recorder Full HD 1080P 15FPS 24MP 3.0 Inch 270 Degree Rotation LCD 16X Digital Zoom Camcorder Camera with 2 Batteries(Black)
  • 【Video Camera as Webcam】: The video camera is useful to take the beautiful photos and share it in your Youtube. It can be used as webcam when the camera connect the computer. Please operate the camera button to choose the “PC CAM” mode.When the “AMCAP ” window is opened,from which shooting object through the camera will be showed on this window. You can have a video call with your families or friends. Please download the software “AMCAP ” before use the webcam function.
  • 【Multifunction Camcorder】: 1080P(15fps) Video Resolution, 24M(6000x4500) Image Resolution, image format (JPEG), video format(AVI), 16X digital zoom, camcorder with fill light, 3.0 inch LCD and supports 270°rotation, Anti-shake, Face Capture, Beauty Function, Self-timer and Webcam function, Pause function, USB 2.0, TV Output, Setting Date and Time.
  • 【Pause Function】: This video camera supports Pause function,so you can pause the recording when you need,then continue recording again without starting a new one, which makes it easier for you to edit and upload the videos. This video camera included a USB cable,you can connect it directly to the computer to upload videos. This video camera included a AV cable,you can connect it directly to the TV to playback the videos.
  • 【Recording While Charging】: The camcorder come with two NP-FV5 batteries. It allows you to keep recording around 60 to 90 minutes when it's fully charged. For the first time use need to charge more than 8 hours. The camcorder support the recording while charging,good to record long videos anytime.
  • 【Small and Compact Camcorder】: The camcorder supports SD/SDHC card up to 128GB (not included), just remember to format the SD card before use the camcorder first time. The camcorder support the tripod(not included) connection and the hole is standard size.

2. Navigate before recording when the initial load is not part of the video

The documented example calls page.goto() before page.record(). This produces a video focused on the page activity that follows navigation. If you need to show the navigation itself, start recording earlier and then navigate while the recorder is active.

3. Start recording before the interaction

const recorder = await page.record({path: 'recording.mp4'}); starts capture and selects the output path. Start it immediately before clicks, typing, scrolling, animations, or other behavior you want viewers to see.

4. Perform or await the behavior

Use ordinary Puppeteer operations while the recorder is running. For example, click a control, wait for a selector, or pause while an animation plays:

const recorder = await page.record({ path: 'checkout-demo.mp4' });

await page.click('#start-checkout');
await page.waitForSelector('#confirmation');

await recorder.stop();
await browser.close();

The selector and actions in this example are illustrative; replace them with elements that exist on your page. A recording only contains activity that occurs between the successful start and stop() calls.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

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

5. Stop first, then close the browser

Call await recorder.stop() before await browser.close(). Stopping finalizes the MP4 stream. Closing the browser first can terminate the capture before the file is complete.

A reusable script with cleanup

For a script that must leave the browser closed after an error, put the stop and close operations in a finally block. Track whether recording actually started so cleanup does not call methods on an uninitialized recorder.

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();
let recorder;

try {
  const page = await browser.newPage();
  await page.goto('https://www.example.com');

  recorder = await page.record({ path: 'recording.mp4' });
  await page.waitForTimeout(3000);
  await page.click('body');
} finally {
  if (recorder) {
    await recorder.stop();
  }
  await browser.close();
}

Choose a wait condition that represents the event you need to capture rather than relying on an arbitrary delay. The API reference does not define a universal duration, resolution, frame-rate, or platform guarantee for Page.record(), so validate the output for your own page and Puppeteer/Chrome combination.

Page.record() versus the obsolete page.screencast()

Puppeteer’s current API reference identifies Page.record() as the replacement for page.screencast(). The two names should not be treated as interchangeable:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Characteristic Page.record() page.screencast()
Status in Puppeteer 25.12.0 Experimental current method Obsolete; documentation directs users to Page.record()
Output described by the API docs MP4 video stream WebM using VP9 by default
Documented frame rate Not stated in the researched reference 30 FPS by default
Documented browser requirement Not stated in the researched reference Chrome 153 or newer
Documented external dependency No FFmpeg requirement stated FFmpeg is listed as required

Chrome 153+, WebM/VP9, 30 FPS, and FFmpeg belong to the legacy screencast documentation. Do not automatically apply those requirements to Page.record(). The current reference also does not document codec controls, maximum duration, resolution limits, or cross-platform guarantees for the experimental method.

Rank #2
Sale
ZYDIIE 4K Video Camera Camcorder UHD 64MP Vlogging Camera for YouTube 18x Digital Zoom 3" 270° Rotation IPS Touchscreen Video Camcorder with Night Vision, Remote Control, 32GB Card, 2 Batteries
  • 4K & 64MP Video Camera Camcorder: Capture life in breathtaking detail with 4K Ultra HD recording and vibrant 64MP photos, powered by an advanced high-sensitivity CMOS sensor. Equipped for exploring the beautiful world, this video camera is your perfect companion! Ideal for video recording, travel vlogs, family activities, interviews, studying, and cherishing precious moments
  • 18X Digital Zoom & Infrared Night Vision: This 4K camcorder powerful 18x digital zoom brings distant action right to you. Capture clear details of people and landscapes. With the push of “OK” button, activate the IR cut filter. This night vision camcorder delivers high-contrast black & white video in total darkness, providing a clearer image than standard low-light color mode
  • 3.0 Inches Touchscreen with 270° Rotation: This camcorder features a brilliant 3-inch touchscreen that puts complete control in your hands. The screen rotates a full 270 degrees, making it a game-changer for vloggers. Easily frame yourself for solo shots, capture high-angle overhead videos, or get creative low-angle perspectives
  • Webcam & Remote Control: Instantly transform your camcorder into webcam with a single USB cable. No complex drivers needed. Just connect and ready to go. Elevate your live streams and professional presentations with stunning 4K clarity. This video camera comes with a handy wireless remote to start/stop recording, and take photos without ever touching the device—ideal for solo creators, vloggers, and group shots
  • Multifunctional Camcorder: This 4K camcorder is loaded with pro features. Like face detection, video pause, slow motion, continuous shooting, time-lapse, self-timer, recording while charging, date stamp. Resulting in consistently smooth, sharp, and stunning footage in every scene. The two high-capacity batteries and 32GB micro SD card ensure that you won't miss a single beautiful moment in life

Controlling what appears in the video

Capture a prepared state

Navigate, sign in through your test flow, dismiss an in-page dialog, or populate test data before starting the recorder when those setup steps would distract from the demonstration. Start recording only after the page is in the state you want viewers to see.

Capture setup as part of a tutorial

If the sequence itself matters, move page.record() before the navigation or interaction. Keep the same stop-and-close order; only the start point changes.

Wait for an observable event

Prefer a page condition such as waitForSelector() over an unexplained sleep. This makes the script less dependent on one machine’s timing. For a deliberately timed animation, an explicit wait can be appropriate, but the required delay is page-specific.

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

Keep output names deterministic

Use a distinct path for each scenario, such as login-success.mp4 and login-error.mp4. In CI, include a run identifier in the filename to prevent separate jobs from overwriting one another.

Common failures and fixes

The file is missing or cannot be played

  • Confirm that page.record() resolved before the interactions began.
  • Confirm that recorder.stop() completed before the browser closed.
  • Check that the process can write to the directory in the path you supplied.

The video ends too early

  • Look for a code path that calls stop() immediately after starting.
  • Ensure an awaited interaction or wait condition is between the start and stop calls.
  • Do not close the browser in a competing cleanup path before the recorder is stopped.

page.record is undefined

Check the Puppeteer version actually installed and compare it with the 25.12.0 API context in which this method is documented. An older package may not expose the method. Upgrade deliberately, then verify the browser revision and your application’s compatibility before deploying the change.

A script still uses page.screencast()

Treat that code as legacy. The current documentation marks the method obsolete and recommends Page.record(). Migrate the start/stop lifecycle to page.record(), and do not assume the old WebM, Chrome, or FFmpeg requirements describe the new API.

The page itself fails to load

Separate navigation problems from recording problems. Log or handle the error from page.goto() before starting capture, and test the URL manually in the same environment. A recorder cannot produce a useful page video when the page never reaches the state your script expects.

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

Results differ between runs

The official reference does not promise fixed frame pacing or identical rendering across environments. Reduce unrelated page activity, use deterministic test data, wait for explicit page conditions, and retain the exact Puppeteer and browser versions used for a run.

Reliability and performance considerations

Experimental means version-conscious

Because Page.record() is experimental in the Puppeteer 25.12.0 documentation, pin and review upgrades rather than assuming long-term API stability. Keep a small smoke test that launches a page, records a short interaction, stops the recorder, and verifies that an MP4 file is created.

Rank #3
Sale
MWIRB 8K Video Camera Camcorder Latest 88MP Ultra HD Video Cameras WiFi Vlogging Camera for YouTube 18X Digital Video Cameras with Microphone 6-Axis Anti-Shake IR Night Vision Video Recorder
  • Latest 8K Video Camera with Remote Control : This Video camera features 8K video resolution at 15FPS, with additional options for 6K at 30FPS, 5K at 30FPS, 4K at 30FPS, 1080P at 60FPS/30FPS, 720P at 60FPS/30FPS. With an impressive 88MP image resolution and 18X digital zoom, this camcorder delivers exceptional visuals. The included remote control allows for effortless self-recording and photography from any angle, making it an ideal 8K vlogging camera for bloggers and content creators.
  • Experience Smooth and Stable Footage with Our 8K Camcorder : Featuring advanced 6-Axis anti-shake technology for high-precision stabilization. The 3-inch, 270-degree rotatable touch screen allows for effortless self-recording and framing, making it perfect for vlogging and self-blogging. Additionally, the digital video camera's intuitive interface and user-friendly navigation ensure easy operation, so you can focus on capturing stunning 8K video and photos.
  • Infrared Night Vision Video Camera with WiFi : Stay connected and share your moments instantly with our 8K Camera's built-in Wi-Fi and companion app "iSmart DV2". Download the app on your Android/iOS device to easily transfer photos/videos, and share them directly to social media platforms like Facebook and YouTube. Additionally, this camera features infrared night vision, allowing you to capture footage in low-light environments, producing clear black and white images even in complete darkness.
  • Dual-Functionality and Enhanced Audio : This 8K video camera for YouTube doubles as a high-quality webcam, simply connect via USB and switch to "Webcam" mode for seamless video calling, live streaming, vlogging, and online teaching. The included external X-Y stereo microphone reduces ambient noise and captures clear, stable audio, ensuring professional-grade sound quality for your recordings.
  • Versatile camcorders video camera 8k for Every Adventure: This multifunctional camera features a range of creative modes, including continuous shooting, time-lapse, slow motion, and recording while charging. Perfect for capturing life's adventures, whether you're traveling, camping, hiking, or enjoying your favorite sports. Plus, our dedicated team is available to provide technical support, troubleshooting, and answers to any questions you may have after your purchase.

Recording is part of the browser workload

Page rendering, JavaScript, network activity, and video encoding all share the environment running Chromium. Heavy pages can affect the timing of your interactions. The available documentation does not provide benchmarked overhead or a guaranteed frame rate, so measure on the machines that will run your automation if timing matters.

Manage files explicitly

MP4 files can become large during long captures. Write to a workspace with sufficient capacity, move completed files to your artifact store, and remove temporary recordings according to your retention policy. The API reference does not state a maximum recording duration or file-size limit.

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

Stop on every exit path

Use structured cleanup, as in the finally example, and make sure your test runner waits for the asynchronous stop operation. This is especially important when a failed assertion would otherwise terminate the process while the stream is still open.

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

Or skip the browser setup

If you need a clean visual of a URL rather than an MP4 interaction recording, ScreenshotNeo is a website screenshot API and MCP server. It is not a replacement for Puppeteer page-video capture: it returns PNG, JPEG, WebP, or PDF from one request. It can be useful when your deliverable is a still image or document and you do not want to maintain browser automation.

For documentation and all parameters, see ScreenshotNeo’s API docs. A basic cURL request is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

The equivalent Python request is:

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}`);
  • Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off.
  • Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Response headers identify the page verdict and whether it was billed.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
  • The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is available on every plan.

Sign up for the free ScreenshotNeo plan to try the screenshot workflow without a card.

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

Practical checklist

  • Use page.record(), not the obsolete page.screencast(), for new code.
  • Confirm the Puppeteer version and account for the method’s experimental status.
  • Start recording before the exact activity you need to show.
  • Await the interaction or condition that defines the end of the scene.
  • Call await recorder.stop() before await browser.close().
  • Keep legacy Chrome, WebM/VP9, 30-FPS, and FFmpeg notes tied to page.screencast().
  • Test output creation and playback in the same environment used for automation.

Frequently Asked Questions

Does Page.record() create a video or a sequence of screenshots?

The Puppeteer 25.12.0 reference describes its result as an MP4 video stream.

Can I use the old WebM output settings with Page.record()?

The current reference does not document codec or WebM controls for Page.record(); those settings belong to the obsolete screencast API.

Where should I put the recording file in continuous integration?

Choose a writable workspace path, stop the recorder before the job exits, and then publish the completed MP4 through your CI system’s normal artifact mechanism.

Is ScreenshotNeo suitable for recording an interaction video?

No. ScreenshotNeo is for URL screenshots and PDFs; use Puppeteer Page.record() when the required output is an MP4 of page activity.

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

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.

Read next

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

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.