Website Screenshot Tool

Capture a full-page screenshot of any website — free, instant, no signup

Advanced Options

Execute JS before capture — hide elements, dismiss popups, click buttons

Or try one-click:

Capturing screenshot... This typically takes 5-10 seconds.

Custom Viewport

Set any resolution from 320px to 3840px — test how your site looks on any device

Full Page Capture

Capture the entire scrollable page or just the visible viewport area

PNG, JPEG, WebP & PDF

PNG for quality, JPEG for size, WebP for smallest files, or PDF for vector documents

Dark Mode

Emulate dark color scheme — sites with dark mode support render in their dark theme

Retina (2x/3x)

Capture at 2x or 3x device scale for crisp high-DPI screenshots

Element Capture

Target a specific element with a CSS selector — capture just the hero, header, or any component

Custom Delay

Wait for JavaScript animations, lazy loading, or dynamic content before capturing

Ad Blocking

Block ads, trackers, and cookie consent banners for clean, distraction-free screenshots

Custom JavaScript

Run JS before capture — dismiss popups, hide elements, click buttons, set page state

API Access

Integrate screenshots into your workflow with our REST API — free tier available on RapidAPI

Dashboard & Report Capture

Automate screenshots of Power BI, Tableau, Grafana, or any web dashboard for reports, emails, and archives.

Power BI — full dashboard capture with 5s render delay
Tableau — public or embedded viz screenshots
Grafana — panel snapshots for incident reports
Google Data Studio — scheduled report images

Tip: Use delay=5000 for dashboards (JS needs time to render charts). API key holders get up to 30s delay for complex dashboards.

Example: Power BI dashboard capture
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://app.powerbi.com/view?r=YOUR_REPORT_ID&width=1920&height=1080&full_page=true&delay=5000&block_ads=true&format=png" \
  -H "X-API-Key: YOUR_KEY" -o dashboard.png

Common Use Cases

✓ Dashboard capture (Power BI, Tableau, Grafana)
✓ Research and web archival
✓ Responsive design testing
✓ Social media preview cards
✓ Website thumbnail generation
✓ Visual regression monitoring
✓ Client presentation mockups
✓ Competitor page archival
✓ Bug report documentation
✓ PDF export for archival and printing
✓ AI conversation capture (ChatGPT, Gemini)

Frequently Asked Questions

What screenshot resolutions are supported?

You can set any viewport width from 320px to 3840px (4K) and any height from 200px to 3840px. Common presets include Desktop (1280x800), Full HD (1920x1080), iPhone (375x812), and iPad (768x1024).

What is the difference between viewport and full page capture?

Viewport capture takes a screenshot of only the visible area at your chosen resolution. Full page capture scrolls the entire page and stitches together a complete screenshot from top to bottom, regardless of page length.

Is there a rate limit on the free tool?

Yes, the free web tool is rate-limited to prevent abuse. For higher volume needs, automated capture, or integration into your applications, use the Screenshot API on RapidAPI which offers free and paid tiers.

Should I choose PNG or JPEG?

PNG is lossless and best for crisp text, UI elements, and when you need pixel-perfect accuracy. JPEG produces smaller files and is better for photographs or when file size matters more than perfect quality.

How do I capture a screenshot in dark mode?

Set dark_mode=true in your request. This emulates prefers-color-scheme: dark, so any website that supports dark mode will render in its dark theme. Try it in the Advanced Options above, or via API: /api/screenshot?url=example.com&dark_mode=true

What is retina scaling and when should I use it?

Retina scaling (scale=2 or scale=3) increases the device pixel ratio, producing higher-resolution screenshots. Use 2x for sharp screenshots on retina displays, or 3x for ultra-high-DPI output. Note that 2x screenshots are roughly 4x larger in file size due to doubled width and height in pixels.

Can I capture just one element on a page?

Yes! Use the selector parameter with any CSS selector. For example, selector=nav captures just the navigation bar, selector=#hero captures an element with id="hero". This is useful for capturing logos, headers, or specific UI components without the rest of the page.

How do I handle JavaScript-heavy pages?

Use the delay parameter to wait for JavaScript to finish rendering. Anonymous requests: max 10,000ms (10s). API key holders: max 30,000ms (30s) — ideal for slow-loading dashboards like Power BI, Tableau, or Grafana. For example, delay=3000 waits 3 seconds after page load before capturing.

How do I remove cookie banners and ads from screenshots?

Add block_ads=true to your request. This blocks 25+ ad networks, trackers, and cookie consent providers (including Google Ads, Facebook, CookieBot, OneTrust, and more) before the page loads. For stubborn overlays, combine with the js parameter to remove specific elements: js=document.querySelector('.cookie-banner')?.remove()

