Website Screenshot Generator Online
Generate a website screenshot online in seconds, choose full-page or device views, export the right format, and automate captures with an API.
Direct answer: To generate a website screenshot online, open a browser-based capture tool, paste a public HTTP or HTTPS URL, choose viewport or full-page mode, select desktop or mobile dimensions, choose PNG or JPEG (and PDF if offered), then download the result. For repeated, bulk, authenticated, or app-based captures, use an API instead of a one-off web form.
Choose the right capture method
| Need | Best approach | What to check |
|---|---|---|
| One public page | Online generator | URL access, full-page mode, output format |
| Desktop or mobile preview | Online generator with viewport presets | Width, height, zoom, device scaling |
| PDF document | Tool with explicit PDF export | Paper size, margins, orientation, page ranges |
| Recurring or bulk jobs | Screenshot API or scheduler | Batch limits, retention, rate limits, webhooks |
| Private or logged-in pages | Local browser automation or an API that supports credentials | Cookies, headers, network access, security policy |
WebsiteScreen documents no-signup browser capture with full-size and full-page settings, desktop/tablet/mobile presets, custom dimensions, zoom and output scaling. WebsiteScreen and ScreenshotAPI.net describe online and API workflows. WebShot Online lists PNG, JPG and PDF output, while URLpipe documents image-only output. Treat these as each vendor’s documented capabilities and verify a representative page before relying on visual fidelity.
Generate a screenshot online: step by step
- Open an online website screenshot generator.
- Paste the complete public URL, including
https://. - Choose viewport for the visible browser area or full page for the scrollable document below the fold.
- Select a desktop, tablet or mobile preset, or enter a custom width and height.
- Set zoom or output scale when the tool provides it. These are rendered viewport choices, not proof that every physical phone and browser will match.
- Choose PNG for lossless UI details, JPEG for smaller photographic files, WebP when supported, or PDF when you need a document.
- Start the capture, wait for the page to finish loading, inspect the result, and download it.
Viewport versus full-page screenshots
A viewport screenshot contains only the selected browser area. A full-page screenshot is intended to include content below the fold. Long pages may need scrolling to trigger lazy-loaded images before the image is composed; sticky headers, animations and print CSS can also change the result. ScreenshotAPI.net documents these as factors in its own workflow.
Desktop, tablet and mobile dimensions
Responsive layouts change at breakpoints. Record the exact width, height, device scale and zoom with each capture so that comparisons are repeatable. A mobile preset approximates a viewport; it does not reproduce every browser, operating-system font or hardware difference.
PNG, JPEG, WebP and PDF
- PNG: sharp text, transparent pixels where supported, larger files.
- JPEG: smaller files for photographic pages, with lossy compression.
- WebP: compact modern image output when the consumer supports it.
- PDF: useful for print or archival documents; confirm paper size, margins, orientation and page-range controls.
Automate locally with a browser
For pages that need custom JavaScript, selector waits or authenticated sessions, run a browser you control. The example below uses Playwright and captures a full page.
npm install playwright
npx playwright install chromium
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 });
await page.goto('https://example.com', { waitUntil: 'networkidle', timeout: 90000 });
await page.screenshot({ path: 'example-full.png', fullPage: true });
await browser.close();
})();
For a mobile render, change the viewport and device scale. For a single element, locate it and call locator.screenshot(). For lazy content, scroll or wait for a selector before capturing. Keep credentials in environment variables and avoid logging cookies or authorization headers.
Use the ScreenshotNeo API
ScreenshotNeo turns one GET request into a PNG, JPEG, WebP or PDF. Its options cover full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets or any viewport, retina scale, PDF paper size/margins/landscape/page ranges, custom CSS and JavaScript, click-before-capture, hide selectors, selector/delay/network-idle waits, blocked ads/trackers/requests/resource types, custom headers/cookies/user agent/Authorization, timezone, geolocation, transparent backgrounds, resizing, configurable caching TTL, signed image links, async jobs with signed webhooks, bulk capture for 100 URLs per call, a usage API and an OpenAPI specification. Common parameter names from other screenshot APIs also work.
Clean-up steps accept consent banners and remove more than 60 known consent platforms, newsletter popups and chat widgets before capture; each step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed. The response identifies the result with X-Page-Verdict and X-Billed headers. Every feature is on every plan: 1,000 free shots per month without a card; paid plans start at $5 for 3,000 shots. Yearly billing gives two months free. See the ScreenshotNeo API documentation for the complete parameter list.
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(`HTTP ${res.status}`);
require('fs').writeFileSync('shot.webp', Buffer.from(await res.arrayBuffer()));
Useful automation patterns
- Use a deterministic viewport, timezone and locale for visual regression.
- Wait for a stable selector or network idle instead of relying only on a fixed delay.
- Hide cookie banners, sticky navigation and chat launchers when they obscure content.
- Block analytics, ads and third-party fonts only when doing so matches the purpose of the capture.
- Use caching with a deliberate TTL for unchanged pages; disable or shorten it when freshness matters.
- For many URLs, use bulk capture (up to 100 URLs per call) or asynchronous jobs and signed webhooks.
- Read
X-Page-VerdictandX-Billedbefore storing or retrying a result.
Public URLs, private pages and access limits
Most online generators document public HTTP/HTTPS pages. URLpipe explicitly refuses private and intranet addresses and cannot click, log in or fill forms before capture. A URL that works in your browser may still be unreachable from a hosted service because of a firewall, DNS policy, robots controls or authentication. For private pages, use local automation or a service that explicitly supports your authentication method.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Blank or white image | Page failed, timed out or requires interaction | Open the URL directly, increase the wait, wait for a selector, or run a browser with the required session. |
| Cookie banner covers the page | Consent UI loaded after navigation | Accept or hide it before capture; use ScreenshotNeo’s consent and popup removal or disable individual cleanup steps. |
| Images are missing below the fold | Lazy loading was never triggered | Use full-page capture that scrolls first, or scroll through the page before the screenshot. |
| Sticky header is repeated | Fixed-position element is composed on every segment | Hide the selector, apply capture CSS, or validate the tool’s full-page compositor. |
| Mobile layout looks wrong | Viewport, scale or user agent differs from the target | Set exact width and height, device scale and (when supported) a device preset/user agent. |
| 403, CAPTCHA or bot-check page | The site challenged the capture browser | Use an allowed access path, authenticate appropriately, or capture a page that permits automation. Do not attempt to bypass access controls. |
| PDF pagination is poor | Print CSS, paper size or margins are unsuitable | Set paper and margins explicitly and inspect print styles; use an image capture when pixel fidelity matters. |
| Request is billed unexpectedly | The result was considered a clean capture | Inspect X-Page-Verdict and X-Billed; cache stable pages and avoid retry storms. |
Performance, reliability and cost
Capture time is driven by DNS, server response, JavaScript, images, fonts and third-party resources. Full-page and PDF jobs usually do more work than a viewport image. Set a bounded timeout, use selector or network-idle waits, and retry transient failures with backoff. Keep concurrency within the provider’s documented limits and queue large batches.
For cost control, cache pages whose content has not changed, block unnecessary trackers, use bulk calls for collections, and distinguish failed or bot-check results from clean captures. ScreenshotNeo bills only clean shots; bot checks/CAPTCHAs, blank pages, timeouts, failed loads and cache hits cost nothing. Its plans are Free (1,000/month), Starter $5 (3,000), Growth $15 (15,000), Pro $39 (60,000), Scale $99 (250,000) and Business $249 (1,000,000).
Or skip the browser setup
Call ScreenshotNeo directly when you want a repeatable capture without maintaining Playwright or another browser. Cookie banners, newsletter popups and chat widgets are removed before the shot. Bot checks, blank pages and failed loads are never billed. An MCP server lets Claude, Cursor and other MCP clients use take_screenshot, get_page_info and capture_pdf. You get 1,000 screenshots a month free with no card, and paid plans start at $5 for 3,000.
curl -G 'https://api.screenshotneo.com/v1/shot' -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Create a free ScreenshotNeo account to get started.
FAQ
Can I capture an entire long webpage?
Yes, if the generator offers full-page mode. Confirm that it loads lazy content and handles fixed headers correctly.
Can I make a screenshot of a private dashboard?
Only when the capture method can reach the page and use its authentication. Public online tools commonly support public URLs only.
Which format should I download?
Use PNG for crisp interface details, JPEG for smaller photographic files, WebP for compact modern delivery, and PDF for paginated documents.
Does a mobile preset prove the page works on every phone?
No. It renders a selected viewport and scale. Test important breakpoints on the browsers and devices you support.
Can I schedule screenshots?
Use an API or scheduler that documents recurring jobs. Check retention, allowances, rate limits and whether the service supports bulk capture.
How do I compare screenshots over time?
Keep URL, viewport, scale, timezone, wait rules, output format and capture timestamp consistent, then compare the resulting files with a visual-diff tool.


