To screenshot one complete webpage, use Firefox’s Take Screenshot → Save full page, or run browser automation with Playwright’s fullPage: true. To capture every URL on a website, first discover the URLs, then place them in a controlled queue with authentication, waits, rate limits and predictable filenames. A full-page option captures one scrollable document; it does not crawl an entire site by itself.
Decide what “all pages” means
People use this phrase for two different jobs:
- One long page: capture the entire scrollable document, including content below the fold.
- Every page in a site: discover or supply many URLs, then capture each URL independently.
These jobs have different failure modes. A full-page screenshot cannot reveal URLs that your crawler never found, and a site crawl cannot guarantee that a JavaScript application rendered every lazy section before capture.
Fastest one-off method: Firefox full-page capture
- Open the page in Firefox and wait for its visible content to finish loading.
- Right-click the page and choose Take Screenshot.
- Choose Save full page, review the preview, and save the image.
If the command is missing, open Developer Tools, open the toolbox-button settings, and enable the option described as Take a screenshot of the entire page. Firefox’s menu labels can vary by version and interface, so the DevTools setting is the reliable fallback.
This method needs no project setup and is suitable for a small number of pages. It does not provide a batch queue, URL discovery, repeatable waits, authenticated-session management or a naming convention.
#1 Best Overall
- 16MP Sensor: Captures detailed photos with a CMOS sensor for everyday shooting
- Optical Zoom: 4x optical zoom with a 27mm wide angle lens for flexible framing indoors or outdoors
- Full HD Video: Records 1080p video for travel clips, family moments, or simple vlogging
- Memory Support: Works with Class 10 SD, SDHC, or SDXC cards up to 512GB
- LCD Screen and Battery: 2.7in LCD screen with 2 AA alkaline batteries for convenient on-the-go use
Automate a complete page with Playwright
Playwright defines a full-page screenshot as the complete scrollable page, as if the document were displayed on a very tall screen. Install Playwright in a project, install its browser binaries, then use a script like this:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage({
viewport: { width: 1440, height: 900 },
deviceScaleFactor: 1
});
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({
path: 'example-com-full.png',
fullPage: true,
type: 'png',
scale: 'css'
});
await browser.close();
waitUntil: 'networkidle' is useful for pages that make a finite set of requests, but it is not a universal “ready” signal. Prefer a page-specific selector when you know which component proves that the content is ready:
await page.goto('https://example.com/article');
await page.locator('article').waitFor();
await page.screenshot({ path: 'article.png', fullPage: true });
Playwright CLI
For a quick scripted capture, the CLI supports a full-scrollable-page flag and PNG, JPEG or WebP output:
playwright-cli screenshot --full-page --filename=full-page.png https://example.com
An optional high-resolution device-pixel capture is available with the CLI’s --hires option. In the API, scale: 'css' produces one pixel per CSS pixel; scale: 'device' uses device pixels and can create a much larger image.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #2
- 16MP Sensor: Captures detailed photos with a CMOS sensor for everyday shooting
- Optical Zoom: 5x optical zoom with a 28mm wide angle lens for flexible framing indoors or outdoors
- Full HD Video: Records 1080p video for travel clips, family moments, or simple vlogging
- Memory Support: Works with Class 10 SD, SDHC, or SDXC cards up to 512GB
- LCD Screen and Battery: 2.7in LCD screen and a rechargeable lithium-ion battery for on-the-go use
Capture every URL in a website
A whole-site job needs four separate parts: URL discovery, a queue, page readiness and output management. For a small, known set of URLs, skip crawling and put the URLs directly in an array. For a larger site, obtain canonical links from a sitemap, your CMS export or a carefully scoped crawler. Respect the site’s access rules and keep the crawl on the hostnames you intend to archive.
A practical batch script
import { chromium } from 'playwright';
import fs from 'node:fs/promises';
const urls = [
'https://example.com/',
'https://example.com/about',
'https://example.com/docs/getting-started'
];
const browser = await chromium.launch();
const context = await browser.newContext({
viewport: { width: 1440, height: 900 },
deviceScaleFactor: 1
});
for (const [index, url] of urls.entries()) {
const page = await context.newPage();
try {
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
await page.waitForLoadState('networkidle', { timeout: 15000 }).catch(() => {});
await page.screenshot({
path: `shots/${String(index + 1).padStart(4, '0')}.webp`,
fullPage: true,
type: 'webp',
quality: 85,
scale: 'css'
});
console.log(`captured ${url}`);
} catch (error) {
console.error(`failed ${url}: ${error.message}`);
} finally {
await page.close();
}
}
await browser.close();
Create the shots directory before running the script. In production, derive each filename from a normalized URL slug and include the viewport, capture date and authenticated/public state. Keep a manifest containing the URL, timestamp, HTTP outcome and screenshot filename so a failed run can be resumed without recapturing successful pages.
Preventing an accidental crawl explosion
- Normalize URLs and remove tracking parameters before deduplication.
- Restrict navigation to approved hostnames.
- Set a maximum URL count, depth and concurrency.
- Use a delay or small worker pool rather than opening hundreds of tabs at once.
- Honor authentication boundaries and do not follow logout, destructive or form-submission links.
When the full-page image is incomplete
Lazy-loaded images
Some images load only after they approach the viewport. A full-page call may capture the document before those assets are requested. Scroll through the page first, or trigger the page’s lazy-loading mechanism, then capture:
await page.goto(url, { waitUntil: 'domcontentloaded' });
await page.evaluate(async () => {
await new Promise(resolve => {
let last = 0;
const timer = setInterval(() => {
window.scrollBy(0, 800);
const now = document.documentElement.scrollTop;
if (now === last) { clearInterval(timer); resolve(); }
last = now;
}, 150);
});
window.scrollTo(0, 0);
});
await page.screenshot({ path: 'lazy-loaded.png', fullPage: true });
Inspect the resulting image rather than assuming that a flag guarantees every asset.
Recommended Free Tools
Rank #3
- Latest Digital Camera Built-in Fill Light : This compact digital camera is paired with a powerful CMOS processor and image stabilization to help you take & record the most exciting moments in 44 MP quality images & FHD 1080P quality videos anywhere, anytime. Plus, there is also a built-in fill light to help you take high quality pictures even in low light&dark settings, making this the perfect camera for all indoors/outdoors situations.
- Long-Lasting Battery Life & 16X Digital Zoom :This point and shoot camera will retain its battery charge even after long use. The controls and functions are easy to operate making this the perfect choice for children, teens and younger. This kids camera supports 16x digital zoom, you can zoom in or out the subject by pressing the W/T button for taking still photos to zoom in or out on distant objects and capture all the details you need.
- Multifunctional & Portable Digital Camera: This cheap digital camera is slim enough to fit in your pocket. You'll easily be able to take it with you on all your indoor/outdoor activities and adventures and ideal for beginners, children and teenagers. This kids digital camera is equipped with 20 filters, anti-shaking, self-timer, continuous shooting, date stamp, time-lapse recording, smile capture, internal MIC and speaker (recording sound videos), great for your daily photography needs.
- WEBCAM & PAUSE FUNCTION : More than just a FHD 1080p digital camera, it also works as a webcam for video calls and vlogging. Connect the camera to the computer, press shutter and power button at the same time and the camera will automatically turn on webcam mode for all your video calling and live streaming needs. The pause function allows you to pause when seeing playback videos.
- A Must Have Photography Device : This digital camera with SD card made from high-quality materials, this retro camera is safe and durable. Perfect for all ages to develop & improve their photographic abilities and observation skills. Our dedicated and experienced 24/7 support team is available for all after purchase troubleshooting, questions and technical help.
Infinite scroll and virtualized lists
Infinite-scroll pages append content only after repeated scrolling. Virtualized lists may render only the visible rows and remove earlier rows from the DOM. A single screenshot can therefore omit data. Capture controlled segments, disable virtualization if the application supports it, or export the underlying data instead of treating one bitmap as a complete record.
Nested scroll containers
fullPage targets the main document. If the content is inside an element with its own scrollbar, capture that element or take section screenshots:
await page.locator('.results-panel').screenshot({ path: 'results-panel.png' });
Sticky headers, banners and animations
Fixed headers can repeat over the image, while cookie banners, chat widgets and animated elements can obscure content. In a controlled test context, hide known selectors or inject CSS to pause animation. Record those changes because the result is no longer an untouched visitor view.
Authentication, consent and regional pages
Login-protected pages require the correct session before navigation. Playwright can reuse an authenticated browser context, but treat saved state files as secrets. Consent dialogs and regional routing can change what is rendered; set the intended cookies, headers, locale, timezone and viewport before capture. Verify that the screenshot shows the expected account and region rather than a login, consent or location-selection screen.
Choose an output format and scale
| Choice | Use it when | Trade-off |
|---|---|---|
| PNG | Text clarity, lossless archival or transparent pixels | Large files |
| JPEG | Photographic pages and smaller files | Lossy compression; no transparency |
| WebP | Modern web delivery with good compression | Some older tools may not accept it |
| CSS scale | Predictable one-pixel-per-CSS-pixel output | Less dense than device-pixel output |
| Device scale | High-DPI review or print workflows | Much larger dimensions and files |
Very tall bitmaps become awkward to open, transmit and compare. For long documentation, capture logical sections or produce a PDF/HTML archive as well as the image.
Rank #4
- 16MP Sensor: Captures detailed photos with a CMOS sensor for everyday shooting
- Optical Zoom: 5x optical zoom with a 28mm wide angle lens for flexible framing indoors or outdoors
- Full HD Video: Records 1080p video for travel clips, family moments, or simple vlogging
- Memory Support: Works with Class 10 SD, SDHC, or SDXC cards up to 512GB
- LCD Screen and Battery: 2.7in LCD screen and a rechargeable lithium-ion battery for on-the-go use
Common failures and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Blank or partly blank image | Navigation timed out, a bot check appeared or content was not rendered | Save a trace or HTML snapshot, wait for a readiness selector, and verify the page manually before retrying. |
| Images missing below the fold | Lazy loading | Scroll or trigger loading, then capture after network and image activity settles. |
| Only visible rows appear | Virtualized list | Capture segments or use a data export. |
| Repeated header or blocked text | Sticky UI or overlay | Hide the selector in a controlled context or capture the affected sections separately. |
| Login page instead of content | Expired or missing session | Refresh authenticated storage state and confirm the account before batch capture. |
| Out-of-memory or huge files | Extremely tall page or device-pixel scale | Use CSS scale, WebP/JPEG, section captures or a PDF. |
| Inconsistent reruns | Animations, ads, changing data or different viewport | Freeze animation, block unnecessary resources, fix viewport/timezone and store capture metadata. |
Or skip the browser setup
ScreenshotNeo provides a hosted website screenshot API and MCP server. One GET request returns PNG, JPEG, WebP or PDF. It accepts consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each step can be disabled. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.
Use the API documentation at https://screenshotneo.com/docs/ for all options, including full-page capture with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, PDF paper settings and page ranges, custom CSS and JavaScript, clicks, selector/delay/network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting and the OpenAPI specification.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
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}`);
The free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients. Create a free ScreenshotNeo account to start.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Frequently Asked Questions
Can a full-page screenshot capture a whole website?
No. It captures one scrollable document. A whole-site archive requires URL discovery and a separate capture for each URL.
Should I use PNG, JPEG or WebP?
Use PNG for lossless text or transparency, JPEG for photographic pages and WebP for compact modern delivery.
Why is my screenshot missing content that appears when I scroll?
The page may lazy-load assets, use infinite scrolling or virtualize rows. Trigger loading and inspect the result, or capture controlled sections.
How do I reproduce the same screenshot later?
Fix the URL, viewport, scale, locale, timezone, authentication state and waits; stabilize animations and record those settings with the file.
Windows 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 reinstallCrashes, 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 minuteQuick 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.




