How to Take a Full-Page Website Screenshot with Cloudinary
Cloudinary can generate website screenshots with its URL2PNG add-on, but the current guide does not verify a full-page capture setting. Here is how to set up the documented workflow and check that limitation.
Cloudinary can generate website screenshots through its URL2PNG Website Screenshots add-on. However, the current documentation reviewed for this guide demonstrates fullpage=false and does not establish a supported setting for capturing the entire page. So the practical answer to “How do I take a full-page screenshot with Cloudinary?” is: set up URL2PNG for a documented viewport screenshot, then verify the current add-on options before relying on full-page output.
URL2PNG is a hosted workflow, not a browser menu that captures the page on your computer. Cloudinary generates the screenshot from a public website URL, then caches and delivers it through Cloudinary’s CDN. See the Cloudinary URL2PNG add-on documentation for the current options and setup details.
What you need before you start
- A Cloudinary account.
- Registration for the URL2PNG Website Screenshots add-on.
- A public target website URL that the screenshot service can load.
- A Cloudinary SDK or a correctly constructed delivery URL.
Cloudinary’s guide describes a delivery URL with url2png as the delivery type, the target website URL as the public ID, and options after /url2png/. Options in the documented form are separated by |. The guide includes viewport, user-agent, and delay options. Use the current option reference to confirm exact accepted values before using them in production.
Generate a documented viewport screenshot
- Register for the URL2PNG add-on in your Cloudinary account.
- Choose the public website URL you want to capture.
- Choose a viewport and user-agent value appropriate to the desktop or mobile layout you need.
- Build the URL through a Cloudinary SDK helper or use the add-on’s documented URL pattern.
- Sign the URL or eagerly generate the transformation, as required by your account settings.
The guide’s example uses a mobile viewport and user-agent and explicitly sets fullpage=false. It is a viewport screenshot example, not proof that a full-page option is available or that a particular full-page parameter works.
https://res.cloudinary.com/CLOUD_NAME/url2png/viewport=WIDTHxHEIGHT|user_agent=USER_AGENT|fullpage=false/https://example.com
This is a pattern, not a ready-to-use signed URL. Replace the placeholders with your Cloudinary cloud name, target URL, and supported option values. The target URL must be public. Do not copy an unsigned URL into production unless your account security settings permit unsigned add-on transformations.
Signing and eager generation
Cloudinary states: “By default, delivery URLs that use this add-on either need to be signed or eagerly generated.” A signed URL controls access to a transformation; eager generation creates the transformed asset ahead of delivery. The account owner can enable unsigned add-on transformations in Console security settings, but that changes the account’s security posture.
- Signed URL: generate it with an authenticated Cloudinary SDK or API. Keep the API secret on a server. Never put it in browser-side JavaScript or ship it to an untrusted client.
- Eager generation: use Cloudinary’s authenticated workflow to generate the asset in advance, then deliver the result according to your account configuration.
- Unsigned delivery: use only when the relevant Console security setting allows it and public transformation access is acceptable for your use case.
Cloudinary’s CLI documentation includes a signed URL2PNG command example. It illustrates signed add-on delivery and image transformations, but it is not a full-page capture recipe.
Viewport, user agent, and delay options
The currently reviewed URL2PNG guide names these rendering controls:
| Option | What it controls | When to use it |
|---|---|---|
viewport |
The browser viewport dimensions used for rendering. | Match the layout you want to inspect, such as a desktop or narrow mobile viewport. |
user_agent |
The user-agent string sent during the page request. | Use a mobile or desktop user-agent when the site serves different markup or styles by device. |
delay |
A delay before the screenshot is captured. | Allow time for client-rendered content or animations to settle, where the add-on documentation supports the chosen value. |
Do not assume that changing the viewport makes the capture full-page. Viewport size describes the visible browser area; full-page behavior is a separate capture capability and must be confirmed in the current URL2PNG option list. The current evidence does not establish its exact setting, supported page height, or behavior with lazy-loaded content.
Apply Cloudinary transformations after capture
Once Cloudinary has created the screenshot asset, its image transformation workflow can resize, crop, or otherwise transform the result. Cloudinary recommends using SDK helpers to construct delivery URLs. The general delivery URL structure includes the asset type and delivery type, optional transformations, version, and public ID. See Cloudinary’s image transformations documentation for current URL construction and SDK details.
An older Cloudinary integration article demonstrates crop, grayscale, border, and text overlay transformations on URL2PNG screenshots. Treat that post as historical illustration; use the current transformation documentation for syntax and behavior.
Resizing or cropping a viewport screenshot does not recover page content that was never captured. Confirm the capture dimensions and full-page option first, then apply output transformations.
How to verify full-page support
- Open the current URL2PNG add-on documentation and find the current option list.
- Confirm whether full-page capture is supported and record the exact parameter spelling and accepted values.
- Check any documented maximum dimensions, page-height limits, or restrictions for lazy-loaded pages.
- Try the documented setting on a test page with content extending below the fold.
- Inspect the returned image dimensions and confirm that the bottom of the page is present before depending on it.
The sources reviewed for this article do not verify a current full-page-on parameter. Do not rely on a guessed fullpage=true URL. The older Cloudinary blog also shows fullpage=false, so it does not resolve the missing current recipe. See the historical URL2PNG integration article only for its illustrative transformation examples.
Common problems and fixes
| Symptom | Likely cause | What to do |
|---|---|---|
| The delivery request is rejected or does not return the expected asset. | The add-on is not registered, or the URL is malformed. | Confirm add-on registration and compare the URL structure with the current Cloudinary guide. |
| A signature or authorization error appears. | The add-on URL is unsigned when signing is required, or the signature was not generated for the exact URL. | Generate the signed URL with an authenticated SDK/API, or eagerly generate the transformation. Check whether unsigned add-on transformations are enabled only if that is intentional. |
| The screenshot shows the wrong layout. | The viewport or user-agent does not match the desired desktop/mobile rendering. | Set both based on the target layout and check the site’s responsive behavior. |
| Dynamic content is missing. | The page may need more render time, or content may depend on client-side behavior the capture request does not reproduce. | Check the documented delay option and test with the target page. Do not assume a delay can bypass authentication or other access controls. |
| The output only contains the top portion of the page. | The documented example uses fullpage=false, or the requested full-page option is unsupported or incorrect. |
Verify the current full-page option and limits in Cloudinary’s add-on documentation. Do not infer the syntax. |
| The screenshot URL works for one user but not another. | The URL may require signing or the account may restrict unsigned add-on transformations. | Use the account’s configured signed or eager workflow and avoid exposing signing secrets. |
Performance, reliability, and cost considerations
Cloudinary documents that URL2PNG creates screenshots on the fly, then caches and delivers them through its CDN. That can make subsequent delivery of the same generated asset different from the initial generation path, but the reviewed sources provide no timing benchmark, cache lifetime, quota, page-length limit, or current add-on price. Check your account and current add-on terms for those details.
- Rendering time: larger or script-heavy sites can take longer to become ready; use only documented wait controls and validate the resulting capture.
- Repeat requests: Cloudinary says screenshots are cached and delivered through its CDN. Confirm the account’s cache and invalidation behavior when the target page changes.
- Reliability: a screenshot depends on the target being publicly reachable and rendering successfully. A screenshot workflow cannot guarantee access to pages behind login or bot challenges.
- Cost: the dossier does not establish current URL2PNG pricing or included usage. Check Cloudinary’s current account/add-on pricing before estimating production spend.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. It uses one GET request to return PNG, JPEG, WebP, or PDF, and supports full-page capture with lazy images loaded, alongside viewport and device options. Its parameter names also accept those used by other screenshot APIs, which can make migration easier. See the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture, with each cleanup step configurable. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; response headers report the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots.
Sign up for ScreenshotNeo’s free 1,000 screenshots a month, with no card required.
FAQ
Can Cloudinary URL2PNG definitely take a full-page screenshot?
The sources reviewed do not establish that. The current guide’s example explicitly sets fullpage=false; check the live option documentation for a verified full-page setting before building around it.
Can I use the URL2PNG delivery URL directly in frontend code?
Only if your account configuration permits the URL to be used that way. By default, add-on delivery URLs need to be signed or eagerly generated. Keep API secrets server-side.
Can Cloudinary crop a screenshot after it is captured?
Yes. Cloudinary’s image transformation workflow supports post-capture transformations. Use its current documentation or SDK helpers to construct the transformation URL.
Does this workflow capture a page that requires login?
The reviewed URL2PNG documentation covers public website URLs and does not establish an authenticated-page capture workflow. Do not assume it can access private pages.


