ScreenshotNeo

BlogHow-to

How to Take a Screenshot of a Long Webpage on Mac

Capture an entire long webpage on Mac with Firefox or Chrome, choose the right output, fix common issues, and automate screenshots with ScreenshotNeo.

By the ScreenshotNeo team1 October 20266 min read

Use a browser’s full-page capture tool. A normal Mac screenshot captures the visible screen, a selected area, or a window; it does not automatically scroll through a long webpage. For a single tall image, Firefox has a built-in Save full page command, and Chrome provides a full-page screenshot through DevTools. Safari’s documented alternatives save a Web Archive, page source, or a PDF rather than one tall screenshot image.

Choose the result you need first:

Goal Best Mac option Output
One image containing the whole page Firefox Save full page or Chrome DevTools Image file
Keep a browsable copy Safari File > Save As Web Archive
Share or print the page Safari or Mail PDF workflow PDF
Capture only what is visible macOS Screenshot shortcuts PNG, HEIF, or another configured format

Firefox: save a full-page screenshot

Firefox is the most direct built-in workflow for a long webpage.

  1. Open the webpage in Firefox and wait for the content you need to appear.
  2. Right-click an empty area of the page. On a Mac, you can Control-click.
  3. Select Take Screenshot. You can also use Command-Shift-S.
  4. Choose Save full page.
  5. Download the image or copy it, then inspect the saved file from top to bottom.

Mozilla documents this workflow in its Firefox screenshot instructions. Firefox’s Developer Tools also provide a screenshot button and a Web Console command such as :screenshot --fullpage; the DevTools documentation explains how to enable and use that toolbar control.

When Firefox captures an incomplete page

  • Scroll through the page once before capturing so lazy-loaded sections have a chance to load.
  • Wait for animated banners, cookie dialogs, and embedded media to settle.
  • Close overlays that cover content unless you specifically need them in the image.
  • Check the resulting image for repeated sticky headers, missing images, or clipped sections.

Chrome: capture the full page with DevTools

Chrome for Developers lists full-page screenshots as a DevTools capture technique. Menu names and placement can change between Chrome versions, so use the current DevTools interface when following these steps.

  1. Open the page in Chrome.
  2. Open DevTools with Option-Command-I, or use Chrome’s View or More Tools menus.
  3. Open the DevTools command menu and search for the full-page screenshot capture command.
  4. Run the full-page capture command and save the resulting image.
  5. Inspect the image for lazy content, fixed elements, and sections that require interaction.

Chrome’s official overview is 4 ways to capture screenshots with DevTools. Because the exact controls can vary, verify the labels in your installed version rather than relying on an old keyboard shortcut.

What the standard Mac screenshot shortcuts actually capture

Apple’s screenshot tools are useful for the visible desktop, but they are not documented as scrolling-page capture tools:

  • Shift-Command-3: captures the entire screen.
  • Shift-Command-4: lets you select a rectangular area.
  • Shift-Command-4, then Space: captures a window or menu.
  • Shift-Command-5: opens the Screenshot app on macOS Mojave 10.14 and later, with timer and save-location options.

Apple says screenshots normally go to the desktop, and Screenshot options can change the destination. On supported Macs running macOS Tahoe 26 or later, Apple documents SDR/PNG and HDR/HEIF choices. See Apple’s Mac screenshot instructions for version-specific details.

Safari alternatives: Web Archive, source, or PDF

Safari’s documented File > Save As choices are Web Archive and Page Source. A Web Archive keeps page resources and links can continue working while the destination pages remain available; Page Source saves the HTML source only. Some sites can prevent saving displayed content. These are saved-page workflows, not promises of a single tall image. Apple’s guide is Save part or all of a webpage in Safari on Mac.

If the real requirement is a document for sharing or printing, Safari’s Mail integration can offer webpage, PDF, link, or Reader article formats when you share a page. See Apple’s Safari sharing guide.

