Full Page Screenshot
The whole scrollable document as one image, with lazy content loaded first.
One image of the entire document, after scrolling through it so lazy images load.
No result yet
Complete the settings and run the tool. Images, PDFs, text, and video all preview in this panel.
Questions
- Why do some pages come back shorter than expected?
- Infinite-scroll pages never end, so the capture stops at the engine's height ceiling. The API exposes `full_page_max_height` to choose your own stopping point.
- How does it handle sticky headers?
- The page is scrolled and returned to the top before capture, so a sticky header appears once rather than repeating down the image.
Need this in your own code?
This tool is one call to the PageCapture API. The free plan gives you 100 captures a month with every feature unlocked, and no card.
Related tools
Full-page screenshots that survive lazy loading
Long pages break naive full-page capture. Scroll-through loads what is missing, and slicing handles what Chromium cannot render in one texture.
Scroll-through first
Walks the page so lazy images load, then returns to the top before capturing.
Automatic slicing
Above roughly 16,000 px Chromium starts returning blank or truncated images. full_page_algorithm=default switches to slice-and-stitch before that, with no parameter to set.
A ceiling you choose
full_page_max_height is the right answer to infinite scroll — stop where the useful content ends.
Individual slices
full_page_slices=true returns the bands as well, for pipelines that paginate long captures.
Move the same workflow into one API call.
The free tool and your integration use the same public endpoint. The API adds the controls, authentication and delivery options needed in production.
Open the API playgroundimport os, requests
response = requests.post(
"https://api.pagecapture.dev/v1/take",
headers={"X-Access-Key": os.environ["PAGECAPTURE_KEY"]},
json={
"url": "https://example.com/blog",
"full_page": True,
"full_page_scroll": True, # trigger lazy images first
"full_page_scroll_delay": 400,
"full_page_max_height": 20000, # stop runaway pages
"format": "png",
},
timeout=120,
)
open("full.png", "wb").write(response.content)