TL;DR
Every modern browser can print a web page to PDF without installing anything — the option lives in the standard Print dialog under "Destination: Save as PDF." The problem is that the defaults are wrong for long pages: images lazy-load, backgrounds are stripped, headers stamp the top of every page, and long articles get truncated mid-scroll. Fix that by scrolling the whole page first, turning on background graphics, removing headers and footers, and switching to Letter or A4 with default margins. When the print dialog still cuts the page off — infinite-scroll feeds, virtualized lists, sticky nav bars that overlap text — a proper capture extension like Convert Web to PDF is the escape hatch. This post walks through both, browser by browser.
Print vs Save: same dialog, both make PDFs
People search for "how to print a web page to PDF" and "how to save a web page as PDF" as if they are two different things. They are not. In every desktop browser, both go through the same Print dialog. When you pick "Save as PDF" as the destination, the browser runs the page through its print pipeline and hands you a PDF file. When you pick a physical printer, it runs the same pipeline and sends the result to the printer. Same layout engine, same page breaks, same margins.
The consequence is that everything you know about printing applies. A page that prints badly to paper — cut off at the right edge, missing images, ad boxes half on one page and half on the next — will save badly to PDF for exactly the same reasons. Fixing the PDF means fixing the print, and vice versa.
Two things are worth knowing before you open the dialog. First, "print preview" is not a real-time preview of the live page; it is a re-render of the page using print styles. Sites can (and often do) ship a separate stylesheet for @media print that hides nav bars, expands hidden sections, or reflows columns. That is why the preview sometimes looks better than the screen — and occasionally worse, when a site's print styles have gone stale. Second, the browser sends the whole rendered document to the print pipeline, not just what is visible in the viewport. If content is not in the DOM yet — lazy-loaded images, infinite-scroll articles, tabs that only mount when clicked — the print pipeline cannot see it. Force it into the DOM first (see the section on force-loading below), then print.
If you just want the step-by-step for one browser and one platform, we have dedicated walkthroughs for Chrome and Mac. The rest of this post covers the settings that actually matter and the failure modes to watch for.
Chrome print settings that matter (scale, margins, background)
Chrome's print dialog looks minimal, but the settings underneath "More settings" are where all the useful controls live. Open the dialog with Ctrl+P (Windows/Linux) or Cmd+P (Mac), set Destination to "Save as PDF," then click "More settings."
Paper size. Letter (US) or A4 (everywhere else). Legal, Tabloid, and the assorted envelope sizes are almost never what you want for a web page. If the page has a fixed pixel width — many product pages are pinned at 1200 or 1440 pixels — the browser will scale to fit whichever paper size you choose, so the choice mostly affects how much whitespace you get in the margins.
Margins. Default is usually fine. "None" pushes text right to the paper edge and often causes real printers to clip; "Minimum" is a safer choice if you want maximum content per page. Custom margins are useful when a site's header or footer keeps landing on a page break and you want to nudge it. If you pick "None," turn on "Background graphics" or your dark-mode pages will save with white gutters.
Scale. Default is "Default," which fits the page width to the paper. "Custom" lets you shrink to 60–80% for dense pages that would otherwise wrap awkwardly, or bump to 110–125% for pages that print too small. If a table is being cut off on the right, try 80% before you try landscape.
Pages per sheet. Leave at 1. Two-up printing is fine for paper but useless for a PDF you actually want to read.
Background graphics. Off by default. Turn it on. Otherwise, every card, badge, colored heading, illustration, and dark-mode background disappears — you end up with black text on white paper and no visual hierarchy. This single setting is the difference between a PDF that looks like the site and a PDF that looks like a stripped 2003 print stylesheet.
Headers and footers. Off by default in most Chrome installs, but if you see the URL stamped at the bottom of every page and the date at the top, uncheck this. The full walkthrough is in our remove headers and footers guide.
Selection only. If you highlight text before opening the print dialog, "Selection only" appears as an option. Great for saving one article out of a listing page, or one section of a Wikipedia entry.
Force-load the full page before printing
The single most common complaint about printing web pages to PDF is that the resulting file is missing content — usually images below the fold, sometimes entire sections of a long article. This is not a browser bug. It is lazy loading working as designed, and the print pipeline honoring the DOM as it stands at the moment you press print.
Modern sites defer loading images, videos, embedded tweets, and sometimes text until you scroll near them. If you press Cmd+P from the top of a 20,000-pixel article, the browser will happily print the whole 20,000 pixels — but most of the images past the fold will still be placeholder pixels or blank space, because they were never requested.
The fix is manual and boring: scroll to the bottom of the page, wait a second, then scroll back to the top. On short pages, End and Home work. On very long pages, hold Page Down for a few seconds. The point is not the scrolling itself; it is triggering the intersection observers that tell each lazy image "you are near the viewport, load now." Once loaded, the image stays loaded, and the print pipeline can see it.
For infinite-scroll feeds — Twitter, Reddit, most news sites' homepages — no amount of scrolling loads the whole thing, because the whole thing is unbounded. Print-to-PDF simply cannot capture an infinite feed. Either open individual posts in their own pages, or use a scroll-based capture extension that stitches the feed as it scrolls.
If images still come out missing after a proper scroll, the deeper causes are covered in fix missing images in webpage PDFs. The usual suspects are CSS background-image (stripped when background graphics is off), lazy-loaded iframes (never captured by print pipelines), and JavaScript-rendered images that use blob URLs (invisible to the print renderer).
Firefox, Edge, Safari print-to-PDF
Firefox uses the same Cmd+P / Ctrl+P shortcut and offers a similar dialog. Destination is "Save to PDF." The important toggles are under "More settings" and include Scale, Margins, and Print backgrounds. Firefox has a "Simplify page" checkbox that runs Reader Mode over the page before printing — hit or miss, depending on the site, but worth trying if the print preview looks cluttered.
Edge (Chromium version) is essentially Chrome with different chrome. Same dialog, same settings, same lazy-load problems. The one Edge-specific feature worth mentioning is the built-in PDF reader that opens after you save, which makes it easy to check the output without leaving the browser.
Safari on Mac takes a different path. Instead of a dedicated "Save as PDF" destination, use Cmd+P to open the print dialog, then click the "PDF" dropdown in the lower-left corner and pick "Save as PDF." Safari's print engine tends to produce cleaner output than Chrome's on Apple-designed sites, and slightly worse output on sites built for Chrome. Reader View (Cmd+Shift+R before printing) usually improves article PDFs dramatically — it strips ads, sidebars, and comment sections, and reflows the content into a single readable column.
Safari on iPad and iPhone can also print to PDF, but the flow is different enough that it deserves its own walkthrough. See save webpage as PDF on iPhone and Android if that is what you need.
When the print dialog fails: extension fallback
The print dialog is fine for articles, receipts, invoices, and most static pages. It falls over on a handful of common cases:
- Infinite-scroll feeds where "the whole page" is not a defined thing.
- Pages with sticky headers or nav bars that overlap the content on every printed page break.
- Interactive widgets (maps, charts, code editors) that render to canvas or WebGL and print as blank rectangles.
- Ad-heavy layouts where the ads capture most of the vertical space and the article is squeezed into a narrow column.
- Virtualized lists (React Virtualized, TanStack Virtual) that only render the visible rows and unmount the rest as you scroll.
For those cases, a capture-based extension does what the print pipeline cannot: it scrolls the page programmatically, waits for each section to render, hides ads and sticky nav, and stitches the result into a single continuous PDF. Convert Web to PDF is the one we build; there are others. The comparison between print-to-PDF and extensions in general is covered in Chrome print to PDF vs extension, and the specific tradeoffs of extension-based capture in full-page screenshot vs PDF alternative.
The rule of thumb: try print-to-PDF first because it is free and built in. Switch to an extension when print-to-PDF gives you a file that is missing content, cut off, or unreadable — not before.
Print an entire website (bulk)
"Print an entire website" is a different problem from "print a page." A page is one URL. A site is dozens or thousands. The print dialog cannot iterate; each Cmd+P produces one PDF.
Three practical options:
Manual, page by page. Fine for a five-page marketing site. Not fine for a 400-page documentation site. Save each page with a consistent filename convention (01-home.pdf, 02-about.pdf) so they sort in reading order.
Sitemap-driven capture. Most sites publish a sitemap.xml at the root that lists every indexable URL. Feed that list to a capture tool (extension, headless-Chrome script, or a service) and let it iterate. Our Convert Web to PDF extension has a queue mode for exactly this.
Print to a single combined PDF. If you only need a handful of pages archived together, save each one, then merge them with any PDF merger — Preview on Mac, most PDF viewers on Windows, or a browser extension that does merging.
For serious site archival — every page, every asset, working links between pages — none of the print-based approaches are quite right. That is closer to what tools like wget --mirror or ArchiveBox are built for. Print-to-PDF is best when what you need is a readable document, not a functioning offline copy of the site.
Frequently asked questions
How do I print a webpage as PDF?
Press Ctrl+P (Windows/Linux) or Cmd+P (Mac) to open the print dialog. Change Destination to "Save as PDF." Click "More settings," turn on "Background graphics," turn off "Headers and footers," leave scale at Default, and pick Letter or A4 as paper size. Click Save. The file lands wherever your browser puts downloads. In Safari, the flow is slightly different: open the print dialog, then click the "PDF" dropdown in the lower-left corner and pick "Save as PDF." Either way, the important step is scrolling the entire page first so lazy-loaded images are actually in the DOM.
How do I print an entire webpage (all content)?
Scroll from top to bottom before opening the print dialog. Lazy loading only fetches images and embeds as they approach the viewport, so anything you have not scrolled past will be blank in the printed PDF. For very long articles, hold Page Down for a few seconds to trigger everything, then press Home to jump back to the top. If the page uses infinite scroll (Twitter, Reddit, news homepages), print-to-PDF cannot capture the whole feed — either open individual posts as their own pages, or use a capture extension that stitches scroll frames together into one PDF.
Why does Print to PDF only capture part of the page?
Usually one of three reasons. First, lazy loading: images below where you scrolled are not in the DOM, so they print as blank. Fix by scrolling the full page before printing. Second, virtualized lists: some frameworks unmount rows as they scroll out of view, so the print pipeline only ever sees the currently rendered rows. There is no fix from the print dialog — you need a capture extension. Third, height limits: Chrome's print pipeline has a maximum page count around 400. On extremely long pages, the tail gets truncated. Split the page into sections or use a capture tool that handles arbitrary heights.
How do I remove headers and footers from a printed PDF?
In Chrome, Edge, and Firefox: open the print dialog, expand "More settings" (Chrome/Edge) or "More settings" (Firefox), and uncheck "Headers and footers." In Safari: open the print dialog and uncheck "Print headers and footers" in the layout options. The header is usually the page title and date; the footer is usually the URL and page number. Turning them off gives you a clean PDF that looks like a document rather than a printout. The full walkthrough with screenshots is in our dedicated guide.
How do I print a website with background images?
Turn on "Background graphics" in the print dialog. It is off by default because printing dark backgrounds to paper wastes ink, but for a PDF you actually want to read on screen, you want the backgrounds. In Chrome: Cmd+P or Ctrl+P, expand "More settings," check "Background graphics." In Safari: expand the details section of the print dialog, then check "Print backgrounds." Note that CSS background-image (used for many decorative images and some hero images) only prints when this setting is on — without it, big chunks of the page render as blank whitespace even though everything looked fine on screen.
Bottom line
Printing a web page to PDF is a solved problem for 90% of pages: open the print dialog, pick "Save as PDF," turn on background graphics, turn off headers and footers, and scroll the page first. The other 10% — infinite feeds, virtualized lists, sticky nav bars, canvas-rendered widgets — is where the print pipeline runs out of runway and a capture-based extension earns its keep. Try the built-in dialog first, and reach for Convert Web to PDF when the built-in dialog gives you a file that is cut off, missing images, or unreadable. The point is a document you can actually read later, not a specific tool.