How to Capture a Webpage as a PDF with a Chrome Extension
Save any webpage as a PDF in Chrome, compare print and full-page extensions, fix cut-off pages, and automate captures with ScreenshotNeo.
For most pages, you do not need an extension. Open the page in Chrome, press Ctrl+P on Windows or Linux ( Command+P on Mac), choose Save as PDF, review the preview, and save the file. Chrome’s official print workflow is the quickest option for ordinary, print-friendly pages.
An extension is useful when you need a screenshot-like capture of the entire scrolling page, a continuous long-page PDF, annotations, or export controls that print preview does not provide.
Save a webpage as a PDF with Chrome’s built-in tools
- Open the webpage in Chrome on your computer.
- Open print preview with Ctrl+P (Windows/Linux), Command+P (Mac), or File > Print.
- Set the destination to Save as PDF.
- Choose a layout, paper size, margins, scale, and whether headers and footers should appear. The available settings depend on the page and your Chrome version.
- Inspect every page in the preview. Look for missing sections, blank pages, split tables, clipped images, and unwanted URLs or dates in headers and footers.
- Click Save, choose a folder, and confirm the filename.
Chrome’s help documentation describes opening the print dialog, selecting a destination, and adjusting print settings; its Drive instructions explicitly use Save as PDF. See Google Chrome Help’s printing instructions.
Settings that usually improve the result
- Layout: Use Portrait for text-heavy pages and Landscape for wide tables or dashboards.
- Margins: Default or Minimum usually preserves more content. Custom margins can prevent headings from being stranded at page edges.
- Scale: Reduce the scale when a table is cut off horizontally. Increasing it can make small text easier to read but creates more pages.
- Background graphics: Enable this when colors, cards, charts, or shaded sections are part of the information you need.
- Headers and footers: Disable them for a clean archive. Keep them when the URL and capture date are useful provenance.
- Selection: If Chrome offers a selection-only print option, select the relevant content before opening print preview.
When a Chrome extension is a better fit
Print preview creates a document designed for paper. Extensions can instead capture what the browser rendered, including a long page that would otherwise be divided by print rules. Choose an extension when you need one of these outcomes:
| Need | Best starting point | What to verify |
|---|---|---|
| Readable, paginated document | Chrome print preview | Page breaks, margins, selectable text, links |
| One continuous capture of a long page | Full-page screenshot extension | Lazy-loaded images, sticky headers, very long pages |
| PDF plus annotations or export formats | Extension with editing tools | Permissions, privacy disclosure, export quality |
| Repeatable, automated captures | Screenshot API | Authentication, waits, billing, failure handling |
For example, the Chrome Web Store listing for PageSaver describes full-page screenshots and PDF, image, and Markdown export. Those are listing disclosures, not independent performance tests, and store metadata can change. A GoFullPage listing result describes continuous PDFs and paper formats such as A4, US Letter, and US Legal; verify its current listing before relying on a particular feature. A vendor page for Full Page Capture says its product exports webpages to PDF and preserves rendered layout and links. Treat that as the vendor’s claim.
Capture a full webpage with an extension
- Install an extension from the Chrome Web Store only after reviewing its current permissions and privacy disclosure.
- Open the target page and wait for its content to finish loading.
- Click the extension’s toolbar button.
- Choose its full-page, scrolling, or entire-page capture mode.
- Wait while the extension scrolls or assembles the page. Do not navigate away or close the tab.
- Choose PDF as the output format if the extension offers multiple formats.
- Open the resulting PDF and inspect the top, middle, and bottom of the document before sharing it.
Extensions do not have universal coverage. Interactive pages, authenticated content, lazy-loaded media, cross-origin frames, infinite scroll, bot checks, and pages that change while scrolling can all affect the result.
Prevent common full-page capture defects
- Scroll through the page once before capturing so lazy-loaded images have a chance to load.
- Close cookie notices, chat widgets, newsletter prompts, and floating video players if they obscure content.
- Temporarily expand accordions or tabs that must appear in the PDF.
- Stop auto-refreshing dashboards and animations when a stable snapshot matters.
- For pages behind a login, confirm that the extension is allowed to access the site and understand how it handles page data.
- For very long pages, prefer a paginated export when a single extremely tall PDF is difficult to read or print.
Print PDF versus screenshot PDF
A print PDF usually keeps text selectable and searchable because the browser lays out the page as a document. A screenshot-based PDF may preserve visual appearance more closely, but its text can be an image and therefore may not be selectable or searchable. Check the output rather than assuming either behavior.
Print output can reflow responsive layouts, omit backgrounds, or apply print-specific CSS. A full-page extension aims to preserve the on-screen arrangement, but it may produce a very wide or unusually tall page. For legal, archival, or accessibility workflows, confirm whether links remain clickable, text can be searched, and the PDF has the page dimensions you need.
Chrome APIs: why pageCapture is not a PDF solution
Chrome’s pageCapture extension API saves a tab as MHTML, a package containing the page and its resources. It requires the pageCapture permission and is available from Chrome 116. MHTML is useful for preserving a page locally, but it is not the API that creates a PDF. If you are building an extension, use Chrome’s print flow or another rendering pipeline for PDF output. See the Chrome pageCapture API reference.
Troubleshooting
The PDF is blank
Cause: The page has not finished loading, requires authentication, is blocked by a bot check, or renders its content only after JavaScript runs.
Fix: Reload, sign in, wait for the page to settle, disable blocking extensions for the site, and try again. If the page remains inaccessible, an extension cannot manufacture content that the browser did not render.
Only the visible area was captured
Cause: The extension used viewport capture instead of full-page or scrolling mode.
Fix: Select the extension’s entire-page option. If it does not provide one, use Chrome print preview or an automation service designed for full-page capture.
Images are missing
Cause: Images are lazy-loaded, blocked by a content policy, served from a failed request, or loaded after the capture started.
Fix: Scroll through the page first, wait for image placeholders to resolve, and check the browser console or network status. Capture again after disabling an ad blocker only if your privacy policy permits it.
Cookie banners or chat bubbles cover the page
Cause: Fixed-position elements remain visible during printing or scrolling capture.
Fix: Dismiss them, use the extension’s hide-element feature if available, or add a temporary custom style in DevTools. Do not hide content that must remain in an evidentiary or compliance record.
The page is split in the wrong places
Cause: Print CSS, large tables, images, or custom margins force awkward page breaks.
Fix: Try Landscape, smaller margins, a lower scale, or background graphics. For a visual archive, use a full-page capture extension and accept that the PDF may be less paper-friendly.
The extension cannot access the page
Cause: Chrome restricts extensions on internal pages such as chrome://, the Chrome Web Store, browser settings, and some protected frames.
Fix: Capture a normal webpage, or use the site’s own export function. Review the extension’s requested host permissions before granting access.
Performance, reliability, privacy, and cost
- Performance: Full-page capture takes longer as page height, image count, and script activity increase. Wait for network activity and lazy content to settle before starting.
- Reliability: Repeat captures can differ when the page contains ads, recommendations, timestamps, animations, or live data. Record the URL and capture time when reproducibility matters.
- Privacy: An extension may process webpage content. Read its privacy disclosure and permissions, especially for internal dashboards and pages containing personal data.
- Storage: Screenshot-based PDFs can be large because they contain rendered pixels. Compress only after checking that text and charts remain readable.
- Cost: Chrome’s built-in print workflow is included with the browser. Extensions may be free, paid, or subscription-based; verify current terms in the listing.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server when you need repeatable captures from code or AI agents. One GET request returns a PNG, JPEG, WebP, or PDF. It can capture full pages with lazy images loaded, apply a CSS selector for one element, set a viewport or device preset, use dark mode and retina scale, wait for a selector, delay, or network idle, and supply cookies, headers, user agents, authorization, timezone, or geolocation. PDF options include paper size, margins, landscape mode, and page ranges. See the ScreenshotNeo documentation for the complete option list.
Before capture, ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and whether the request was billed.
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 data = Buffer.from(await res.arrayBuffer());
require('node:fs').writeFileSync('shot.webp', data);
ScreenshotNeo also offers custom CSS and JavaScript, click-before-capture actions, hidden selectors, blocked ads or resource types, transparent backgrounds, resizing, chosen cache TTLs, 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. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.
The Free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Create a free ScreenshotNeo account.
FAQ
Can I save a webpage as a PDF without installing anything?
Yes. Chrome’s print preview includes Save as PDF.
How do I save a long webpage without cutting it off?
Use Chrome print preview and inspect page breaks, or choose an extension’s full-page capture mode. Very long pages may be easier to read as paginated output.
Will a screenshot PDF have selectable text?
Not necessarily. A screenshot-based PDF can contain rendered images instead of text. Test search and copy on the finished file.
Can Chrome’s pageCapture API create PDFs?
No. It saves MHTML. Use print preview, a PDF-capable extension, or a rendering service.
What should I check before sharing a captured PDF?
Review the first, middle, and last pages; confirm that private content, popups, headers, links, images, and page breaks appear as intended.


