One-Click Webpage Screenshot (Bookmarklet + API Alternatives)

Drag a 200-character bookmarklet to your bookmarks bar and click it on any URL to capture a full-page screenshot. It calls a free screenshot API and drops the image into a new tab. Plus the four screenshot APIs I actually use in 2026 when I need more control.

I shipped the original 2020 version of this snippet because I was constantly needing client-site screenshots for presentations and did not want to open a dedicated app. Five years later the bookmarklet still works, but the service it called changed pricing, so here is the updated 2026 shortlist with honest pros and cons. The bookmarklet code itself is three lines and it uses any public screenshot endpoint.

Live tool

Screenshot bookmarklet builder

Pick a screenshot API, paste your key, drag the generated bookmarklet to your bookmarks bar. One click screenshots any tab.

Your bookmarklet

How to use: Drag the 📸 Screenshot this page button to your browser’s bookmarks bar. Click it on any tab to open a full-page screenshot in a new tab.

What this snippet does

  • Provides a drag-to-bookmarks JavaScript bookmarklet that captures the current tab’s URL
  • Opens the resulting PNG in a new tab — right-click to save, drag into Slack/Notion, done
  • Works on any browser that supports bookmarks (Chrome, Safari, Firefox, Arc, Orion)
  • Lists four production screenshot APIs with current 2026 pricing and latency notes
  • Covers the Cloudflare Browser Rendering option for engineers who want a self-hostable path
  • No extensions, no desktop apps, no sign-ups for the basic bookmarklet

Install and use

Create a new bookmark on your browser. Paste the JavaScript below into the URL field. Visit any page and click the bookmark — a new tab opens with the full-page screenshot. If you hit rate limits, swap the API endpoint for one of the alternatives listed below (most have free tiers up to 100 screenshots per month).

javascript:(function(){
  var u = encodeURIComponent(location.href);
  var api = 'https://api.screenshotone.com/take?access_key=YOUR_KEY&url=' + u + '&full_page=true&format=png';
  window.open(api, '_blank', 'noopener');
})();

How it works

The bookmarklet is a javascript: URL — the browser executes it against the current page. We URL-encode location.href, append it to a screenshot API endpoint, and open the result in a new tab. The API renders the page headlessly (most use Playwright or Puppeteer under the hood), takes a screenshot, and returns a PNG. Because the API handles the render, you don’t need a browser extension with DOM-access permissions — security-conscious setups prefer this for client-site review.

The screenshot APIs I actually use in 2026

  • ScreenshotOne (screenshotone.com) — Best overall balance. Free tier 100/month, Pro $17/month for 2,000. ~1.5s average render, clean API, blocks ads automatically.
  • Urlbox (urlbox.io) — Best for design polish. $9/month starter. Custom viewport sizes, CSS/JS injection, dark-mode toggle, high-DPI up to 4x — what I use for client deliverables.
  • ApiFlash (apiflash.com) — Budget pick. Free tier 100/month, paid from $7. Slower (~3s) but cheapest per-screenshot if you’re running volume.
  • Cloudflare Browser Rendering — Self-hostable. Included in Workers Paid at $5/month for 100k screenshots. Requires a Worker script (10 lines of TypeScript). What I run for automated product-page screenshots on gauravtiwari.org.

FAQs

Can I screenshot logged-in pages?

Not with the bookmarklet alone — the screenshot API fetches the URL fresh without your cookies. For authenticated screenshots, use Urlbox’s cookies parameter or a Cloudflare Worker that forwards your session cookie. Never hand your session cookie to a random screenshot service.

Does this work on localhost?

No. The API fetches the URL from its own infrastructure, which cannot reach your local machine. For local screenshots, install Playwright locally (npx playwright install) and run npx playwright screenshot http://localhost:3000 out.png.

What about full-page scrolling screenshots?

All four APIs above support full_page=true which scrolls and stitches. ScreenshotOne and Urlbox handle lazy-loaded images and infinite scroll best — ApiFlash sometimes cuts off lazy images below the fold.

Can I automate this from WordPress?

Yes. Use wp_remote_get() against the API endpoint and save the PNG to the media library. Useful for auto-generating Open Graph images or client reporting screenshots.

Is there a free self-hosted option?

Yes — a small Node.js + Playwright script in ~30 lines. But between managing the headless Chromium install, keeping it patched, and handling concurrent renders, it’s rarely cheaper than the $5 Cloudflare Workers tier for anything below 100k screenshots a month.

Privacy-wise, where does the image get stored?

ScreenshotOne and Urlbox cache screenshots on their CDN with a signed URL (default 7 days, configurable). ApiFlash serves directly, no caching. For client-confidential screenshots, set cache=false on ScreenshotOne or use Cloudflare Browser Rendering where the image lives only on your infrastructure.