ScreenshotNeo

BlogHow-to

How to Capture Long Screenshots with a Browser Extension

Capture an entire webpage beyond the viewport with a browser extension, fix common failures, and learn when an API is a better fit.

By the ScreenshotNeo team1 October 20268 min read

Direct answer: A browser extension captures a long, full-page, or scrolling screenshot by moving through the page and stitching the content beyond your current viewport into an image or PDF. Open the page, invoke a full-page capture extension such as GoFullPage, wait for it to finish scrolling and processing, then export the result as PNG, JPG, or PDF. For a page with a custom scroll container, select the scrolling region if the extension supports it.

This guide covers installation, reliable capture steps, formats, permissions, custom scrolling areas, very large pages, troubleshooting, and when an automated screenshot API is a better choice.

What a long screenshot captures

A normal screenshot records only the visible viewport. A long screenshot records content below and above that viewport by capturing the page in sections as the browser scrolls. The final output is usually one tall image or a paginated PDF.

Term Meaning Typical output
Long screenshot A tall image containing content beyond the current viewport. PNG, JPG, or WebP depending on the tool
Full-page screenshot A capture of the document from the top to the bottom of the page. One image, several images, or PDF
Scrolling screenshot A capture made while the browser or an extension scrolls through content. Image or PDF

Choose an extension

Install extensions from the browser’s official extension store and verify the extension name and developer before granting access. GoFullPage advertises full-page capture with image and PDF export. FireShot advertises capture of scrolling areas plus editing and annotation features. These are listing claims; the best choice depends on whether you need the whole document, a particular scrollable region, or post-capture editing.

Need What to look for
Entire document Full-page or scrolling capture
A panel inside a page Capture of a selected scrolling area or element
PNG/JPG/PDF Export formats listed by the extension
Markup or annotations Built-in editor, cropping, highlighting, or redaction
Firefox support A Firefox Add-ons listing and documented shortcut

Step-by-step: capture a full webpage

  1. Install from the official store. Search for the extension, confirm its developer identity, read the permissions, and install it.
  2. Open the target page. Wait for the page to finish loading. If it has lazy-loaded images, scroll through it once first when practical.
  3. Pin the extension. Pinning its toolbar icon makes it easier to invoke on future pages.
  4. Start capture. Click the extension icon. GoFullPage’s Firefox listing also documents Alt+Shift+P.
  5. Leave the tab alone. The extension may scroll from the top to the bottom and process each section. Do not navigate away or close the tab while it runs.
  6. Review the result. Check the top, bottom, sticky headers, lazy images, and any fixed overlays for duplication or missing content.
  7. Export in the required format. Use PNG or JPG for visual sharing. Use PDF when the result will be printed or attached to a document.

Capture a scrolling region inside a page

Many applications place content inside a nested element with its own scrollbar. Examples include dashboards, chat histories, code panes, and modal dialogs. A normal full-page capture may record only the outer document and omit the hidden portion of that inner region.

  1. Put the cursor over the scrollable panel and identify which scrollbar moves the content.
  2. Use the extension’s scrolling-area or selected-region mode if it provides one.
  3. Capture a short test first and confirm that the panel’s top and bottom are present.
  4. If the extension cannot target the panel, temporarily expand the panel with browser developer tools or use a page-specific capture method.

Do not assume that a page’s visible height equals the height of every nested scrolling element. The document can be short while a child panel contains thousands of pixels of content.

Pick image or PDF

Format Best for Trade-offs
PNG Sharp text, diagrams, and archival screenshots Large files on very tall pages
JPG Smaller photographic or web previews Compression can blur small text
PDF Printing, review, and sharing as pages Pagination can change the visual flow

A single image is convenient for visual comparison but can become difficult to view when it is extremely tall. A paginated PDF is often easier to print and annotate. Some extensions can split unusually large captures into multiple images, particularly on high pixel-density displays.

Permissions and privacy checklist

  • Review whether the extension can read or modify data on the sites you visit.
  • Install only from the browser’s official store and verify the developer.
  • Do not capture passwords, private customer data, payment details, or confidential dashboards unless your policy permits it.
  • Check where the extension processes and stores captures before using it for sensitive pages.
  • Remove the extension when it is no longer needed.

Why captures fail or look wrong

Browser capture is constrained by the page’s layout and the browser’s rendering environment. Treat a failed or imperfect result as a page-specific limitation rather than assuming every site will produce one clean file.

