Paste HTML and CSS, get a PNG or JPG back. Rendered in real Chromium, so flexbox, grid, web fonts and gradients look exactly like in your browser. Free, no signup.
Free to try: 5 renders/day. The image height grows to fit your content.
POST your HTML to /v1/screenshot. Every option from this page is a parameter: width, full_page, format (png, jpeg, webp), omit_background, device_scale_factor, and selector to capture one element only.
curl -X POST https://shotmint.creasework.com/v1/screenshot -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"html": "<h1 style=\"color:#4f46e5\">Hello</h1>", "width": 800, "full_page": true, "omit_background": true}' -o hello.png
Node.js:
const res = await fetch('https://shotmint.creasework.com/v1/screenshot', {
method: 'POST',
headers: { 'X-API-Key': process.env.SHOTMINT_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ html, width: 1080, full_page: true, format: 'png' }),
});
await fs.promises.writeFile('card.png', Buffer.from(await res.arrayBuffer()));
html2canvas re-implements CSS in JavaScript, so it gets many layouts wrong (shadows, filters, web fonts, some flex and grid cases) and it can't run in your backend. A real browser renders exactly what the user would see, and an API means you don't run Chromium yourself.
Pay as you go: €5 for 2,000 renders, no subscription, and credits never expire. Get 100 free API renders