How to Take a Screenshot of a Webpage
Learn how to capture a visible screen or an entire webpage in Firefox, Edge, Safari on iPhone, developer tools, or an API.
Short answer: use your browser’s full-page capture command when you need content below the fold. In Firefox, right-click the page and choose Take Screenshot → Save full page. In Edge, open Screenshot and choose Capture full page. On iPhone Safari, take a screenshot, tap its thumbnail, then choose Full Page. A normal screenshot captures only the visible screen.
1. Choose the capture you need
| Need | Best route | Result |
|---|---|---|
| Visible viewport | Your operating system’s normal screenshot shortcut | What is currently visible |
| Entire webpage | Firefox or Edge full-page capture | A long image including content below the fold |
| One element | Firefox developer tools or a selector-based API | Only the chosen element |
| Printable, searchable document | Browser print or PDF workflow | A PDF rather than a raster image |
| Repeatable or automated capture | Browser automation or ScreenshotNeo | Code-driven images or PDFs |
Full-page capture renders the page as an image. It can include lazy-loaded sections, sticky headers, animations, cookie dialogs, ads, and chat controls exactly as they appear during capture. Clean up the page first when presentation quality matters.
2. Capture an entire webpage in Firefox
- Open the page and wait for the content you need to appear.
- Right-click an empty part of the page, or Control-click on macOS, and select Take Screenshot. You can also press Ctrl+Shift+S on Windows/Linux or Command+Shift+S on macOS.
- Select Save full page. Choose Save visible for only the current viewport.
- Select Download to save a PNG in Firefox’s default download folder, or Copy to put it on the clipboard.
Firefox can also capture a region or an element highlighted under the pointer. If the menu is missing, use the current Firefox menu labels for your version; browser interfaces change.
Firefox developer-tools capture
Firefox Developer Tools provide more control. The screenshot button may need to be enabled under Settings → Available Toolbox Buttons. Firefox’s Web Console also provides a :screenshot helper:
:screenshot --fullpage --filename=page.png
:screenshot --selector='.pricing-table' --filename=pricing.png
:screenshot --fullpage --delay=2000 --dpr=2 --filename=retina.png
--fullpage captures the whole document, --selector targets an element, --delay waits before capture, --dpr sets device pixel ratio, and --filename chooses the output path. Use a delay when JavaScript or lazy images need time to finish.
3. Capture an entire webpage in Microsoft Edge
- Open the page.
- Open Screenshot from the page’s right-click menu or from Edge Settings. The shortcut is Ctrl+Shift+S.
- Choose Capture full page for the complete webpage, or select a region.
- Use Edge’s markup tools if needed, then copy or save the result.
Edge’s full-page mode includes content below the screen. Moving content such as GIFs and carousels can remain active while the capture is made, so pause motion or hide animated areas when you need a consistent record. Availability and labels can vary by device, market, and Edge version.
4. Take a full-page screenshot on iPhone Safari
- In Safari, open the webpage.
- On Face ID iPhones, quickly press and release Side + Volume Up. On models with a Home button, press Home + Side.
- Tap the screenshot thumbnail before it disappears.
- Choose Full Page at the top of the preview.
- Scroll the preview to inspect it, crop or mark it up if needed, and save. iPhone screenshots normally go to Photos.
The Full Page option is intended for content that extends beyond the screen, such as a Safari webpage. If Full Page is unavailable, confirm that the screenshot was taken in Safari and that the current iOS version supports the option.
5. Developer-controlled screenshots
Use a developer tool or automation when you need the same viewport, delay, pixel ratio, selector, and filename every time. A repeatable capture should define:
- Viewport: width and height, plus device pixel ratio.
- Scope: visible viewport, full document, or a CSS selector.
- Readiness: a fixed delay, a selector becoming visible, or network idle.
- State: cookies, authentication headers, timezone, geolocation, color scheme, and language.
- Output: PNG, JPEG, WebP, or PDF, with a predictable filename.
For long pages, test lazy-loaded images, sticky navigation, infinite scroll, canvas content, web fonts, and cross-origin frames. A full-page image is not automatically a faithful print document: fixed elements may repeat, animations may differ between runs, and content loaded after capture will be absent.
6. Image or PDF?
Choose an image for visual review, social sharing, bug reports, or a design archive. Choose PDF when readers need selectable text, printing, page ranges, paper sizes, margins, or a document-like layout. Browser print dialogs differ, so use the current print menu for your browser and operating system. ScreenshotNeo can also return PDFs with paper size, margins, landscape mode, and page ranges.
7. Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Only the visible area was saved | A normal OS screenshot or visible-mode capture was used | Choose Save full page, Capture full page, or Safari’s Full Page. |
| Images are missing | Lazy loading had not finished | Scroll through the page first, wait for images, or use a selector/readiness delay. |
| The page is cut off | Infinite scroll, nested scrolling, or a browser capture limit | Capture the relevant element, load content in batches, or use an API with full-page capture. |
| Sticky header appears many times | The header is fixed while the browser stitches the page | Hide the header with custom CSS or capture the content element instead. |
| Cookie banner or chat bubble covers content | A consent or widget overlay is active | Accept or dismiss it before capture, block the widget, or use ScreenshotNeo’s cleanup options. |
| Fonts or colors differ | Fonts, theme, or network resources were not ready | Wait for web fonts, set the intended color scheme, and verify resource loading. |
| Full-page option is missing | Unsupported browser version, page context, or device | Update the browser, use its current Screenshot menu, or use Firefox Developer Tools. |
| Animation creates inconsistent results | GIFs, carousels, video, or transitions are moving | Pause motion, add a delay, or hide animated selectors. |
| Authenticated content is blank | The capture session lacks cookies or authorization | Capture while signed in, or provide the required cookies and headers to an automation service. |
8. Performance, reliability, and cost
- Performance: full-page captures take longer than viewport captures because the browser must render and often stitch more pixels. Large images consume more memory; reduce device pixel ratio or output dimensions when exact resolution is unnecessary.
- Reliability: wait for a meaningful readiness condition instead of relying only on a short timer. Record the URL, viewport, timestamp, and capture settings so a failed result can be reproduced.
- Dynamic pages: freeze carousels and time-dependent content when comparing screenshots. Set timezone, locale, and geolocation explicitly when those values affect rendering.
- Cost: manual browser captures cost nothing beyond the device and software. Automated browser infrastructure adds runtime and maintenance costs. An API can be cheaper operationally when you need scheduled or high-volume captures, because the browser setup is managed for you.
9. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. Before capture, it accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be turned off.
Only clean shots are billed. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response reports the result with X-Page-Verdict and X-Billed headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
See the ScreenshotNeo API documentation for all options. The basic request is:
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()));
Useful options include full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets or a custom viewport, retina scale, custom CSS and JavaScript, clicking before capture, hiding selectors, waiting for a selector or network idle, blocking ads, trackers, requests, or resource types, custom headers, cookies, user agents and Authorization, timezone and geolocation, transparent backgrounds, resizing, configurable caching TTL, signed links for public image tags, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Parameter names used by other screenshot APIs also work, which simplifies migration.
Plans include 1,000 shots per month free with no card; paid plans start at $5 for 3,000 shots. Growth is $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, and every feature is on every plan.
Create a free ScreenshotNeo account and get 1,000 screenshots a month with no card.
10. FAQ
Does a normal screenshot include the whole webpage?
No. It normally includes only the visible viewport. Use a full-page command for content below the fold.
Can I capture just one section?
Yes. Firefox can select an element, and ScreenshotNeo accepts a CSS selector for element capture.
Should I use PNG, JPEG, or WebP?
PNG preserves crisp text and transparency. JPEG is useful for photographic pages and smaller files. WebP often provides a small file while retaining good visual quality.
Why is my screenshot different on another device?
Viewport size, device pixel ratio, fonts, browser version, timezone, locale, cookies, and geolocation can all change the rendered page.
Can an AI agent take screenshots?
Yes. ScreenshotNeo includes an MCP server with screenshot, page-info, and PDF tools for MCP clients such as Claude and Cursor.


