Thum.io Alternatives: The Best Screenshot API to Replace image.thum.io (2026)
The best thum.io alternatives for developers — how image.thum.io works, its free tier and limits, and a production screenshot API with full-page capture, PDF, and dark mode from one request.
Last updated: 2026-07-21
Try ScreenshotAPI free
200 free screenshots/month. No credit card required.
The best thum.io alternative is a dedicated screenshot API — ScreenshotAPI — that returns finished PNG, JPEG, WebP, or PDF bytes from a single authenticated GET request, with full-page capture, dark mode, and ad/cookie-banner blocking on every plan and a free tier of 200 screenshots per month (no credit card). image.thum.io is excellent for zero-setup <img>-tag thumbnails on its free 1,000-impressions/month tier, but it renders at a fixed 1200×1200 viewport, gates full-page capture behind paid plans, and streams an animated placeholder while an un-cached URL renders — so for production screenshots you usually want a purpose-built API.
If you found this page, you are probably already using image.thum.io/get/... in an <img> tag and have hit one of its edges: you need a full-page capture without upgrading, a PDF, a specific viewport size, or a guarantee that the response is the real screenshot and not the loading placeholder. This guide explains exactly how thum.io works today, where it stops, and how to move the same capture to a dedicated API with one line of code.
How image.thum.io works
thum.io is a website-screenshot service you call by URL — there is no SDK and, on the free tier, no API key. You embed the target URL directly in an image tag (facts below verified against thum.io, 2026-07-21):
html<!-- Basic thum.io capture --> <img src="//image.thum.io/get/https://example.com/" /> <!-- With documented modifiers: width and crop --> <img src="//image.thum.io/get/width/1200/crop/900/https://example.com/" />
Key facts about the service today:
- Free tier: up to 1,000 impressions per month, no signup required.
- Documented modifiers:
width/[pixels],crop/[pixels], andmaxAge/[value]for cache control. Adjustable viewport width and full-page capture are unlocked on paid/advanced plans. - Render size: captures are taken from a 1200×1200 pixel browser.
- First-render behavior: for an un-cached URL, the service streams an animated placeholder GIF while the capture renders, then serves the real image once ready.
- Auth: paid usage is authenticated with signed requests (custom expiry) or by referer.
- Pricing: Good — $2 per 10,000 hits ($1/month minimum); Better — $1 per 10,000 hits ($20/month minimum); Enterprise — custom.
For embedding a quick thumbnail of a URL in a directory or a link card, this is genuinely hard to beat — it is one line of HTML and costs nothing to start.
Where developers outgrow thum.io
The same design choices that make thum.io simple become limits when screenshots become a real feature of your product:
- Full-page capture requires a paid plan. The single most common thum.io query is developers looking for a full-page screenshot — but on thum.io that is a paid/advanced-plan feature, not a free-tier flag.
- The animated-placeholder response. Because the first request for an un-cached URL returns a streaming placeholder, a server-side
fetch()can save the loading GIF instead of the finished screenshot unless you add retry logic. That is a subtle, hard-to-debug failure in an automated pipeline. - Fixed 1200×1200 render. You cannot freely set an arbitrary viewport (e.g. a 375px-wide mobile capture or a tall 1440×2000 marketing shot) on the free tier.
- No PDF, dark mode, or ad/cookie-banner blocking. thum.io is a thumbnail service; it does not offer document (PDF) output, forced dark-mode capture, or automatic removal of ads and cookie consent dialogs.
- Per-referer / signed-URL auth model. For a backend pipeline you generally want a straightforward secret API key in a header, not referer-based access or per-request URL signing.
None of these make thum.io "bad" — they make it a thumbnail widget rather than a production screenshot API. When you need the second thing, switch.
image.thum.io vs ScreenshotAPI
| Capability | image.thum.io | ScreenshotAPI |
|---|---|---|
| Interface | URL in <img> / GET | REST API (GET and POST) |
| API key | None on free tier (referer / signed URLs) | Secret key in x-api-key header |
| Free tier | 1,000 impressions/mo, no signup | 200 screenshots/mo, no credit card |
| Full-page capture | Paid/advanced plans | fullPage=true on every plan |
| Custom viewport | Fixed 1200×1200 render | width up to 1920, height up to 10000 |
| Output formats | PNG/JPG image | PNG, JPEG, WebP, and PDF |
| PDF generation | Not offered | type=pdf |
| Dark-mode capture | Not offered | colorScheme=dark |
| Ad / cookie-banner blocking | Not offered | blockAds, removeCookieBanners |
| First-render response | Animated placeholder until cached | Blocks and returns final image bytes |
| Pricing model | $1–$2 per 10,000 hits ($1–$20/mo min) | Subscriptions from $19/mo + one-time credit packs |
(thum.io feature set and pricing per thum.io, verified 2026-07-21; ScreenshotAPI capabilities per the Screenshot API reference.)
Move a thum.io capture to ScreenshotAPI in one line
The mental model is almost identical — a URL with options — except you send an API key in a header and you get the finished image bytes back directly.
A basic thumbnail (thum.io on the left, ScreenshotAPI on the right):
bash# thum.io //image.thum.io/get/width/1200/https://example.com # ScreenshotAPI curl "https://screenshotapi.to/api/v1/screenshot?url=https://example.com&width=1200" \ -H "x-api-key: sk_live_xxxxx" \ --output screenshot.png
The full-page capture that thum.io reserves for paid plans is a single flag here:
bashcurl "https://screenshotapi.to/api/v1/screenshot?url=https://example.com&fullPage=true" \ -H "x-api-key: sk_live_xxxxx" \ --output fullpage.png
In JavaScript, you get deterministic image bytes — no placeholder to retry around:
javascriptconst response = await fetch( 'https://screenshotapi.to/api/v1/screenshot?url=https://example.com&fullPage=true&type=png', { headers: { 'x-api-key': 'sk_live_xxxxx' } } ); const image = Buffer.from(await response.arrayBuffer()); // `image` is the final screenshot — write it to disk, S3/R2, or return it directly.
Need a PDF for an invoice or archive, or a dark-mode capture? Add type=pdf or colorScheme=dark. Capturing a site buried under ads or a cookie wall? Add blockAds=true&removeCookieBanners=true. All of these are query parameters on the same endpoint — see the full Screenshot API reference.
| Plan | Monthly price | Screenshots/month | Per screenshot |
|---|---|---|---|
| Starter | $19/mo | 5,000 | $0.0038 |
| Growth | $49/mo | 25,000 | $0.0020 |
| Scale | $149/mo | 100,000 | $0.0015 |
200 free screenshots per month — no credit card required. Credit packs are also available for one-time purchases:
| Pack | Credits | Price | Per screenshot |
|---|---|---|---|
| Starter | 1,000 | $9 | $0.0090 |
| Growth | 5,000 | $29 | $0.0058 |
| Pro | 25,000 | $99 | $0.0040 |
| Scale | 100,000 | $299 | $0.0030 |
When image.thum.io is still the right call
Stay on thum.io if your use case is exactly what it is built for:
- You only need a small embeddable thumbnail of a URL in an
<img>tag. - 1,000 free impressions per month is enough and you want zero setup — no key, no account.
- A fixed 1200×1200 render and PNG/JPG output cover your needs.
- You do not need PDF, dark mode, custom viewports, or a guaranteed-final response.
For directory thumbnails and link previews specifically, that is often plenty — and if you are building exactly those, see website thumbnails for directories and the link preview generator API for the patterns.
Bottom line
image.thum.io is a great one-line thumbnail widget with a genuinely useful free tier. The moment screenshots become a real feature — full-page captures, PDFs, custom viewports, dark mode, or simply a response you can trust in an automated job — a dedicated screenshot API is the better tool. ScreenshotAPI gives you all of that from the same URL-with-options mental model, with a free tier of 200 screenshots per month and no credit card required.
Frequently asked questions
Is thum.io free?
Yes. image.thum.io lets you take up to 1,000 website-screenshot impressions per month for free, without signing up — you just embed the URL, e.g. //image.thum.io/get/https://example.com. Paid plans add capacity: the Good plan is $2 per 10,000 hits ($1/month minimum) and the Better plan is $1 per 10,000 hits ($20/month minimum), with custom Enterprise pricing (per thum.io, verified 2026-07-21). ScreenshotAPI's free tier is 200 screenshots per month with no credit card, then subscriptions from $19/month.
What is the best alternative to image.thum.io?
For production use, a dedicated screenshot API like ScreenshotAPI is the closest drop-in replacement: one authenticated GET request returns finished PNG, JPEG, WebP, or PDF bytes, with full-page capture, dark mode, and ad/cookie-banner blocking available on every plan — features that thum.io either gates behind paid plans or does not offer.
How do I get a full-page screenshot like image.thum.io?
With thum.io, full-page capture is a paid/advanced-plan feature. With ScreenshotAPI it is a single parameter on any plan: GET /api/v1/screenshot?url=https://example.com&fullPage=true returns the entire scrollable page as image bytes.
Why does image.thum.io sometimes return an animated GIF instead of my screenshot?
On the first request for an un-cached URL, image.thum.io streams an animated placeholder while the capture renders (per thum.io's documentation), then serves the real image once it is ready. A naive fetch can therefore receive the placeholder rather than the final screenshot. A dedicated API like ScreenshotAPI instead blocks until the capture is complete and returns the final image bytes directly, which is more predictable for server-side pipelines.
Is thum.io reliable enough for production screenshots?
image.thum.io is designed for lightweight, embeddable <img>-tag thumbnails and renders at a fixed 1200×1200 viewport. That is ideal for directory and link-preview thumbnails. For production workloads that need deterministic image bytes, custom viewport sizes, PDF output, or dark mode, a purpose-built screenshot API gives you more control and predictable responses.
Related resources
Best Free Screenshot APIs
Free screenshot APIs compared, including no-signup options
Free Screenshot API
How the free screenshot API tiers compare
Website Thumbnails for Directories
Generate website thumbnail images for directory listings
Link Preview Generator API
Generate rich link preview thumbnails for any URL
Start capturing screenshots today
Create a free account and get 200 free screenshots per month to try the API. No credit card required.