Skip to main content

HowdyGo's Vercel Image Bill Once 7x'd a $20 Plan: What 28,000 Images Actually Cost in 2026

8 min readDora NodaDora Noda
Share
On this page

In October 2024, the team behind HowdyGo — a tool for recording and replaying interactive product demos — watched their Vercel bill do something a $20/month Pro plan isn't supposed to do: optimizing roughly 28,000 images in a single month added $115 on top of the base subscription, pushing the real bill to $135. That's 6.75x the sticker price of the plan, for one line item most teams don't budget for separately.

Here's the number that matters more, though: if HowdyGo hit that same 28,000-image month today, on Vercel's current default pricing, the image-optimization line would cost about $4.70 — not $115. Vercel rebuilt how it bills for images in February 2025, and the specific shock that hit HowdyGo can no longer happen to a current Pro account processing that volume. What follows is the full math on both pricing models, where the multiplier risk actually still lives in 2026, and what self-hosting the same pipeline costs on owned hardware instead of rented platform capacity.

How HowdyGo's Bill Actually Broke Down

The mechanism was simple, and it's worth stating exactly because it explains why the number changed so much. Under the pricing model in effect through early 2025 — the only model Vercel offered at the time — Image Optimization billed per unique source image requested during a billing period, not per rendered variant:

Legacy model (source-image based)Value
Included free source images (Pro)5,000/month
Price per 1,000 additional source images$5.00
HowdyGo's monthly source images28,000
Billable overage23,000
Image optimization charge23 × $5.00 = $115.00
Base Pro plan$20.00
Total bill$135.00

That's a real, well-documented shock — HowdyGo wrote it up themselves, and it's become one of the most-cited "watch your Vercel image bill" cautionary tales for exactly this reason: a screenshot-heavy replay tool crossed the free allowance almost by accident, and the per-image rate did the rest.

Why the Same 28,000 Images Cost $4.70 Today

In February 2025, Vercel shipped a new pricing model for Image Optimization and made it the default for every new and existing Pro team (the old model now survives only as an opt-in holdover for Enterprise contracts signed before February 18, 2025). The billing unit changed from unique source images to transformations — one charge per cache miss or stale cache entry, not per distinct image path:

Current model (transformation-based)Value
Included free transformations (Pro)0 — bills from unit one
Price per 1,000 transformations$0.05 (region-dependent, up to $0.0812)
Price per 1M cache reads$0.40
Price per 1M cache writes$4.00

A single source image in a real Next.js app typically renders at more than one size — a srcset serving a handful of responsive breakpoints is normal, and Vercel's own documentation uses a 3-variant example for one <Image> tag. Applying that same, deliberately unflattering assumption to HowdyGo's 28,000 images:

Recompute at 28,000 source images / ~3 variants eachCost
84,000 transformations × $0.05/1,000$4.20
84,000 cache writes × $4.00/1,000,000$0.34
~420,000 cache reads × $0.40/1,000,000$0.17
Image optimization line, today≈ $4.70/month
Total bill (with $20 base plan)≈ $24.70/month

That's roughly a 24x drop in the per-unit rate and a bill that's 1.2x the base plan instead of 6.75x. If you're on a current Pro account, the exact scenario that hit HowdyGo simply doesn't reproduce anymore. Anyone still quoting the $115-for-28K-images number as today's pricing is quoting a model Vercel retired for everyone but a shrinking pool of legacy Enterprise contracts.

So Where Does the Multiplier Risk Actually Live Now?

Cheaper per unit doesn't mean free at scale, and this is the part the "Vercel fixed it" headline leaves out. Transformation pricing has no included allowance on Pro — every image variant bills from the first one — so the total still climbs linearly with volume. Run the same 3-variants-per-image assumption at HowdyGo's actual growth trajectory (they described "rapid image volume growth" as the reason they hit the old limit in the first place) against a self-hosted alternative, and the multiplier comes back — just at a different threshold:

Monthly source imagesVercel transforms (current pricing)Self-hosted (1× Hetzner CX22, imgproxy)
28,000≈ $4.70≈ $21.00 (standalone) / $0 marginal on an existing fleet
280,000≈ $47.00≈ $21.00
2,800,000≈ $470.00≈ $21.00