Symptom Likely cause Fix
Only the visible viewport is captured Full-page mode was not selected, or the content is inside a nested scroller. Choose full-page mode or capture the scrolling region.
Bottom sections are missing Lazy loading, an interrupted scroll, or a page that changes while capture runs. Let the page settle, scroll through it once, then retry.
Repeated sticky header or footer A fixed element appears in every captured section. Hide or temporarily disable the fixed element, or crop the duplicate after export.
Blank or black sections Content is rendered in a protected viewer, canvas, iframe, or after a delayed script. Wait for the content, try the page’s own export, or use an API that can wait for a selector or delay.
PDF viewer is not captured Browser extensions generally cannot access PDF documents in the usual webpage way. Download the PDF directly or use a PDF-specific workflow.
Custom scrolling breaks capture The site controls scrolling with JavaScript instead of normal document scrolling. Target the inner scrolling area, disable the custom mode if possible, or use a capture API with element selection.
Capture is split into several files The page is very large, or high device pixel density exceeds practical image limits. Accept the split, reduce scale if supported, or export a PDF.
Images are missing Images load only when near the viewport, or network requests were still pending. Scroll through once, wait for images, and capture again.
Extension shortcut does nothing The shortcut conflicts with another command or the extension lacks access to the tab. Invoke the toolbar icon, inspect permissions, and change the browser shortcut if available.

Make captures more reliable

  1. Use a stable page state: finish login, dismiss transient dialogs, and wait for asynchronous content.
  2. Set the browser viewport and zoom consistently when comparing screenshots.
  3. Disable animations or wait until transitions finish when the extension supports neither automatically.
  4. Capture after lazy-loaded images have appeared.
  5. Keep the tab in the foreground while the extension scrolls.
  6. Review the result at both the top and bottom before sharing it.
  7. For repeatable builds, use an automated API rather than relying on a person’s browser state.

Performance, reliability, and cost considerations

Capture time increases with page height, image count, JavaScript activity, and the number of sections the extension must process. A long page can also consume substantial memory because the extension holds intermediate images before producing the final file.

  • Performance: Close unrelated tabs, avoid running several captures at once, and reduce the browser’s zoom or device scale only when small text remains readable.
  • Reliability: Dynamic pages can change between sections, causing duplicated, shifted, or missing content. Repeat the capture after the page settles.
  • File size: PNG preserves text but can be large. JPG reduces size with possible quality loss. PDF changes the layout into pages.
  • Repeatability: A manual extension depends on the current browser, cookies, viewport, extensions, and login state. An API can make these settings explicit and scriptable.
  • Cost: Browser extensions may be free or have their own paid features. Check the current official store listing before selecting one for a team workflow.

Or skip the browser setup

ScreenshotNeo provides a website screenshot API for automated captures. One GET request returns a PNG, JPEG, WebP, or PDF. It can capture a full page, wait for a selector, delay, or network idle, load lazy images, select an element by CSS selector, set a viewport or device preset, use dark mode and retina scale, click an element, hide selectors, and control headers, cookies, user agent, authorization, timezone, and geolocation. See the ScreenshotNeo API documentation for the complete option list.

It also removes cookie and consent banners, newsletter popups, and chat widgets before capture. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed; response headers identify the page verdict and whether the request was billed. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

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,
)
r.raise_for_status()
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}`);
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 has a free tier of 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 screenshots; yearly billing gives two months free, and every feature is available on every plan. Create a free ScreenshotNeo account.

Browser extension or API?

Use a browser extension when… Use ScreenshotNeo when…
You need a one-off capture while viewing a page. You need repeatable captures in code or CI.
You need to inspect and annotate the result manually. You need controlled headers, cookies, user agent, viewport, or geolocation.
The page is public and works with normal browser scrolling. You need full-page, element, PDF, bulk, async, caching, or signed-link workflows.
You accept results tied to one browser session. You want verdict and billing headers and failed captures that cost nothing.

FAQ

Is a long screenshot the same as a full-page screenshot?

Usually. Both describe capturing content outside the current viewport; “scrolling screenshot” emphasizes the process used to reach that content.

Can I capture a page that requires scrolling inside a panel?

Sometimes. Use an extension mode for a scrolling area when available. Full-page mode alone may not enter a nested scroll container.

Why is my screenshot split into multiple images?

Very large pages and high pixel-density displays can exceed practical image dimensions. Some extensions split the result instead of producing one file.

Should I choose PNG or PDF?

Choose PNG for sharp visual inspection and PDF for printing or paginated review. JPG is useful when a smaller image matters more than lossless text.

Can a browser extension capture a PDF opened in the browser?

Not reliably through the normal webpage capture path. Download the PDF or use a PDF-specific tool.

What is the simplest automated alternative?

Use ScreenshotNeo’s GET endpoint with a URL and access key. It returns an image or PDF and supports the controls needed for repeatable captures.