Free Website Screenshot Generator
Capture full-page or above-fold screenshots of any URL. Multiple sizes, mobile/desktop. Free, instant.
What this tool does
Website Screenshot Generator delivers fast, reliable results for capture full-page or above-fold screenshots of any url. multiple sizes, mobile/d.
Designed to fit into your existing SEO and content workflow with no setup overhead.
How to use it
Five steps.
Paste the URL you want to capture
Enter any public URL. The tool fetches and renders the page in a headless Chromium browser.
Pick viewport and capture mode
Choose mobile, tablet, or desktop viewport, and full-page or above-fold capture mode.
Wait for JS-rendered content to load
The browser executes scripts and waits for the network to idle before capturing.
Download or copy the image
Save the PNG to disk or copy a hosted URL for embedding in design docs and presentations.
Use for design audits or social shares
Compare versions, archive snapshots, or use as social media thumbnails — captures are crisp at retina resolution.
When teams use it
Six common workflows.
Design and UX audits
Capture full-page screenshots of all key pages on a site or competitor sites for visual review and side-by-side comparison.
Marketing and social share thumbnails
Generate consistent thumbnails of landing pages for case studies, social posts, and email campaigns without manual cropping.
Dynamic Open Graph image generation
Render custom HTML templates and capture as 1200x630 OG images for blog posts and product pages with personalized content.
Archival and historical record
Snapshot pages periodically to track design changes, A/B tests, and content updates over time. Useful for legal and audit trails.
Cross-browser visual testing
Capture the same page in Chrome, Safari, and Firefox to detect rendering differences in CSS and font handling.
Bug reporting and QA
Embed automated screenshots in test suites and bug reports to provide reproducible visual context for engineering teams.
Platform guides
Integrate with major platforms.
Puppeteer (Node.js)
- Install: npm install puppeteer.
- Launch browser: const browser = await puppeteer.launch(); const page = await browser.newPage().
- Navigate and capture: await page.goto("https://example.com"); await page.screenshot({ path: "shot.png", fullPage: true });.
- Close browser: await browser.close(). Wrap in try/finally for resource cleanup.
Playwright (cross-browser)
- Install: npm install playwright.
- Launch any browser: const browser = await chromium.launch(); (or webkit, firefox).
- Capture with page.screenshot({ path, fullPage: true }) — same API as Puppeteer.
- Use page.setViewportSize() for mobile/desktop variants. Built-in retry logic via test runner.
Urlbox API
- Sign up at urlbox.com and grab your API key.
- Make a GET request: https://api.urlbox.com/v1/{API_KEY}/png?url=https://example.com&full_page=true.
- Pass options as query parameters: width, height, delay, full_page, retina.
- Returns image binary directly. Cache responses for 24 hours via Urlbox CDN.
Bannerbear API
- Sign up at bannerbear.com and create an account.
- Use the URL-to-screenshot endpoint: POST /v2/screenshots with body { url, css, full_page }.
- Bannerbear focuses on template-based image generation; screenshots are one feature.
- Returns a URL to the generated image, valid for 30 days.
Vercel @vercel/og (for OG images)
- Install: npm install @vercel/og.
- Create an Edge function or Next.js API route that returns ImageResponse with custom JSX.
- Vercel renders the JSX to an image at the edge in 100-300ms.
- Reference the URL as your og:image meta tag for dynamic per-page OG images.
Website Screenshot Generator vs. alternatives
Side-by-side with common screenshot tools.
| Capability | Grigora | Urlbox | BrowserShots | ScreenshotAPI | Manual capture |
|---|---|---|---|---|---|
| Full-page screenshots | Yes | Yes | Limited | Yes | Manual |
| Mobile vs desktop viewport | Yes | Yes | Desktop only | Yes | Desktop only |
| JS-rendered page support | Yes | Yes | Limited | Yes | Manual |
| Custom CSS injection | Coming soon | Paid | No | Yes | No |
| Cookie consent handling | Yes | Paid | No | Yes | Manual |
| Free with no signup | Yes | Trial only | Limited free | Trial | Yes |
| Retina / high-DPI capture | Yes | Yes | No | Yes | Manual |
| Bulk URL screenshots | Coming soon | Paid | No | Paid | No |
Common errors and fixes
Eight issues users hit.
Screenshot returns blank or skeleton-only image
Cause: Page uses client-side JS rendering and capture happened before scripts completed.
Fix: Increase wait time to 5-10 seconds or use waitUntil: "networkidle". Test with longer delays for SPA frameworks.
Lazy-loaded images missing from full-page capture
Cause: Images use Intersection Observer to load as user scrolls; headless browser does not scroll automatically.
Fix: Programmatically scroll the page from top to bottom before capture. Most APIs support fullPage: true with autoscroll.
Cookie banner overlays the content
Cause: GDPR consent banner displays on first visit and blocks the page.
Fix: Inject CSS to hide banner selectors, or click the Accept button programmatically before capture.
Screenshot shows old cached content
Cause: Browser or CDN cache returned stale version after recent site update.
Fix: Pass cache-busting query parameter (?nocache=timestamp). Some APIs support disable_cache option.
Resolution looks blurry on retina displays
Cause: Default deviceScaleFactor of 1 produces low-DPI image; retina screens expect 2x or 3x density.
Fix: Set deviceScaleFactor: 2 in screenshot config. File size doubles but image is crisp.
Capture fails on URL with HTTP basic auth
Cause: Browser does not have credentials and stops at the auth prompt.
Fix: Embed credentials in URL as https://user:pass@example.com or pass via Authorization header.
Page loads in development but fails in capture
Cause: Headless browser blocked by anti-bot protections (Cloudflare, hCaptcha) or site detects user-agent.
Fix: Set custom user-agent matching real Chrome. For aggressive anti-bot sites, use a residential proxy or whitelist headless.
Full-page screenshot truncated at fixed height
Cause: API has a max height limit (often 30000px) to prevent memory exhaustion.
Fix: Capture in sections via pageYOffset increments, then stitch images. For practical use, accept truncation or capture multiple regions.
Original data
2026 study.
Frequently asked questions
Twelve answers.
Related free tools
Other utilities.