Skip to content
Keenpix vs Vercel Image Optimization

Keenpix vs Vercel Image Optimization: a portable alternative

Vercel Image Optimization bills transformations, cache reads, and cache writes — plus data transfer — and Hobby can return 402 at its included limits. Keenpix bills optimized managed delivery once across its edge and application; paid usage continues at the published overage rate.

Bottom line

The honest verdict

If your site fits inside Vercel's Hobby allowances, or you already pay for Vercel Pro and image usage costs little, stay put — the default next/image loader is zero-config and Keenpix cannot beat free or nearly-free. Consider Keenpix when you prefer one managed-delivery meter, image-specific analytics, managed custom domains, always-on paid usage, and the current v0.3.0 AGPL-3.0 self-host path. Keenpix is a young, focused product with no video or storage, so the trade is portability and predictability for platform breadth and maturity.

Disclosure and source policy

Keenpix publishes this comparison and benefits if you choose Keenpix. Vendor facts were checked against the primary sources listed here in August 2026. Pricing scenarios are estimates using the displayed assumptions, not quotes; contracts, taxes, regions, cache behavior, and legacy plans can change a real bill.

Facts verified ; next scheduled review . Reviewed by Raed Bahri, Keenpix founder and maintainer.

Full methodology and corrections policy

Primary source list

Decision worksheet

How to compare Vercel Image Optimization and Keenpix with your own workload

A headline plan price is not a total-cost comparison. Use one representative month, preserve every excluded meter, and test the product boundary before deciding. The five checks below are the same ones Keenpix uses for its source-dated calculator and comparison reviews. Save the inputs, official source URLs, response headers, and test date with the decision so a later pricing or cache-policy change can be audited instead of remembered.

1. Capture the workload before choosing units

Record delivered image GB after optimization, request count, source storage, unique generated variants, projects or sites, custom domains, delivery regions, source-change frequency, and cache hit behavior. Use a normal month and a peak month. Do not start by translating one vendor unit into another: a credit, transformation, cache read, worker, stored image, and delivered GB describe different work. If a required input is unavailable, label the resulting estimate partial instead of replacing it with zero.

2. Normalize the product boundary, not only the invoice

List what Vercel Image Optimization includes that Keenpix does not and what your team would need to replace. That may include source storage, DAM workflows, video, a hosting platform, a bundled CDN, AI operations, upload widgets, support, or a self-hosted engine. Then list what sits outside each public price: transfer, requests, infrastructure, observability, additional domains, plan minimums, and operator time. A lower partial subtotal is not automatically a lower complete bill, and a broader platform can be worth paying for when you use its breadth.

3. Test cache and failure behavior

Run a representative URL set through both options. Measure a cold transform, a warm generated-variant hit, an edge hit, an expired source, an invalid signature, an unavailable origin, and a request above the usage allowance. Confirm which layer records billable usage and whether browser or customer-owned CDN hits reach it. Document cache keys, invalidation, stale behavior, retry limits, and the response users receive at a limit. Provider documentation is necessary, but a canary with your headers, URLs, and origins is the stronger acceptance test.

4. Price ownership and security work

Identify who owns origin allowlists, SSRF protection, signing keys, abuse controls, TLS, DNS, capacity, updates, vulnerability response, dashboards, logs, alerts, backups, incident response, and cost anomalies. A managed service moves some of those responsibilities to a vendor; a self-hosted or platform-native option may keep them with your existing team. Compare the architecture you will actually operate, including on-call and recovery expectations, rather than valuing engineering time at zero or assuming a managed boundary eliminates every integration task.

5. Define migration and rollback before the winner

Inventory production transformation options and save visual fixtures before translating URLs. Decide whether originals move, whether both services can read the same origin, how signatures and custom domains change, and how long old URLs must remain valid. Canary a measurable traffic slice and set acceptance thresholds for output dimensions, visual crops, content type, cache behavior, latency, errors, and projected cost. Keep the old path available until a complete traffic cycle passes. The right choice is the one that meets those thresholds and has a credible rollback, not the one with the longest feature column.

Model this workload in the cost calculator
Costs

Pricing compared

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

Pricing comparison between Vercel Image Optimization and Keenpix
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$29 Pro — 400 GB included, then $0.09 per GB
1 TB delivered / monthPro metered usage + Fast Data Transfer at Vercel's regional rates$69 Business — 1 TB included, then $0.07 per GB
Crawler spike: 3× unique widths requestedExtra transforms + cache writes billed; Hobby can 402 mid-month$0 extra unless delivered GB rises; published overage after that
Capabilities

Feature by feature

Feature comparison between Vercel Image Optimization and Keenpix
FeatureVercel Image OptimizationKeenpix
Billing meters3 (transforms, cache reads, cache writes) + data transfer1 — optimized managed delivery
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 breakPaid usage stays online; dunning grace for payment failures
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 servicev0.3.0: AGPL-3.0 with Docker deployment files
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 domainPro: 1 · Business: 10
Video / storage / DAMNoNo
Fit and trade-offs

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 optimized bytes delivered through its managed edge or application once, regardless of cache or origin source. Saved bandwidth is separate analytics and is never added to the bill.

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.

Paid usage stays online instead of returning a 402

When Vercel Hobby hits a cap, images can stop rendering with a hard 402. Keenpix paid plans continue serving at the published per-GB rate, show projected overage, and give payment hiccups 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 current v0.3.0 code is AGPL-3.0 and includes a Docker deployment path. Moving from hosted Keenpix to self-hosting can preserve the transform grammar when you control routing, but it still requires an operational migration.

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 want image optimization embedded directly into the rest of your Vercel bill and deployment workflow.
  • You value one vendor for hosting, preview deploys, and images, with a single bill and a single support channel.
Practical path

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

    For a custom Next.js loader, src becomes https://cdn.keenpix.com/p/<project-id>/img/<origin-url>, width maps to ?w=, and quality maps to ?q=. Validate any additional application-specific transforms in a preview deployment.

  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) and verify its pricing and cache behavior — Keenpix is designed to sit behind it.

  6. 6

    Compare the single managed-delivery meter and projected overage against your Vercel usage page during the trial.

  7. 7

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

Questions answered

Frequently asked questions

Open a question to review the answer without losing your place in the comparison.