ScreenshotNeo

BlogScreenshots on your device

How to Capture a Full Webpage on Mac with Capture de Page

Learn when to use a Mac screenshot, Safari Web Archive, PDF, or one tall image—and how to capture complete pages reliably.

By the ScreenshotNeo team1 October 20267 min read

Short answer: a normal Mac screenshot captures the screen, a window, or a selected area. It does not automatically create one tall image containing everything below the browser viewport. Choose the output first: use a screen screenshot for what is visible, a Safari Web Archive for a revisitable copy, a PDF for sharing or printing, or a full-page capture tool for one long PNG or JPEG.

Choose the right kind of full-page capture

Goal Best Mac method What you get Includes content below the viewport?
Capture what is currently visible macOS screenshot PNG or another selected screenshot format No
Keep a page for later viewing Safari File > Save As > Web Archive Web Archive containing page assets Usually, subject to what Safari can save
Share or print a long page Safari print dialog > Save as PDF Paginated PDF Yes, as document pages
Produce one tall image A full-page browser extension or capture service One PNG, JPEG, or WebP Yes, if the tool supports full-page capture
Inspect the source Safari Page Source or Web Inspector HTML source or developer inspection view This is not a visual capture

Safari distinguishes a Web Archive from Page Source: the archive preserves graphics and working links where possible, while Page Source saves HTML only. Apple also notes that some webpages can prevent items shown on the page from being saved. See Apple’s Safari saving guide.

1. Take a normal screenshot on Mac

Use this when the visible screen is all you need. Apple’s current screenshot instructions document these shortcuts:

  • Shift-Command-3: capture the entire screen.
  • Shift-Command-4: select a rectangular portion of the screen.
  • Shift-Command-4, then Space: capture a window.
  • Shift-Command-5: open screenshot and screen-recording controls on supported macOS versions.

These shortcuts capture screen areas. They do not scroll through a webpage and stitch content below the viewport into one long image. For the official shortcut list, see Apple Support’s Mac screenshot instructions.

2. Save the entire page as a Safari Web Archive

  1. Open the page in Safari.
  2. Choose File > Save As.
  3. Set the format to Web Archive.
  4. Choose a location and save.
  5. Open the archive later in Safari to revisit the saved page.

A Web Archive is useful for offline reference because it can include graphics and preserve links. It is not a single image, and it is not the same as saving Page Source. Pages that depend on a live account, scripts, video, or server requests may not reproduce exactly offline.

3. Save a full webpage as a PDF in Safari

  1. Open the webpage and wait for its main content to render.
  2. Choose File > Print, or press Command-P.
  3. Use the PDF menu in the print dialog and choose Save as PDF.
  4. Choose a filename and destination.

A PDF is a paginated document, not one continuous image. It is usually the best built-in option for emailing, printing, or attaching a complete page to a record. Labels and layout can vary between Safari and macOS releases.

4. Capture one long PNG or JPEG

macOS and Safari’s standard screenshot commands do not provide a universal one-click tall webpage image. If your deliverable must be one image, use a browser extension or a screenshot service that explicitly supports full-page image export.

Safari App Store listings for tools such as FullPage Screenshot for Safari and FireShot advertise full-page capture and image/PDF export. These are vendor descriptions, not independent compatibility tests. Before installing one, check its current Safari support, export formats, privacy details, permissions, and price. Test it on the exact pages you need.

Make lazy-loaded content appear

  1. Open the page in a normal window rather than an unloaded background tab.
  2. Scroll steadily from the top to the bottom so images and embedded sections have a chance to load.
  3. Wait for loading spinners, ads, charts, and fonts to finish.
  4. Return to the top and run the full-page capture.

Scrolling helps trigger lazy loading, but it cannot guarantee that an interactive page will render identically in a PDF, archive, extension, or image capture.

5. Capture a full webpage with developer tools

Browser developer tools can help diagnose a page that will not capture correctly. In Safari, enable the Develop menu in Safari settings, then use Develop > Show Web Inspector or inspect an element. Web Inspector is for examining HTML, CSS, network requests, and JavaScript; it is not the simplest everyday full-page image workflow.

6. Or skip the browser setup

ScreenshotNeo returns a webpage screenshot or PDF from one GET request. It can capture full pages, load lazy images, choose PNG, JPEG, or WebP, and apply options such as a viewport, device preset, dark mode, retina scale, wait conditions, custom CSS or JavaScript, hidden selectors, cookies, headers, geolocation, and PDF settings. See the ScreenshotNeo documentation for the complete parameter list.

