BlogScreenshots on your device
Full-Page Scrolling Screenshot in Firefox
Capture an entire scrolling webpage in Firefox using the built-in tool, DevTools, or a repeatable Web Console command.
Firefox can capture an entire scrolling webpage without an extension or manual scrolling. Open the page, choose Take Screenshot, then select Save full page. Use Save visible when you only need the current viewport.
Quick steps: capture the whole page
- Open the webpage in Firefox and let its content finish loading.
- Right-click an empty area of the page and choose Take Screenshot. You can also press Ctrl+Shift+S on Windows or Linux, or Command+Shift+S on macOS.
- Choose Save full page in the capture controls.
- Save the image, or use the copy action when Firefox shows it.
Firefox’s built-in screenshot tool also offers Save visible, a draggable custom region, and automatic selection of a highlighted page part. Mozilla Support documents the feature as a way to capture visible or full web pages.
Choose the right capture scope
| Need | Firefox option | Result |
|---|---|---|
| Entire document | Save full page | A single image containing content beyond the viewport |
| Current screen | Save visible | Only the pixels currently visible in the browser window |
| A specific area | Drag a custom region | Only the rectangle you select |
| A detected section | Click an automatically highlighted page part | The selected page part and its contents |
| One DOM element | Inspector → Screenshot Node | The selected node and its descendants |
Use Developer Tools for a complete page
Firefox Developer Tools includes a screenshot button that can save the entire page. This is useful when you already have DevTools open or need to capture a specific element.
- Open Developer Tools.
- Open DevTools Settings.
- Under Available Toolbox Buttons, enable Take a screenshot of the entire page.
- Click the new screenshot button. Firefox saves the image in the browser’s Downloads directory.
To capture one element, open the Inspector, right-click the element in the HTML pane, and choose Screenshot Node. The result includes that node and its descendants.
Repeatable captures with the Web Console
For a named file or an automated developer workflow, run Firefox’s screenshot helper in the Web Console:
screenshot full-page.png --fullpage
The command captures content outside the current window bounds. Useful options include:
--filenamesets the output name.--fileforces saving to a file when another output option is also used.--delaywaits a specified number of seconds before capture, which helps with menus, hover states, and late-rendering content.--dprsets device-pixel ratio. Values above 1 produce a denser, more zoomed-in image; values below 1 produce a more zoomed-out image.--selectorcaptures one element selected by CSS selector.
Examples:
// Entire page after a short delay
screenshot report.png --fullpage --delay 2
// Capture one CSS-selected element
screenshot pricing-table.png --selector ".pricing-table"
// Set a higher device-pixel ratio
screenshot retina-page.png --fullpage --dpr 2
Use the Web Console form when you need the same command and filename repeatedly. The context-menu tool is faster for a one-off capture.
Before you capture: make the page stable
- Wait for fonts, images, and client-rendered sections to finish loading.
- Dismiss overlays that obscure content if they are not part of the screenshot.
- Pause carousels, videos, and animated counters when a consistent frame matters.
- For lazy-loaded images, scroll through the page first if the page only loads media after it enters the viewport.
- Record the browser zoom and device-pixel-ratio settings when screenshots must be compared over time.
Firefox’s documentation does not promise identical behavior for every page architecture. Nested independently scrolling containers, infinite-scroll feeds, cross-origin frames, lazy loading, and rapidly changing animations can require page-specific preparation. Verify the resulting image rather than assuming every scroll context was included.
Common problems and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| The screenshot contains only the viewport | Save visible was selected | Open Take Screenshot again and choose Save full page, or run --fullpage in the Web Console. |
| A late section is blank | Content or a lazy-loaded image was not ready | Wait longer, scroll through the page once, then capture again. The console command’s --delay can help. |
| A cookie dialog or chat bubble covers content | An overlay is still active | Close it before capture, or use a capture service that handles common consent and widget overlays. |
| The page keeps changing between captures | Animations, ads, timestamps, or live data | Pause animation where possible, block changing content, and use a fixed delay before capture. |
| An embedded frame is missing | Cross-origin or independently rendered content | Capture the frame’s source page separately when permitted, and verify access and loading state. |
| An infinite feed never reaches an end | There is no finite document height | Capture a defined region or element, or stop loading the feed at a known point before taking the screenshot. |
| The output is too large or blurry | Very tall page or unsuitable DPR | Capture a meaningful element or region, or adjust --dpr. Check the image dimensions before publishing it. |
| The console command is rejected | It was entered outside Firefox’s Web Console or the syntax is incomplete | Open Developer Tools → Web Console and use screenshot name.png --fullpage. |
Performance, reliability, and file size
A full-page image contains every captured pixel, so very long pages can take longer to render, consume more memory, and produce large files. A lower DPR reduces dimensions and file size; a higher DPR preserves more detail but increases both. If you only need a chart, article body, or pricing table, a selector or Screenshot Node capture is usually more efficient than an entire document.
For repeatable work, keep the URL, viewport, zoom, DPR, delay, and page state consistent. Save a copy of the source URL and capture time with the image so a later mismatch can be diagnosed. Always inspect the top, middle, and bottom of a long result for clipped sections, missing lazy content, and duplicated fixed-position headers.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API when you need captures from code or a server. One GET request returns PNG, JPEG, WebP, or PDF. Its capture flow accepts common cookie and consent banners before removing more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing result.
See the ScreenshotNeo API documentation for all options, including full-page capture with lazy images loaded, selectors, custom CSS and JavaScript, waits, device presets, viewport and retina scale, headers, cookies, user agents, blocking rules, caching, asynchronous jobs, bulk capture, PDFs, and signed links.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://example.com \
-o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo also has an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
FAQ
Can Firefox take a full-page screenshot without an extension?
Yes. The built-in Take Screenshot action includes Save full page.
What is the shortcut?
Use Ctrl+Shift+S on Windows or Linux, and Command+Shift+S on macOS.
Can I capture only one element?
Yes. Use automatic page-part selection, the Inspector’s Screenshot Node command, or the Web Console’s --selector option.
Does full-page mode capture an infinite-scroll feed?
There is no guaranteed endpoint for an infinite feed. Stop it at a defined point or capture a finite element or region.
When should I use a command instead of the capture menu?
Use the Web Console command when you need a repeatable filename, delay, DPR, or CSS selector. Use the menu for a quick manual capture.


