How to Screenshot a Website with Lazy Loading Disabled in Chrome
Chrome has no universal switch for disabling lazy loading. Trigger deferred content by scrolling, inspect when it loads, then capture the page.
Chrome does not provide a universal switch that disables every website’s lazy-loading behavior. To include deferred images or content in a screenshot, trigger the page’s own loading behavior—usually by scrolling the content into view—wait for it to appear, and then capture the page. For repeatable captures, Headless Chrome can take a screenshot after a configured delay, but a delay alone cannot guarantee that every deferred item has loaded.
1. Load the content before capturing
- Open the page in Chrome and let its initial content finish loading.
- Scroll down through the sections you want in the screenshot. Pause when needed so images or other content can load after entering the viewport.
- For an infinite-scroll page, continue scrolling to trigger more content until the endpoint you want is present. Decide where to stop: an infinite feed may have no natural final page.
- Review the page and wait for visible loading indicators or placeholders to resolve.
- Capture the page using Chrome DevTools or Headless Chrome, as described below.
This workflow is a practical inference from how viewport-triggered loading works, not a guarantee for every website. A site might require a different interaction or wait, and there is no single scroll sequence that works everywhere.
2. Diagnose loading in Chrome DevTools
Use the Network panel’s screenshot capture to see how the page changed during a reload. This helps identify when content appeared; it is a diagnostic timeline, not a lazy-loading off switch.
- Open DevTools and select the Network panel.
- Open Network panel settings and enable Capture screenshots.
- Keep the Network panel focused and reload the page.
- Inspect the screenshot frames alongside network activity to see what was visible at different points in the load timeline.
- If content appears only after you scroll, return to the page, trigger the relevant areas, and capture again.
Chrome’s Disable cache setting disables the browser cache to emulate a first-time visit; it does not disable lazy loading. Disabling JavaScript is also not a general fix: sites may use JavaScript libraries or IntersectionObserver to load content, and turning JavaScript off can prevent that content—or other page behavior—from working. Chrome DevTools Network documentation explains the Network panel controls and screenshot capture.
3. Capture interactively or from the command line
Interactive DevTools capture
After triggering the content you need, use the screenshot capture command available in your installed Chrome DevTools version. DevTools is useful when you need to scroll manually, inspect the page, and decide when the desired content is ready. The exact command and interface can vary by Chrome version, so use the available DevTools screenshot command rather than assuming one fixed menu path.
Headless Chrome
For a repeatable command-line capture, Chrome documents this example:
chrome --headless=new --screenshot --window-size=412,892 https://example.com/
Replace the URL with the page you need. The example viewport is illustrative, not a universal recommended size. Headless Chrome can also wait before capturing:
chrome --headless=new --screenshot --window-size=1365,900 --timeout=5000 https://example.com/
--timeout takes a delay in milliseconds before screenshot capture. Without a timeout or virtual-time budget, capture occurs as soon as the page is loaded. The delay can help with asynchronous rendering, but it does not scroll through the page, prove that lazy-loaded content has appeared, or guarantee that a site-specific trigger has run. If content loads only when it enters the viewport, first use a workflow that triggers it; a fixed delay is not a substitute.
See Chrome Headless documentation for the documented screenshot, viewport, and timeout options.
4. Choose the capture workflow
| Workflow | Useful for | Timing control | Limitation |
|---|---|---|---|
| DevTools Network screenshots | Diagnosing which visual state appeared during reload | Frames aligned with the load timeline | Shows states; it does not trigger every lazy loader |
| Interactive DevTools capture | Pages that need manual scrolling or inspection | You decide when to capture | Requires the page’s own loading behavior to be triggered |
| Headless Chrome | Repeatable command-line screenshots | Viewport size and optional fixed timeout | A delay alone cannot load content that needs scrolling or another trigger |
5. Troubleshoot missing content
| Symptom | Likely cause | What to try |
|---|---|---|
| Images below the fold are missing | The page loads them only when they approach or enter the viewport | Scroll through the required areas, pause for loading, and recapture. |
| More content appears as you scroll, but the screenshot ends early | The site uses infinite scroll and more items were not triggered before capture | Scroll until the intended endpoint is present. Record that endpoint for repeat captures. |
| A longer Headless timeout changes nothing | The missing content may need a viewport trigger or interaction, rather than more elapsed time | Trigger the page’s normal behavior. Use DevTools Network screenshots to inspect when content appears. |
| The page looks different with cache disabled | Disabling cache changes caching conditions; it is not a lazy-loading control | Use it only when you specifically need to emulate a first-time visit. Trigger deferred content separately. |
| Content disappears or the page breaks with JavaScript disabled | The page may rely on JavaScript for its interface or lazy-loading implementation | Enable JavaScript and reload, then trigger the content normally. |
| A fixed wait produces inconsistent results | Network and page behavior can vary, and a timeout does not confirm that each item is ready | Inspect the load timeline, allow the relevant content to appear, and adjust site-specific timing or interaction. |
6. Reliability and performance notes
- Do not assume one delay fits every page. Rendering and network activity vary. A timeout is a timing control, not a completion check.
- Set an endpoint for infinite scroll. Otherwise, the page may keep fetching more content as you scroll, and there may be no single finite full-page state.
- Separate loading from capture. First make the required content appear, then capture. This makes it easier to tell whether the failure came from the page’s loading behavior or the screenshot timing.
- Use Network screenshots to investigate, not as proof of completeness. They reveal visual states during loading, but the desired content may still require scrolling or another site-specific trigger.
- Expect site-specific behavior. Lazy loading can be built into the browser or implemented using JavaScript, IntersectionObserver, or a library. The correct trigger depends on the page.
Or skip the browser setup
If you need a screenshot in code without managing a Chrome capture workflow, ScreenshotNeo provides a website screenshot API. One GET request returns an image or PDF. Its capture flow can accept cookie and consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response reports the page verdict and billing status in headers. ScreenshotNeo also has an MCP server with screenshot, page-info, and PDF tools for AI agents. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. See the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Sign up for 1,000 free screenshots a month, with no card required.
FAQ
Does Chrome have a switch to turn off all lazy loading?
The reviewed Chrome documentation does not describe a universal switch for every site’s lazy-loading implementation. Trigger the content through the page’s behavior, then capture it.
Will a full-page screenshot automatically load every item on an infinite-scroll page?
Do not assume so. Continue triggering content until the specific endpoint you want is visible before capture.
Should I disable JavaScript or cache to make lazy-loaded content appear?
No. Those settings change JavaScript or caching conditions; neither is documented as a general lazy-loading off switch.


