Skip to content

← The Lab

chrome-capture: record a Chrome tab to a 60-120 fps MP4 with audio, no ffmpeg (handy for code-made video and demos)

Paul Irish of the Chrome team released chrome-capture on Nov 9, a tiny Apache-2.0 npm package around a new Chrome 153+ DevTools API that records a tab straight to an AV1 MP4 at 60 fps by default and up to 120 fps or 2160p, with tab audio. If your video starts life in a browser (HTML motion graphics, product walkthroughs, agent-made explainers), it is a much faster way to get the pixels out.

What changed in Chrome. Until now, Playwright's recordVideo and Puppeteer's screencast grabbed JPEG frames over the DevTools protocol and piped them to ffmpeg. Per the README, Chrome's new Page.startScreenRecording sends frames straight from the compositor to an out-of-process encoder that writes AV1 into the MP4 while it records, so stopping is near-instant and you can start and stop mid-session (log in, warm up the page, then record only the part you want).

How you use it. One command: npx chrome-capture <url> out.mp4 4s records 720p at 60 fps with audio, headless. For 1080p at 120 fps you need a 120 Hz display and headful Chrome (for example a ProMotion MacBook). There is a startRecording() function that accepts a Playwright page, a Puppeteer page or a raw CDP session, plus a @playwright/test fixture that attaches an MP4 to every test. Needs Chrome 153+ and Node.

Author's numbers. In Paul Irish's benchmark on an M4 Max (a 6.4 s UI replay at 1280x800), the old screencast+ffmpeg path produced 25 fps and took 3.8 s to finalize; chrome-capture produced 60 fps and finalized in 17 ms, with a smaller file and slightly higher PSNR. There is no bitrate or CRF setting yet: Chrome picks the bitrate from resolution and frame rate (about 9 Mbps at 1080p60 per the README), and he suggests 1080p60 or higher for good quality.

Where it fits for video makers. It is not a frame-exact renderer: it records real time, so a slow page can still stutter, and Remotion- or HyperFrames-style tools that seek frame by frame remain the right choice for final renders. Where it helps is fast previews of HTML motion pieces, recording interactive or WebGL scenes that are hard to render offline, product UI walkthroughs, and letting an agent record its own runs for review. The output is AV1, so check your editor handles it or transcode once.

Signals (HOT). Paul Irish's own launch post took off (about 465 likes), followed by @RoundtableSpace's write-up on Nov 10; the repo was created Nov 8 and was near 200 stars when we checked. We have not benchmarked it ourselves.

Our take: if you already drive Chrome with Playwright or Puppeteer to make video, swap in startRecording() on one project and compare the output against your current capture path. It is free and small enough to read in one sitting.

Related tools on ReelStack

Skills & repos in our directory

More from the Lab

Topics: Motion graphics skills