What is WebP and when should I use it?

WebP is a modern image format that produces files roughly 49% smaller than PNG with minimal quality loss. Set format=webp in your request. Use WebP when file size matters — for thumbnails, web galleries, or bandwidth-sensitive applications. Adjust quality with the quality parameter (1-100, default 80). For pixel-perfect accuracy, stick with PNG.

Can I run custom JavaScript before the screenshot is taken?

Yes! Use the js parameter to execute JavaScript on the page before capture. This lets you dismiss popups, hide elements, click buttons, or set page state. For example: js=document.querySelector('.modal')?.remove() removes a modal overlay. Maximum 2,000 characters. The script runs after page load with a 500ms settling delay before capture.

Advanced JS recipes: dashboards, SPAs, and element debugging

Remove cookie banners and overlays:

js=document.querySelectorAll('[class*="cookie"],[class*="consent"],[id*="gdpr"]').forEach(e=>e.remove())

Wait for and screenshot a specific dashboard panel:

js=document.querySelectorAll('.sidebar,.header,.nav').forEach(e=>e.remove());document.querySelector('.dashboard-panel').style.margin='0'

Debug element positions (overlay bounding boxes):

js=(function(){let o=[];document.querySelectorAll('.target-class').forEach(el=>{let r=el.getBoundingClientRect();if(r.width>0)o.push(el.tagName+'|'+Math.round(r.left)+','+Math.round(r.top)+','+Math.round(r.width)+'x'+Math.round(r.height))});let d=document.createElement('div');d.style.cssText='position:fixed;top:0;left:0;z-index:99999;background:rgba(255,255,0,.9);color:#000;font:16px monospace;padding:8px';d.textContent=o.join('\\n');document.body.appendChild(d)})()

Click a button before capture (e.g., expand collapsed sections):

js=document.querySelector('button[aria-expanded="false"]')?.click()

Combine js with delay=5000 for pages that need time to render after JS execution (e.g., Power BI, Tableau, Grafana dashboards).

Can I export a webpage as PDF?

Yes. Set format=pdf to generate an A4 PDF with background graphics preserved. This uses Chromium's print-to-PDF engine, producing a proper vector PDF (not a screenshot embedded in a PDF). Ideal for archiving articles, generating reports, or creating printable versions of web pages. Example: /api/screenshot?url=example.com&format=pdf

Can I crop a specific region of the page?

Yes. Use the clip parameter with x,y,width,height values in pixels. For example, clip=0,0,800,400 captures an 800x400 region from the top-left corner. This is useful for capturing hero sections, specific charts, or above-the-fold content without needing CSS selectors. Note: clip is ignored when full_page=true.

Can I capture a website in a different language?

Yes. Use the accept_language parameter (or its alias lang) to set the browser language. For example, lang=fr-FR captures the French version of a site, lang=de-DE for German, lang=ja-JP for Japanese. This sets both the Accept-Language HTTP header and the browser locale, so sites that auto-detect language will render in the requested language.

API Integration

Capture screenshots programmatically — integrate into your apps, scripts, or pipelines:

curl

# Basic screenshot
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&format=webp" -o screenshot.webp

# Use viewport presets instead of width/height:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&viewport=mobile" -o mobile.webp
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&viewport=og" -o og-image.webp
# Presets: mobile, tablet, desktop, desktop_hd, macbook, iphone_14, pixel_7, ipad_pro, og, twitter, linkedin

# Crop a specific region (x,y,width,height):
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&clip=0,0,800,400" -o hero-section.webp

# Export as PDF (A4 vector document, not a screenshot):
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&format=pdf" -o page.pdf

Python

import urllib.request
url = "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&width=1280&format=png"
urllib.request.urlretrieve(url, "screenshot.png")
print("Screenshot saved to screenshot.png")

JavaScript (Node.js)

const fs = require('fs');
const resp = await fetch('https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&format=png');
const buf = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync('screenshot.png', buf);

JavaScript (Browser)

// Embed directly in an <img> tag — no fetch needed:
const img = document.createElement('img');
img.src = 'https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&width=800&format=webp';

Go

resp, _ := http.Get("https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&format=png")
defer resp.Body.Close()
out, _ := os.Create("screenshot.png")
defer out.Close()
io.Copy(out, resp.Body)

Need Screenshots at Scale?

This free tool is rate-limited to 2 requests/minute. For automated screenshots, thumbnail generation, or high-volume capture:

Get a Free API Key — 50 requests/day, instant:

Need more? RapidAPI — PRO 30 req/min ($9.99/mo) | ULTRA 60 req/min ($29.99/mo)

Compare screenshot APIs → | Full pricing →