If Puppeteer shows different content in headless and headful runs, first check which headless implementation you launched. In current Puppeteer, headless: true means modern Chrome Headless, while headless: 'shell' selects the older, separate Headless Shell. Only the former shares Chrome’s modern browser implementation with headful mode. Even then, shared implementation does not guarantee identical results for every site, machine, session, or moment in time.
Make the browser mode explicit, record the exact browser and launch configuration, and compare the two runs under controlled page conditions. That gives you a way to distinguish a mode mismatch from differences in session, timing, viewport, or the rendering environment—without assuming that “headless” itself explains every discrepancy.
What Puppeteer’s three modes actually mean
“Headless” is not one thing across all Puppeteer versions and launch options. Current Puppeteer exposes three relevant choices. Its API reference lists true as the default; setting the value explicitly makes a test easier to interpret and reproduce.
| Puppeteer setting | What launches | How it relates to regular Chrome | Version context |
|---|---|---|---|
headless: true |
Modern Chrome Headless | Uses the unified Chrome implementation also used by headful mode; Chrome creates platform windows without displaying them. | Chrome’s modern Headless mode arrived with the Chrome 112 update. It is the current Puppeteer default. |
headless: false |
Headful Chrome, with visible browser UI | Regular Chrome running with visible windows. | Use this when you specifically need to observe or interact with the visible browser. |
headless: 'shell' |
Legacy Chrome Headless Shell | A separate implementation; it does not completely match regular Chrome. It may be more performant for automation that does not need the complete Chrome feature set. | Puppeteer versions before v22 defaulted to the old mode. Since Chrome 132.0.6793.0, Chrome’s old mode is available only as the standalone chrome-headless-shell. |
Chrome for Developers describes the modern change this way: “Chrome now has unified Headless and headful modes.” That is a statement about the implementation, not a promise that every website will return identical DOM, text, screenshots, or application state in every environment. If a project explicitly selects 'shell', calling the difference merely “headless versus headful” hides a material browser implementation change.
#1 Best Overall
- [INTEL POWERED CONTENT] - Built with a 8th Generation Hexa-Core Intel i5 and 32GB of DDR4 RAM; Modern, Windows 11 ready, with 4K support, Executive multitasking, media streaming and smooth, multi-tab web browsing; Perfect as an all-purpose multimedia computer; built for content creators; Plenty of RAM and Mass storage for photo and video editing powered by Intel HD 630
- [LATEST WIRELESS TECH] - This Dell Desktop Computer easily connects to the internet through the Built In WiFi / Bluetooth
- [SOLID STATE STORAGE] - This Dell Computer setup comes with an ultra-fast 1TB Solid State Drive (SSD); Setup as the primary boot device; Boot and load programs with lightning speed ; Additional expansion available
- [BUY & OWN WITH CONFIDENCE] - From the world's largest Microsoft Authorized Refurbisher; Quality Guarantee and Free Tech Support; Award-winning Customer Service; | Support Sustainable Business
- [MODERN HI-SPEED PORTS] - USB 3.0 (x4) | USB 2.0 (x4) | DisplayPort (x1) | HDMI Port (x1) | Audio Combo Jack (x1) | Audio Out (x1) | RJ-45 Ethernet (x1) | Internal SATA (x3)
Why the same site can still produce different results
First rule out different browser builds and modes. Puppeteer documents the mode options and notes that it is only guaranteed to work with its bundled browser when you specify an executable path. A separately installed Chrome, a pinned older browser, or an explicit Shell selection changes what you are comparing.
After that, compare the conditions of the page itself. A login may not be established in both runs; the application may show different content based on stored state; or one run may inspect the page before it reaches the same readiness point as the other. Viewport, locale, time zone, network conditions, and the exact application data are also useful controls. These are diagnostic variables to hold constant, not universal explanations: official documentation does not rank site-level causes such as bot detection, authentication, network timing, fonts, GPU drivers, or window-manager behavior.
Some apparent content mismatches are really display-condition mismatches. Modern Headless can use a configurable virtual screen independently of physical displays. Chrome documents test cases involving resolution, scaling, fullscreen, split-screen, and multiple displays. Its virtual-screen feature is available in stable releases starting with Chrome 142. Headful Chrome uses physical platform screens, so a test that depends on screen arrangement should not silently assume both runs see the same display setup.
Finally, distinguish page content from its presentation. If the final URL, title, selected DOM text, and application state match but screenshots do not, investigate viewport, device scale, fonts, and rendering environment. A screenshot difference alone does not establish that the page served different content.
Rank #2
- Model: Dell OptiPlex 7050 Small Form Factor (SFF)
- Processor: Intel Core i7-7700 3.60 GHz
- Memory: 32GB DDR4 Ram
- Storage: 1TB Solid State Drive (SSD) Fast Boot + Storage
- Operating System: Windows 11 Pro (64-bit)
Make a controlled headless-versus-headful reproduction
- Record the environment. Capture the Puppeteer version, Chrome version, executable path, operating system, complete launch options, and whether the browser is Puppeteer’s bundled browser or an explicitly selected executable.
- Choose the intended comparison. Compare modern Headless with headful Chrome using
trueandfalse. If the project uses'shell', record that separately rather than treating it as the same modern browser in a different display mode. - Hold page inputs constant. Use the same browser build, profile and authentication state, viewport, locale, time zone, network conditions, and application data. For each run, record the final URL and inspect the DOM at the same application-defined readiness point.
- Compare content before pixels. Check response and final URL, title, selected DOM text, and application state independently of screenshots. Then investigate screenshot-only differences as presentation or display-environment questions.
- Test display assumptions explicitly. If fullscreen, scale, placement, or multiple displays are involved, account for the virtual-screen settings in modern Headless and the physical platform screens in headful Chrome.
Minimal Puppeteer script
Install Puppeteer in a Node.js project with npm install puppeteer, then save this as compare.js. It runs once in modern Headless and once in headful mode, using the same viewport and target. Close the visible browser when prompted by your environment, or end the run after recording its result.
const puppeteer = require('puppeteer');
const url = 'https://example.com';
async function inspect(headless) {
const browser = await puppeteer.launch({ headless });
try {
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
const response = await page.goto(url, { waitUntil: 'networkidle2', timeout: 60000 });
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #3
- IMMERSIVE 24 INCH DISPLAY: Experience stunning clarity on a Full HD IPS screen with ultra-thin bezels, offering a 90% screen-to-body ratio that makes everything from spreadsheets to streaming come alive with vibrant colors and crisp details.
- POWERFUL INTEL PROCESSING: Tackle demanding tasks with ease thanks to the Intel processor and 16GB of high-speed memory, delivering smooth performance whether you're multitasking between applications or running productivity software.
- GENEROUS STORAGE: Store all your important files, photos, and programs with blazing-fast solid state drive technology that ensures quick boot times, rapid file access, and plenty of space for your digital life.
- ENHANCED PRIVACY AND COLLABORATION: Work confidently with the pop-up privacy camera that tucks away when not in use, plus dual microphones with noise reduction for crystal-clear video calls that keep you connected professionally.
- ECO-CONSCIOUS DESIGN: Feel good about your purchase with an EPEAT Gold registered and ENERGY STAR certified computer that combines premium performance with responsible environmental manufacturing practices.
await page.waitForSelector('body', { timeout: 15000 });
const result = await page.evaluate(() => ({
url: location.href,
title: document.title,
text: document.body.innerText.slice(0, 1000)
}));
console.log({ mode: headless ? 'modern-headless' : 'headful', status: response?.status(), ...result });
} finally {
await browser.close();
}
}
(async () => {
await inspect(true);
await inspect(false);
})();
To test the legacy implementation, replace the first call with await inspect('shell') and label that result accordingly. Do not infer that a Shell-versus-headful discrepancy demonstrates a modern Headless-versus-headful discrepancy. The script’s networkidle2 condition is a convenient starting point, not a guarantee that every application has finished rendering; replace it with a selector or other readiness condition meaningful to the site under test.
Use launch options deliberately
- Set
headlessexplicitly. Usetruefor modern Headless,falsefor visible Chrome, or'shell'only when you intend to test the legacy shell. - Check
devtools. Puppeteer’sdevtools: trueoption forces headful mode. Inspect the full launch options, not only whether a window appeared. - Check executable selection. If an
executablePathis set, record it and its browser version. Puppeteer guarantees compatibility with its bundled browser, not every arbitrary executable. - Match the page context. Keep viewport, profile, authentication, locale, time zone, network conditions, and data consistent when isolating a mode variable.
- Use screen controls when relevant. Chrome documents
--screen-infoand dynamic screen changes through DevTools Protocol commands for virtual-screen testing. Stable Chrome support starts at v142.
Troubleshoot by the symptom
Headless shows old or unexpected page content
Print the value of headless, the complete launch options, browser version, and executable path. Look specifically for 'shell', an older Puppeteer project, or an explicit executable that differs from the headful run. Make the intended mode explicit and repeat the comparison with a matching browser build.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesRank #4
- This Certified Refurbished product is tested and certified to look and work like new. The refurbishing process includes functionality testing, basic cleaning, inspection, and repackaging. The product ships with all relevant accessories, a minimum 90-day warranty, and may arrive in a generic box. Only select sellers who maintain a high-performance bar may offer Certified Refurbished products on Amazon.com.
- Dell Optiplex 3050 SFF Desktop computer PC, Intel Quad Core i5-6500 up to 3.6GHz, 16GB DDR4, 256GB SSD
- Includes: USB Keyboard & Mouse, USB WiFi adapter, Microsoft office 30 days free trail.
- Port: Front: USB 3.0(2), USB 2.0(2); Rear: DP, HDMI, USB 3.0(2), USB 2.0(2), RJ-45.
- Support 4K (3840x2160) Dual display, makes it easy to connect two monitors at the same time, and you can expand working Windows, mirror content, or expand a single window across multiple monitors.
The page appears logged out or personalized differently
Confirm both runs use the same profile and authentication state, and that the application data is the same. Record the final URL and inspect relevant DOM text after the application reaches its own readiness condition. Do not treat an unauthenticated result in one run as proof that Headless inherently serves different content.
One run times out or captures an incomplete page
Check whether navigation completed, inspect the response status and final URL, and wait for a site-specific selector or readiness signal before collecting output. A generic network-idle condition can be unsuitable for pages that keep connections open or update asynchronously. Use the same timeout and readiness rule in both modes.
DOM text matches but screenshots differ
Compare viewport dimensions, device scale, fonts, and rendering environment. If the test uses fullscreen, multiple screens, or display scaling, account for virtual screens in modern Headless and physical screens in headful Chrome. Keep screenshot comparison separate from checks of the underlying content.
Only the explicitly selected browser fails
Verify the executable path and browser version, then try Puppeteer’s bundled browser to establish a baseline. Puppeteer’s compatibility guarantee applies to its bundled browser; an external executable is a separate compatibility variable.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Best Value
- Connectivity: Includes WiFi, Bluetooth, and LAN for wireless and wired connections
- Memory: Features 16GB DDR4 RAM for smooth multitasking and performance
- Storage: Combines 500GB SSD and 1TB HDD for ample storage space
- Graphics: Integrated Intel UHD Graphics 630 for crisp visuals and video playback
- Design: Sleek desktop tower with black color and slim profile for modern look
Performance and reliability trade-offs
Modern Headless is the appropriate default when you want Chrome’s unified implementation without displaying its windows. Headful mode is useful when the test specifically concerns visible UI or when observing the browser helps diagnosis. The legacy Headless Shell may be more performant for automation that does not require the complete Chrome feature set, but its behavior does not completely match regular Chrome. That trade-off makes it a deliberate optimization choice, not a drop-in way to make modern Headless equivalent to headful mode.
For reliable comparisons, preserve the browser version and launch configuration alongside the test result. Record whether the run was modern Headless, Shell, or headful; include the final URL and readiness point; and store content checks separately from screenshots. These records make it possible to reproduce a mismatch after a dependency or browser update without attributing the change to an unspecified “headless difference.”
Or skip the browser setup
If your goal is a clean website screenshot rather than diagnosing Puppeteer itself, ScreenshotNeo offers a one-request screenshot API and an MCP server. It accepts cookie or consent banners like a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report the page verdict and billing status. AI agents can use its MCP tools, including take_screenshot, get_page_info, and capture_pdf.
For example, save a WebP capture of a public page with cURL:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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 API documentation for setup and options. One GET request can return PNG, JPEG, WebP, or PDF. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Learn more at ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.
Frequently Asked Questions
Does Puppeteer use modern Headless by default?
The current Puppeteer API reference lists headless: true—modern Headless—as the default. Older projects may have different defaults or explicitly select Headless Shell, so inspect the actual launch configuration.
Can I use a virtual screen in headless Chrome?
Chrome documents configurable virtual screens and DevTools Protocol screen changes for modern Headless. Stable support for that feature begins with Chrome 142.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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.