How to choose the right output

  • Use a full-page image for visual review, design comparison, documentation, or a single image upload.
  • Use a Web Archive when you need a local, browsable copy with page resources.
  • Use Page Source when the HTML itself is the artifact you need.
  • Use PDF for printing, annotation, or a document that should paginate.

Preparing a long page for a clean capture

  1. Wait for loading: allow fonts, images, charts, and client-rendered sections to finish.
  2. Handle consent banners: accept or dismiss the banner if it obscures the page.
  3. Load lazy content: scroll through the document once when important sections appear only near the viewport.
  4. Set a stable viewport: maximize the browser or choose a consistent window size when comparing captures.
  5. Pause motion: carousels, videos, blinking promotions, and animated ads can create inconsistent results.
  6. Inspect the saved file: verify the top, middle, and bottom rather than assuming a successful download means every section rendered.

Common problems and fixes

Problem Likely cause Fix
Only the visible viewport is saved A standard macOS shortcut was used Use Firefox’s Save full page or Chrome DevTools full-page capture.
Images are missing Lazy loading or slow network requests Scroll through the page first, wait for images, and capture again.
A cookie banner covers the page Consent UI remained open Accept or dismiss it before capture, or use a capture service that handles consent.
Sticky navigation appears repeatedly The page fixes the header while scrolling Hide or disable the sticky element where possible, then inspect the output for duplication.
The page ends early Content is inside an internal scroll container or requires interaction Scroll the relevant container, expand collapsed sections, and retry.
Fonts or charts look wrong Web fonts or scripts had not finished Wait for network activity to settle and recapture.
The browser command is missing Version or DevTools layout differences Search the current command menu and check the browser’s current documentation.
The image is extremely tall The page contains a large amount of content Use a PDF, split the page into sections, or capture a selected element instead.

Reliability, performance, and accessibility notes

A full-page capture can take longer than a viewport screenshot because the browser must render content outside the visible area. Dynamic pages can change during the capture, and the official Apple, Mozilla, and Chrome guidance does not guarantee perfect output for every lazy-loaded image, sticky header, or unusually long document. Always inspect the result.

For repeatable work, record the browser version, macOS version, viewport size, page URL, and capture date. Keep the page state consistent: the same consent choice, logged-in state, zoom level, and expanded sections. Avoid capturing sensitive information visible in account pages or personalized dashboards.

Or skip the browser setup

ScreenshotNeo returns a screenshot or PDF from one GET request. Its capture options include full-page screenshots with lazy images loaded, element capture by CSS selector, device presets, custom viewports, retina scale, dark mode, custom CSS and JavaScript, waits, request blocking, headers, cookies, user agents, timezone, geolocation, resizing, caching, signed links, asynchronous jobs, bulk capture, and PDF settings.

Cookie banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; response headers report the page verdict and billing result. ScreenshotNeo also provides an MCP server so Claude, Cursor, and other MCP clients can call take_screenshot, get_page_info, and capture_pdf.

See the ScreenshotNeo API documentation for request options.

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(`HTTP ${res.status}`);
const bytes = await res.arrayBuffer();
await Bun.write('shot.webp', bytes);

The free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots, and every feature is available on every plan. Create a free ScreenshotNeo account.

Frequently asked questions

Can I take a full-page screenshot with Shift-Command-5?

Apple documents Shift-Command-5 for the Screenshot app and visible screen captures. Use Firefox or Chrome for a scrolling full-page image.

Is a Web Archive the same as a screenshot?

No. A Web Archive is a saved webpage with resources; a screenshot is a rendered image.

Should I use an image or PDF for a very long page?

Use an image when one continuous visual is required. Choose PDF when pagination, printing, or annotation matters.

Why does my full-page image differ between captures?

Dynamic content, animations, ads, consent state, viewport size, and loading timing can change the rendered page. Stabilize those conditions and inspect each result.