Every browser can do this in two keystrokes. The interesting question is what to do about the pages where it produces nonsense.
The basic method
Every modern browser prints to PDF natively — no extension needed, and extensions for this are a common source of unnecessary permissions.
- Ctrl+P, or Cmd+P on a Mac.
- Set Destination to "Save as PDF" rather than a printer.
- Open "More settings" and tick Background graphics. This is the single most important step — browsers omit background colours and images from print by default, so without it the page arrives white where it should be coloured.
- Consider Reader mode first (Firefox and Edge have it built in). It strips navigation and ads and produces a far cleaner document for an article.
The background graphics setting exists to save ink on a physical printer, which is sensible, and it is applied to PDF export too, which is not. Almost every complaint about a washed-out saved page is this checkbox.
Why some pages come out wrong
| Symptom | Cause | Workaround |
|---|---|---|
| Missing background colours | Background graphics off | Tick the setting |
| Header repeats every page | position: fixed | Reader mode, or print from a saved copy |
| Images missing | Lazy loading never triggered | Scroll the whole page first |
| Content missing entirely | Rendered by JS after snapshot | Wait for full load, then print |
| Only the first screen | Container with fixed height and scroll | Reader mode |
| Login page instead of content | Session not available to the renderer | Print from the browser, not a URL service |
The lazy-loading one is the most common and the easiest to fix: scroll slowly to the bottom of the page before pressing Ctrl+P, so every image has been requested. Nothing scrolls during print, so anything not yet loaded is simply absent.
Why a URL-to-PDF service often fails
Online services that take a URL and return a PDF are convenient and fail on a large fraction of the modern web, for a reason that is not a bug.
The service fetches the page as an anonymous visitor from a datacentre. It has no session, so anything behind a login is unavailable. It trips bot protection on many sites. It gets the cookie banner, the region redirect and sometimes a paywall rather than the article.
For anything you are logged into — an order confirmation, a bank statement, a dashboard, an internal wiki — printing from your own browser is the only approach that works, because your browser is the thing holding the session. That is also the privacy-preserving option: a URL service sees every page you send it.
Getting a cleaner result
- Use Reader mode for articles. It removes navigation, sidebars, ads and related-post grids, and it usually fixes the fixed-header problem at the same time.
- Print selection. Highlight the part you want, then Ctrl+P — several browsers offer "Selection only".
- Adjust scale to 80–90% if the layout is cutting off at the right margin. This is a responsive-breakpoint issue: the print width triggers a different layout.
- Set margins to None for a screenshot-like capture, or Default for something to be read on paper.
- Landscape for wide tables and dashboards.
If a page is genuinely resistant, a full-page screenshot is the honest fallback — most browsers have one in developer tools. You lose the text layer, which is a real cost, though Image to Text can recover it if needed.
When it saves as HTML instead
Occasionally Ctrl+S is used instead of Ctrl+P and produces an .html file plus a folder of assets. That is Save Page, not Print, and it is a different operation with a different purpose.
Save Page keeps a working local copy of the page including its stylesheets and scripts. It is useful for archiving something you want to inspect later, and it is fragile — the folder must travel with the file.
For sending to someone, or for anything that should look the same in five years, print to PDF. For keeping a technically faithful copy of a page, Save Page is the right tool. They are not competing.
Multi-page captures
For documentation, a research set or a compliance record, you often want many pages as one document.
The practical route is to save each page individually and merge them: Merge PDF combines them in the order you add them. Tedious for fifty pages, fine for ten.
Watch the file size — web pages carry large images, and twenty saved pages can be 50 MB. Compressing at 150 DPI afterwards typically takes most of that back, and the result is far more sendable.
Frequently asked questions
How do I save a webpage as a PDF?
Ctrl+P, or Cmd+P on a Mac, then set Destination to "Save as PDF". Open More settings and tick Background graphics, or the page arrives white where it should be coloured — that one checkbox accounts for most complaints about the result.
Why are the colours missing from my saved page?
Browsers omit background colours and images when printing by default, to save ink. The setting is called Background graphics and lives under More settings in the print dialog. It applies to PDF export too, which is why it catches people.
Why did some images not save?
Lazy loading — the images were never requested because you did not scroll past them, and nothing scrolls during printing. Scroll slowly to the bottom of the page first so everything loads, then print.
Why does a URL-to-PDF service give me a login page?
Because it fetches the page anonymously from a datacentre with no access to your session. Anything behind a login is unavailable to it, and many sites also serve it bot protection. Print from your own browser instead, which holds the session.
How do I stop the header repeating on every page?
It uses position: fixed, which pins to the page once there are pages. Reader mode removes it along with the rest of the navigation, and usually produces a better document for an article anyway.
What is the difference between Save Page and Print to PDF?
Save Page (Ctrl+S) produces an HTML file plus an assets folder — a working local copy that must travel together. Print to PDF produces a single fixed document. For sending or archiving, print to PDF; for inspecting the page later, save it.