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