A JavaScript library that redraws the page's DOM onto a canvas inside the visitor's browser — no server, and no real screenshot.
html2canvas costs nothing, needs no server and no API key, and it is the only option here that can capture what the visitor actually sees: a filled-in form, a logged-in dashboard, a chart they configured themselves. The image never leaves their browser unless you send it somewhere. For a "download as PNG" button on simple, mostly flat layouts, it is the right tool.
| What | html2canvas | Shareglint |
|---|---|---|
| Price | Free, MIT licence | 100 renders a month free (watermarked), then $9 for 2,000 |
| How the image is made | Redraws the DOM with its own CSS implementation; its docs warn it "may not be 100% accurate" | Chrome renders the page or template and takes a real screenshot |
| Where it runs | In the visitor's browser | On our servers, called with one HTTP request from any language |
| CSS support | A published list; box-shadow, filter, object-fit, mix-blend-mode, writing-mode and repeating gradients are unsupported | Everything Chrome renders |
| Images from other domains | Need CORS or a proxy, otherwise the canvas is tainted | A real browser loads them like any page does |
| The user's own screen | Yes — filled-in forms, logged-in views, whatever is on the page | No — public URLs and the data you send only |
| Sharing and og:image | The image exists in the browser until you upload it somewhere | A stable file URL you can put straight into og:image |
| Maintenance | Latest release 1.4.1, January 2022 | A service we keep running |
html2canvas pricing (free (MIT licence), runs in your visitor's browser; latest release 1.4.1, January 2022) comes from their own public page, checked 2026-11. If something has changed — tell us and we will fix it.
You want a client-side "save as image" button for the user's current view, the layout sticks to CSS on its supported list, and no copy of the image is needed on a server.
The image must look exactly as Chrome renders it, must be made without a visitor's browser (OG images, emails, bulk jobs), or must be shared through a URL.
Swap the call to their API (or your own browser code) for one request to the screenshot endpoint: the page URL plus the options you used — full page, viewport or device, an element selector, cookie-banner and ad blocking. A viewport screenshot uses 1 of your monthly images, a full page 2.
curl -X POST "https://shareglint.com/v1/screenshots?wait=true" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","full_page":true,"block_cookie_banners":true}'
Bannerbear · Placid · HTMLCSStoImage · Orshot · @vercel/og · Cloudinary · ScreenshotOne · Urlbox · ApiFlash · Templated · APITemplate.io · RenderForm · Imejis.io · Abyssale · Puppeteer