BlogScreenshots on your device
How to capture a webpage from top to bottom in Safari on Mac
Save a long Safari page as a PDF or Web Archive, or capture it as an image with a screenshot API. Choose the format that fits your use.
Short answer: To save an entire Safari page as a readable document, open it and press Command-P, then use the PDF menu in the print dialog and choose Save as PDF. If you need a webpage archive with graphics and links, choose File > Save As and select Web Archive. These save a page-length document or archive; they are not a single tall screenshot image. Apple’s documented macOS screenshot shortcuts capture the screen, a window, or a selected area, and do not provide a built-in scrolling full-page Safari screenshot in the cited instructions.
Choose the right kind of capture
| What you need | Use | What you get |
|---|---|---|
| A shareable, printable page-length document | Safari Print > Save as PDF | A PDF laid out for pages. Check the preview because print output may differ from the live page. |
| A local copy with webpage graphics and links | Safari File > Save As > Web Archive | A Web Archive. Links work while their destination webpages remain available. |
| The page’s HTML source | Safari File > Save As > Page Source | HTML source code, not a rendered screenshot or full visual archive. |
| One image showing the entire page | A screenshot capture API or another full-page capture workflow | A single image such as PNG, JPEG, or WebP. Safari’s documented Mac screenshot shortcuts do not scroll through a page. |
| Only what is visible on the display | Shift-Command-3, Shift-Command-4, or Shift-Command-5 | A screen, selection, or screenshot-controls capture, rather than a complete long webpage. |
Apple explains the Safari archive and source options in its guide to saving part or all of a webpage in Safari. For Mac screenshots, see Apple’s screenshot instructions. For PDF output, the Mac print dialog provides the PDF save workflow described in Apple’s Save a document as a PDF guide.
Save the whole Safari page as a PDF
- Open the webpage in Safari and wait for the content you need to appear. If it is a page that loads content as you scroll, scroll through it first, then return to the top and inspect the print preview.
- Choose File > Print, or press Command-P.
- Review the print preview. Confirm that the expected content appears and that page breaks are acceptable.
- Open the PDF button or menu in the print dialog and choose Save as PDF.
- Choose a filename and destination, then save.
The result is a page-length document distributed across PDF pages, not one very tall raster image. It is usually the practical choice for reading, printing, sharing, or keeping a document-like record. The preview matters: the available sources do not promise that print output reproduces every screen detail or every dynamic element exactly as it appeared in Safari.
When PDF is the wrong format
Choose Web Archive when preserving webpage resources locally is more useful than a paginated document. Choose Page Source only when you need HTML. Choose an image capture workflow when the requirement is one image file for a design review, report, or image-processing pipeline.
Save a Safari Web Archive or the page source
- In Safari, open the page you want to keep.
- Choose File > Save As.
- Open the Format menu and select Web Archive, then save.
Apple describes Web Archive as saving webpage graphics; links can work as long as their destination pages remain available. If you instead select Page Source, Safari saves only the HTML source code. Some webpages may prevent saving items shown on the page, so an archive should not be treated as a guaranteed, permanent copy of all remote or restricted content. See Apple’s Safari save guide for these formats.
Take a screenshot of the visible screen on Mac
macOS includes screenshot controls for the screen, a window, or a selected area. These are useful when the visible portion is all you need:
- Shift-Command-3: capture the screen.
- Shift-Command-4: select an area to capture.
- Shift-Command-5: open Screenshot controls.
These shortcuts do not automatically scroll Safari to capture a whole long page. If you need an image from the top of a page to the bottom, use an image-producing full-page capture workflow instead of assuming a screen capture will include off-screen content.
Capture a full-page image with a screenshot API
For developers who need a single image rather than a PDF, a screenshot API can render a URL and return an image. The examples below use ScreenshotNeo, a website screenshot API and MCP server. Get an API key, then request a URL. The API’s documentation describes its 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()
with open("shot.webp", "wb") as image_file:
image_file.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 request failed: ${res.status}`);
const image = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', image));
Replace the example URL with the page you are authorized to capture. Keep the API key out of public client-side code and source control; call the API from a server when a browser would expose the key. The shown requests use the default image behavior and write the response as WebP. Consult the ScreenshotNeo API docs for options and response details.
Options that matter for long pages
ScreenshotNeo supports full-page capture with lazy images loaded, viewport sizing and device presets, retina scale, output formats including PNG, JPEG, and WebP, and capture of a selected element by CSS selector. It also supports dark mode; custom CSS and JavaScript; click, hide, and wait options; blocking ads, trackers, requests, or resource types; custom headers, cookies, user agent, and Authorization; timezone and geolocation; transparent backgrounds; image resizing; configurable caching; signed links; async jobs and signed webhooks; bulk capture of up to 100 URLs per call; a usage API; and an OpenAPI spec. It can also return PDFs with paper size, margins, landscape, and page-range options, or render HTML/CSS to an image. Parameter names used by other screenshot APIs also work to make switching easier. See the docs for exact parameter names and combinations.
For very long or dynamic pages, use full-page capture when the entire document is required, and wait for content to settle where the page loads asynchronously. If the result is blank or incomplete, first check whether the page requires authentication, delays rendering, or depends on content that is only loaded after scrolling. A capture cannot guarantee content that the target site does not deliver to the request.
Or skip the browser setup
With ScreenshotNeo, one GET request can return a webpage screenshot as PNG, JPEG, or WebP, or a PDF. For example:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners are accepted like a visitor would accept them, and 60+ known consent platforms, newsletter popups, and chat widgets are removed before the shot; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and whether the request was billed. An MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.
Create a free ScreenshotNeo account to get started.
Troubleshooting
| Symptom | Likely cause | What to try |
|---|---|---|
| The saved PDF has only part of the page | The print layout or page’s loading state omitted content. | Review the preview, wait for the page to finish loading, scroll through lazy content, return to the top, and print again. Check the saved PDF itself. |
| The PDF looks different from Safari | Print layout can differ from the interactive screen layout. | Use the print preview to assess the output. If you need a visual image of the rendered page, use a full-page image capture workflow. |
| A Web Archive is missing some content | The site may prevent saving certain displayed items, or content may depend on remote pages or state. | Try PDF for a document copy, or capture an image of the rendered page. Do not assume every remote resource will be preserved. |
| The screenshot contains only the visible viewport | A regular screen or selected-area screenshot does not scroll through the page. | Use a full-page capture option in a screenshot API and verify the output dimensions and bottom of the page. |
| An API result is blank or incomplete | The page may need time, authentication, scrolling-triggered content, or a particular browser state. | Check the URL and access requirements; configure appropriate wait, cookie, header, or full-page options in the API. Inspect the response verdict and billing headers. |
| An API request times out or returns an error | The target may be slow, unreachable, blocked, or the request may have invalid parameters or credentials. | Check the URL, API key, parameter spelling, and network response. Increase the client timeout for slow pages and use the API documentation to interpret response headers. |
Performance, reliability, and cost
- PDF and archive: These are built-in Safari workflows and do not require integrating a screenshot service. For a PDF, check print preview and the final file; for an archive, remember that links depend on destination pages remaining available.
- Long or dynamic pages: More page content and delayed resources can make capture slower or incomplete. Allow the page to load, then inspect the output rather than assuming that a successful save includes every element.
- API reliability: Treat the returned image or PDF and its response metadata as the result to validate. ScreenshotNeo exposes page-verdict and billing headers; failed loads and other listed non-clean outcomes are not billed.
- API cost: ScreenshotNeo’s free plan includes 1,000 shots per month without a card. Paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free. Every feature is on every plan. Only clean shots are billed, with cache hits also free.
FAQ
Can Safari on Mac save a webpage from top to bottom?
Yes, as a PDF through Print or as a Web Archive through Save As. Those are not the same as one tall screenshot image.
Does Shift-Command-3 capture the entire webpage?
No. It captures the screen. Off-screen page content is not included by the documented shortcut.
Is Page Source a screenshot?
No. It saves HTML source code, not the page’s rendered visual appearance.
Will a Web Archive preserve every link forever?
No. Apple says links work as long as their destination webpages remain available, and some sites may prevent saving displayed items.
Which format should I send to someone?
Use PDF for a document-like page-length copy, WebP/PNG/JPEG when they need an image, and Web Archive when retaining webpage resources is the priority.