A Hetzner CX22 — 2 shared vCPUs, 4GB RAM, €19.49/month (≈$21) post-Hetzner's June 2026 price adjustment — is wildly over-provisioned for this job. imgproxy's own published benchmark on equivalent 2-vCPU hardware processed 79.6 JPEG resizes/second and 13.2 AVIF resizes/second sustained. Even the 2.8M-images/month tier above averages only about 1.08 images/second across a 30-day month; a realistic 10x peak-hour burst (≈11 images/second) still fits comfortably under imgproxy's slowest-format ceiling. One small box, never resized, handles every tier in this table.

Set the two costs equal and solve for the crossover: at $0.05/1,000 transforms, a $21/month box breaks even against Vercel's current pricing at roughly 420,000 transformations — about 140,000 source images per month at the 3-variants assumption. Below that, paying Vercel per transform is arguably the cheaper and simpler option. Above it, the line diverges the same way it did in 2024, just starting from a much higher floor. A team scaling from HowdyGo's 28,000-image month toward 10x that volume is scaling directly toward the point where the multiplier reappears — it just now takes real growth to get there instead of one unlucky month.

The Line That Actually Bites First: Bandwidth

Transformation fees aren't the whole story, and for an image-heavy app they're often not even the main story. Vercel's Pro plan includes 1TB of Fast Data Transfer per month, then bills $0.15/GB past that. A tool built around replaying recorded product demos — screenshots and session frames, not compressed e-commerce thumbnails — pushes meaningfully larger files through that meter than the 28,000-image count alone suggests. Even a modest average of 400KB per delivered variant across 84,000 transformed images is roughly 33GB — nowhere near the 1TB ceiling on its own, but stacked on top of the rest of an app's normal page-load and API traffic, image-heavy products are consistently the ones that cross that line first. A team that fixed its $115 image-transform shock in isolation but never re-checked its bandwidth line against $0.15/GB overage can still end up with a bill that grew for reasons the image-pricing changelog never mentioned.

What HowdyGo Actually Built, and the Owned-Hardware Version of It

HowdyGo's real fix, worth naming precisely: they didn't self-host on hardware they own. They moved image optimization to AWS Lambda, S3, and CloudFront, wired up with an open-source Terraform module (terraform-aws-next-js-image-optimization by milliVolt Infrastructure), and landed comfortably inside AWS's Lambda free tier — average function execution time of 365ms, "no impact on productivity," and roughly 80% off their total hosting bill. That's a genuinely good outcome, and it's still renting someone else's cloud; it's just a corner of it with a more forgiving free tier and no source-image counter waiting to click over.

The Cluster-API-managed equivalent skips the free-tier cliff entirely. Instead of a Lambda function billed per invocation once free-tier headroom runs out, imgproxy (or sharp for teams that want to stay inside their existing Node process) runs as one more container in a fleet you already provisioned — the same Hetzner nodes serving the app itself, with spare CPU that's a sunk cost either way. There's no per-transform meter, no cache-read/write line, and no dashboard warning that a free tier is about to expire. Bex.co takes that pattern as a default: a Cluster-API fleet on owned Hetzner hardware where adding an image-processing sidecar is a deploy, not a new billing dimension.

The Checklist Before You Trust Either Number

Before reacting to a headline stat about Vercel's image pricing — this one included — three things are worth checking against your own account:

  • Which pricing model are you actually on. Vercel's dashboard shows this under Image Optimization in Usage; if you're a current Pro team, you're almost certainly on transformation-based pricing already, not the model that hit HowdyGo.
  • Your real transform count, not your source-image count. Multiply unique images by the number of size/format variants your deviceSizes/imageSizes config and traffic actually generate — that multiplier, not the raw image count, is what the bill scales with.
  • Your bandwidth line, separately. For image- or media-heavy products, Fast Data Transfer overage is frequently the bigger number long before the transform-fee line becomes painful.

The 2024 shock was real, and Vercel's fix for it was also real — both things can be true, and a post that only reports one of them isn't giving you the current picture. What hasn't changed is the underlying shape: metered, per-operation pricing scales with your usage forever, while a box you own scales with nothing until you outgrow its CPU.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with image processing running as just another container instead of a metered API call. Star the repo on GitHub or deploy your first app today.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex