To monitor Puppeteer performance, record a trace around the slow page load or interaction with page.tracing.start() and page.tracing.stop(), then inspect its timeline in Chrome DevTools. Use browser DevTools to pause and inspect page JavaScript; use Node’s inspector to debug the Puppeteer script itself. These tools answer different questions: a trace shows what happened over time, while a debugger lets you inspect code and state at a breakpoint.
Choose a trace or an interactive debugger
| Approach | Use it to answer | What you inspect |
|---|---|---|
| Trace | What browser work occurred during the slow interval? | A timeline for a particular page load or interaction. |
| Browser DevTools | What is the page’s JavaScript doing, and what is its state at this point? | Page code and browser state, with breakpoints. |
| Node inspector | What is the automation script doing or waiting for? | Puppeteer’s Node.js code and its execution state. |
Puppeteer describes trace capture as a way to help diagnose performance issues, but a trace does not identify the cause by itself. Inspect the interval where the user-visible delay occurs and determine which work coincides with it. Then repeat the same scenario after a change and compare the resulting trace. Puppeteer’s overview names tracing as a performance-diagnosis use case.
As an Amazon Associate I earn from qualifying purchases.
Capture a trace around the slow behavior
Start tracing before the page action you want to measure, and stop after that action has completed. The following runnable Node.js example uses Puppeteer’s documented tracing API and writes the trace to trace.json:
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallconst puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.tracing.start({ path: 'trace.json' });
await page.goto('https://example.com');
await page.tracing.stop();
console.log('Trace saved to trace.json');
} finally {
await browser.close();
}
})();
Save the file, for example as trace.js, and run node trace.js in a project where Puppeteer is installed. Replace the example URL and navigation with the exact page and action that reproduce the slowdown. Open the resulting trace in Chrome DevTools or a timeline viewer. See the Puppeteer Tracing class reference for the API details.
#1 Best Overall
- CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
- WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
- A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
Trace capture rules and options
- Only one trace can be active per browser at a time. Stop an active trace before trying to start another.
- Set
pathto write the trace to a file. If you omit it, Puppeteer documents thattracing.stop()returns the trace as aUint8Arrayinstead of writing it to disk. - Tracing options include categories, screenshots, and buffer size. Consult the TracingOptions reference for the option shape supported by your installed Puppeteer version.
- The TracingOptions documentation reports a Chromium default buffer of 200 MB (200,000 KB) when buffer size is omitted or set to zero. This is a tracing-buffer configuration, not a page-speed result.
Keep captures bounded to the navigation or interaction under investigation. Instrumentation and the particular reproduction conditions can affect what you observe, so treat a trace as diagnostic evidence for that run—not as proof of an exact duration every user will experience.
Open browser DevTools to inspect page code
When the suspected problem is in page JavaScript, launch Puppeteer with DevTools enabled. This opens the browser’s DevTools panel; the launch option forces headless to false. Put a debugger statement in the browser-side code at the point where you want execution to pause:
Rank #2
- CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
- SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ devtools: true });
try {
const page = await browser.newPage();
await page.goto('https://example.com');
await page.evaluate(() => {
debugger;
// Inspect the page state here after resuming in DevTools.
return document.title;
});
} finally {
await browser.close();
}
})();
Run the script with Node and resume from the opened DevTools panel when execution pauses. The debugger statement above executes in the page context; it is not a breakpoint in the Node automation code. Check the LaunchOptions reference and the Puppeteer debugging guide for version-specific details.
Free tools Windows power users keep installed
One-click scans. No signup required.
Attach Node’s inspector to debug Puppeteer code
If the automation is stuck, slow, or taking an unexpected branch, inspect the Node.js script rather than the page. Add a debugger statement in the server-side code, then start Node with --inspect-brk so execution pauses at startup:
Rank #3
- Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
- Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
- Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
- In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
- Ultra-thin bezels: Maximize your viewing experience with thin bezels.
node --inspect-brk trace.js
- Open
chrome://inspect/#devicesin Chrome. - Find the Node target and select inspect.
- Set or use a breakpoint in the Puppeteer script, then resume and step through the automation.
Use this path to see which Node statement runs, what values it has, and where it waits while driving the browser. Puppeteer’s debugging guide notes that page.click() cannot be run directly from the DevTools console because of a Chromium bug; put such browser actions in the test script instead.
Use page metrics as supporting measurements
page.metrics() returns a key/value metrics object. It can complement a trace, but it does not replace the timeline when you need to understand the sequence of browser work. The Page API reference specifies that its timestamps are monotonic seconds from an arbitrary point in the past. They are not calendar timestamps, so do not read them as dates or compare them to wall-clock time as if they were.
Rank #4
- CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
- SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
- MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
- KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
- INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient
Troubleshoot common inspection problems
No trace file appears
- Confirm that
pathwas supplied topage.tracing.start(); without it, retrieve the trace data returned bypage.tracing.stop(). - Check that the script reached
page.tracing.stop()before closing the browser or exiting.
Starting a trace fails because one is already active
Puppeteer permits only one active trace per browser. Stop the existing trace before starting another, or use a separate browser instance for a separate capture.
The debugger does not pause where expected
- For page code, use
devtools: trueand put the breakpoint ordebuggerstatement in browser-side code. - For the Puppeteer script, use Node’s inspector with
node --inspect-brkand connect throughchrome://inspect/#devices. - Do not try to invoke
page.click()in the DevTools console; put the action in the Node test script.
The trace does not explain the slowdown
Check that tracing began before the slow behavior and stopped after it. A trace that excludes the relevant interval cannot show the work that happened there. Reproduce the same navigation or interaction, inspect the timeline around the delay, and use breakpoints if you need to examine code or state rather than timing.
Best Value
- 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
- 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
- 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.
Or skip the browser setup
For a screenshot of a page rather than a Puppeteer performance trace, ScreenshotNeo offers a one-request screenshot API. The API returns an image or PDF; it does not replace DevTools tracing or measure Puppeteer execution.
ScreenshotNeo accepts a URL in a GET request and can return PNG, JPEG, WebP, or PDF. Cookie banners are accepted and removed, along with supported newsletter popups and chat widgets, before the shot; those steps can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and responses identify the page verdict and billing status in headers. It also provides an MCP server for AI agents, with screenshot, page-info, and PDF-capture tools. The free plan includes 1,000 shots a month with no card; paid plans start at $5 for 3,000 shots. See the ScreenshotNeo documentation for API details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Frequently Asked Questions
Can I use Puppeteer’s performance trace to prove how fast a site is for every user?
No. A trace records one instrumented reproduction. Use it to investigate that run’s timeline, not as a guarantee of universal user-perceived speed.
Can I use a screenshot API instead of Puppeteer tracing to diagnose performance?
No. A screenshot API captures an image or document; Puppeteer tracing records a browser timeline for performance diagnosis.
Quick Recap
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.




