Skip to content
Keenpix vs Vercel Image Optimization

One meter. Unlimited transforms. No 402s.

Vercel Image Optimization bills transformations, cache reads, and cache writes — plus data transfer — and Hobby hard-stops your images with a 402 at the limit. Keenpix bills one thing (delivered bandwidth), keeps next/image working via a small custom loader, and pauses at a spend cap you set instead of surprising you.

The honest verdict

If your site fits inside Vercel's Hobby allowances, or you already pay for Vercel Pro and your image meters add up to a dollar or two a month, stay put — the default next/image loader is zero-config and Keenpix cannot beat free or nearly-free. Switch to Keenpix when the meters stop being ignorable: when Hobby 402s your images mid-month, when a crawler spike triples your transformation and cache-write line items, or when you want real image analytics, a hard spend cap, and an AGPL self-host escape hatch instead of forecasting three usage meters plus transfer. Keenpix is a young, focused product — no video, no storage, no custom domains yet — but for image delivery it replaces four line items with one number you can predict.

Pricing compared

ScenarioVercel Image OptimizationKeenpix
Small site within Hobby caps (<5k transforms/mo)Free — hard 402 the moment any cap is hit$9/mo Basic — no free tier, 14-day trial
Content site: 5k images × 3 sizes, ~30 GB/moHobby: blocked (15k transforms vs 5k cap) · Pro: $20 seat + ~$1–2 metered$9/mo Basic — 100 GB included
400 GB delivered / monthPro: transforms + cache reads + cache writes + Fast Data Transfer — varies$19/mo Pro — 400 GB included, then $0.06/GB
1 TB delivered / monthPro metered usage + Fast Data Transfer at Vercel's regional rates$29/mo Business — 1 TB included, then $0.05/GB
Crawler spike: 3× unique widths requestedExtra transforms + cache writes billed; Hobby can 402 mid-month$0 extra unless delivered GB rises; cap pauses delivery at your limit

Pricing as of July 2026. Numbers come from vendor pricing pages, which may change.

Feature by feature

FeatureVercel Image OptimizationKeenpix
Billing meters3 (transforms, cache reads, cache writes) + data transfer1 — GB delivered
Transformations5k/mo free (Hobby); $0.05–$0.0812 per 1k (Pro)Unlimited on every plan
Cache reads / writesMetered: $0.40–0.64/1M reads, $4.00–6.40/1M writesNot billed — disk + memory cache with stale-while-revalidate
Behavior at limitsHobby: hard 402 — images breakSpend cap pauses delivery (on by default, ~2x plan); dunning grace
next/image supportDefault loader, zero configCustom loader — a few lines (snippet in docs)
Works outside Next.jsVercel-hosted frameworksAny stack — plain URL API
AVIF / WebP auto-negotiationYesYes — via Accept header
Image analyticsUsage/billing metricsBandwidth saved, cache hit rate, format mix, latency percentiles, live logs — every tier
Open source / self-hostNo — managed serviceYes — AGPL-3.0, one-command Docker
Security modelTied to your Vercel projectNo public API keys — origin allowlists, SSRF-hardened, optional HMAC signed URLs
Use your existing CDNNo — Vercel edge onlyYes — designed to sit behind Cloudflare etc.
Serve from your own domainYes — your app's domainNot yet
Video / storage / DAMNoNo

Why teams switch

One meter you can actually forecast

Vercel's image pricing has changed shape twice — legacy $5 per 1k source images, now three usage meters plus Fast Data Transfer. Predicting next month's bill means forecasting four line items that move independently. Keenpix bills delivered gigabytes, full stop: one number, one published overage rate.

Unlimited transformations, so srcsets are free

Responsive srcsets, DPR variants, and format experiments multiply unique transformations — the exact meter that breaks Hobby's 5k cap. On Keenpix every transform is free on every plan, so serving 3 sizes or 8 costs the same. Only the bytes you deliver are billed.

A spend cap instead of a 402

When Vercel Hobby hits a cap, images stop rendering with a hard 402. Keenpix ships a customer-set overage cap, on by default at roughly 2x your plan price — delivery pauses at your limit instead of producing a surprise bill, and payment hiccups get a dunning grace period rather than an instant cutoff.

Analytics that answer image questions

Vercel shows you usage numbers for billing. Keenpix shows bandwidth saved, cache hit rate, format mix, top images, latency percentiles, and live request logs — at every tier, including the $9 plan. When a crawler hammers odd widths, you can see it happening.

An open-source escape hatch