Before capture, cookie and consent banners are accepted and more than 60 known consent platforms, newsletter popups, and chat widgets are removed. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed; the response identifies the page verdict and billing result with X-Page-Verdict and X-Billed headers. Its MCP server lets Claude, Cursor, and other MCP clients call take_screenshot, get_page_info, and capture_pdf.

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

import { promises as fs } from 'node:fs';

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(`ScreenshotNeo returned ${res.status}`);
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

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

Full-page capture options to choose deliberately

Option Why it matters Typical use
Viewport size Responsive layouts change at breakpoints Desktop, tablet, and mobile documentation
Full page Captures content below the first viewport Long articles, landing pages, receipts
Element selector Captures one component instead of the document Charts, cards, product panels
Wait for selector Delays capture until a required element exists Single-page apps and client-rendered content
Delay or network idle Allows fonts, images, and scripts to settle Animations and lazy-loaded sections
Hide selectors Removes unstable or private areas Cookie banners, chat launchers, timestamps
Custom CSS or JavaScript Adjusts the page before capture Print-like styling or test fixtures
Cookies, headers, authorization Provides the session needed to render a page Authenticated staging pages
Timezone and geolocation Controls regional rendering Localized pricing or date displays
Cache TTL Reuses a capture for repeated requests Lower latency for stable pages

Troubleshooting

The result stops at the visible viewport

Cause: you used a screen-area screenshot. Fix: use Safari print-to-PDF, a full-page image tool, or ScreenshotNeo’s full-page option.

Images or sections are missing

Cause: lazy loading, blocked third-party resources, or capture before JavaScript finished. Fix: scroll through the page first; then use a selector wait, delay, or network-idle wait. Check the page directly in the browser.

The saved Web Archive does not work like the live page

Cause: archives cannot reproduce every server request, login, video, or script. Fix: use a PDF for a stable document, or capture the rendered page while authenticated.

The PDF has unexpected page breaks

Cause: PDF pagination follows print layout and CSS. Fix: adjust print settings, margins, orientation, and scale; use a tall image when pagination itself is unacceptable.

A Safari extension fails on one site

Cause: browser permissions, cross-origin content, anti-bot checks, or a site-specific layout. Fix: verify the extension’s permissions and Safari version, try after the page settles, and test another capture method.

A ScreenshotNeo request returns an error or blank result

Cause: an invalid URL, authentication requirement, bot check, timeout, or page that never finishes rendering. Fix: confirm the URL is publicly reachable or provide the needed headers/cookies, add a wait condition, and inspect X-Page-Verdict and X-Billed in the response. Failed loads, blank pages, timeouts, bot checks, and cache hits are not billed.

Performance, reliability, and cost notes

  • Small viewport screenshots generally complete faster than full-page captures because full-page work must render more content.
  • Waiting for network idle can improve completeness but may delay pages with long polling or advertising requests. A specific selector wait is often more predictable.
  • Scrolling manually before capture helps lazy loading, but dynamic pages can still change while they render.
  • Use caching with a chosen TTL for repeated captures of stable pages. Avoid caching when the page changes per user or per request.
  • For repeated jobs, async capture with signed webhooks avoids keeping a request open; bulk capture supports up to 100 URLs per call.
  • With ScreenshotNeo, only clean shots are billed. The free plan includes 1,000 shots per month with no card; paid plans are $5 for 3,000, $15 for 15,000, $39 for 60,000, $99 for 250,000, and $249 for 1,000,000. Yearly billing gives two months free.

Checklist for a complete Mac webpage capture

  • Decide whether you need a screen image, Web Archive, PDF, source, or one tall image.
  • Confirm content below the viewport is required.
  • Scroll through pages that lazy-load images or sections.
  • Wait for client-rendered content, fonts, and charts.
  • Check responsive viewport and orientation.
  • Remove consent banners, popups, and chat controls before the final capture.
  • Review the bottom of the output for clipping and missing content.
  • For automated work, record the URL, capture options, verdict, and billing headers.

FAQ

Can Mac take a screenshot of an entire webpage by default?

No. The built-in shortcuts capture a screen, window, or selected area. Use PDF, Web Archive, a full-page extension, or an API for content below the viewport.

Is a Web Archive the same as a PDF?

No. A Web Archive is intended for revisiting a saved webpage and its assets; a PDF is a paginated document for sharing or printing.

Is Page Source a full-page screenshot?

No. Page Source is HTML source inspection. It does not preserve the rendered visual appearance.

Why is my full-page image taller than expected?

Responsive layout, expanded menus, sticky elements, and content injected during scrolling can change page height. Hide unstable selectors or capture at a fixed viewport.

What should I use for many URLs?

Automate with a screenshot API. ScreenshotNeo supports bulk capture for up to 100 URLs per call, async jobs with signed webhooks, and a usage API.