Capture a full-page screenshot of any website — free, instant, no signup
Execute JS before capture — hide elements, dismiss popups, click buttons
⚙ Capturing screenshot... This typically takes 5-10 seconds.
Set any resolution from 320px to 3840px — test how your site looks on any device
Capture the entire scrollable page or just the visible viewport area
PNG for quality, JPEG for size, WebP for smallest files, or PDF for vector documents
Emulate dark color scheme — sites with dark mode support render in their dark theme
Capture at 2x or 3x device scale for crisp high-DPI screenshots
Target a specific element with a CSS selector — capture just the hero, header, or any component
Wait for JavaScript animations, lazy loading, or dynamic content before capturing
Block ads, trackers, and cookie consent banners for clean, distraction-free screenshots
Run JS before capture — dismiss popups, hide elements, click buttons, set page state
Integrate screenshots into your workflow with our REST API — free tier available on RapidAPI
Automate screenshots of Power BI, Tableau, Grafana, or any web dashboard for reports, emails, and archives.
Tip: Use delay=5000 for dashboards (JS needs time to render charts). API key holders get up to 30s delay for complex dashboards.
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
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).
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.
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.
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.
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
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.
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.
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.
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()
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.
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.
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).
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
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.
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.
Capture screenshots programmatically — integrate into your apps, scripts, or pipelines:
# 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
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")
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);
// 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';
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)
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)