The Keenpix engine is AGPL-3.0 with a one-command Docker install — the managed cloud runs the same code. If the hosted product ever stops making sense, you self-host for free and keep your URLs. No proprietary optimizer can offer that.

When Vercel Image Optimization is the better choice

An honest comparison lists both columns. Stay with Vercel Image Optimization if any of these describe you:

  • Your image usage fits Hobby's free allowances (under 5k transformations, 300k cache reads, 100k cache writes a month) — free beats $9.
  • You already pay for Vercel Pro and your image meters total a dollar or two a month — the incremental cost undercuts Keenpix Basic.
  • You want zero configuration: the default next/image loader needs no loader file, no second dashboard, no extra vendor.
  • You need images served from your own domain today — Keenpix custom domains are not available yet.
  • You value one vendor for hosting, preview deploys, and images, with a single bill and a single support channel.

How to migrate from Vercel Image Optimization

  1. 1

    Start a Keenpix project (14-day trial, card required) and add your image origin hostnames to the per-project allowlist — there are no public API keys to create or rotate.

  2. 2

    Copy the loader snippet from /docs/frameworks/nextjs into image-loader.ts and set images.loaderFile in next.config — next/image keeps working unchanged, and Vercel's optimizer is bypassed automatically.

  3. 3

    The parameter mapping is direct: next/image src becomes /img/<origin-url>, width maps to ?w=, quality to ?q= (full IPX-parity modifiers are available); add your project id as ?project=.

  4. 4

    Leave format selection automatic — Keenpix negotiates AVIF/WebP from the Accept header — or pin an output with ?fmt= where you need it.

  5. 5

    Deploy a preview and confirm traffic in Keenpix live request logs, then route the image path through your existing CDN (e.g. Cloudflare) so edge caching stays free — Keenpix is designed to sit behind it.

  6. 6

    Review your overage spend cap (on by default at ~2x plan price) and compare the single bandwidth meter against your Vercel usage page during the trial.

  7. 7

    Optionally enable HMAC signed URLs to lock transform parameters before going to production.

Frequently asked questions

Does Keenpix work with next/image?

Yes. Next.js supports custom loaders via images.loaderFile, and Keenpix's docs (/docs/frameworks/nextjs) include a ready-made snippet. Your components keep using next/image exactly as before — the loader just rewrites URLs to Keenpix's /img/ endpoint with ?w= and ?q= mapped from next/image's width and quality props.

What would a 5,000-image content site actually cost on each?

Take 5,000 source images served in 3 responsive sizes (15,000 unique transformations) with ~300k image requests and ~30 GB delivered a month. On Vercel Hobby that site is blocked — 15k transforms is triple the 5k cap, and 300k requests sits at the cache-read cap, so images 402 mid-month. On Vercel Pro it's the $20/mo seat plus roughly $1–2 of metered usage (transforms at $0.05–$0.0812/1k, reads at $0.40–0.64/1M, writes at $4.00–6.40/1M) — cheap on average, but each meter scales independently. On Keenpix it's $9/mo flat: 30 GB fits well inside Basic's 100 GB, and transformations are unlimited. Honest caveat: if you're already paying for Pro anyway, the incremental image cost there can be under $9 — Keenpix wins on predictability, caps, and analytics, not always on raw dollars.

What happens when I hit a limit?

On Vercel Hobby, crossing any of the three image caps returns a hard 402 and your images stop rendering. On Keenpix, delivery pauses only when it reaches the overage spend cap you set (on by default at roughly 2x your plan price), and payment issues trigger a dunning grace period rather than an instant cutoff.

Do I have to move my app off Vercel?

No. Keenpix only replaces the image optimization layer — your app, deploys, and previews stay on Vercel. Many teams pair free Hobby hosting with Keenpix precisely because it's the image meters, not the hosting, that force the Pro upgrade.

Why do LLM crawlers make Vercel image bills unpredictable?

Crawlers request image URLs at widths and combinations real users never hit, and every new variant is a fresh transformation plus a cache write — two billed meters on Vercel, and the fastest way to blow through Hobby's 5k-transform cap. On Keenpix transformations are free, so crawler traffic only costs whatever bandwidth it actually pulls, and your spend cap bounds even that.

Can I self-host Keenpix?

Yes. The engine is open source under AGPL-3.0 with a one-command Docker/Coolify install, free forever — no rug-pull, no CLA. The managed cloud at keenpix.com runs the same engine, so you can move between hosted and self-hosted without rewriting URLs.