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.
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
- Open the page in Safari.
- Choose File > Save As.
- Set the format to Web Archive.
- Choose a location and save.
- 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
- Open the webpage and wait for its main content to render.
- Choose File > Print, or press Command-P.
- Use the PDF menu in the print dialog and choose Save as PDF.
- 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
- Open the page in a normal window rather than an unloaded background tab.
- Scroll steadily from the top to the bottom so images and embedded sections have a chance to load.
- Wait for loading spinners, ads, charts, and fonts to finish.
- 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.


