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.

Start for free

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], and maxAge/[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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Capabilityimage.thum.ioScreenshotAPI
InterfaceURL in <img> / GETREST API (GET and POST)
API keyNone on free tier (referer / signed URLs)Secret key in x-api-key header
Free tier1,000 impressions/mo, no signup200 screenshots/mo, no credit card
Full-page capturePaid/advanced plansfullPage=true on every plan
Custom viewportFixed 1200×1200 renderwidth up to 1920, height up to 10000
Output formatsPNG/JPG imagePNG, JPEG, WebP, and PDF
PDF generationNot offeredtype=pdf
Dark-mode captureNot offeredcolorScheme=dark
Ad / cookie-banner blockingNot offeredblockAds, removeCookieBanners
First-render responseAnimated placeholder until cachedBlocks 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:

bash
curl "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:

javascript
const 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.

PlanMonthly priceScreenshots/monthPer screenshot
Starter$19/mo5,000$0.0038
Growth$49/mo25,000$0.0020
Scale$149/mo100,000$0.0015

200 free screenshots per month — no credit card required. Credit packs are also available for one-time purchases:

PackCreditsPricePer screenshot
Starter1,000$9$0.0090
Growth5,000$29$0.0058
Pro25,000$99$0.0040
Scale100,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.

Start free with 200 screenshots per month →

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

Start capturing screenshots today

Create a free account and get 200 free screenshots per month to try the API. No credit card required.