Egress Fees Are Predatory
There is a specific kind of cloud pricing that I find genuinely scummy, and it has gotten worse in the last couple of years. Egress fees. The “you pay us when your users actually use your product” pricing model. It used to be a footnote that engineers shrugged at, because we knew how to architect around it. Now it is a trap, and the people walking into it have no idea it exists.
Vercel and Supabase are the two worst offenders in the indie/solo builder space. Both market themselves on ease of use. Both have free tiers that sound generous if you do not read the fine print. Both will hit you with a bill the moment your project gets any traction at all.
This is not an accident. This is the business model.
The Customer Base Changed
Two years ago, the people deploying to Vercel were mostly engineers. Engineers know what egress is. Engineers know that serving a 4MB hero image to ten thousand visitors is going to cost something. Engineers put their static assets on a CDN and their images on something with predictable pricing. The egress fees were still annoying but they were not catching anyone off guard.
That customer base does not exist anymore. Or rather, it is a small minority now.
The new customer base is solo entrepreneurs, designers shipping their portfolios, indie builders using Cursor and Lovable and v0 to ship products without writing much code themselves. These people do not know what egress means. They have never paid attention to a bandwidth bill in their lives. They are using these platforms BECAUSE they were promised they would not have to think about infrastructure.
And the platforms know this. They are absolutely aware that the average new signup in 2026 cannot tell you the difference between bandwidth and storage. The marketing has shifted accordingly. Less “deploy your Next.js app.” More “build your startup in a weekend.” The whole positioning has moved toward people who do not know what they are buying.
Charging egress fees to that audience, while marketing to them on simplicity, is predatory. There is no other word for it.
Vercel Has Some Defense, At Least
I will give Vercel partial credit. They have caching. If you set things up correctly, the CDN absorbs most of your traffic and you do not pay egress on every single request. So in theory, a portfolio site with cached pages and cached images is not going to bankrupt you.
In practice, their cache behavior is finicky enough that it is dangerously easy to mess up. Slap the wrong header on a response, opt into dynamic rendering on the wrong page, throw a cookie into the mix, and suddenly every request is hitting the origin and counting against your bandwidth. I have seen people get burned by this who actually knew what they were doing. Now imagine someone who shipped their site by asking an AI to “make it work.”
So Vercel has a defense, but the defense is paper-thin for the audience they are now selling to.
Supabase Is Worse
Supabase has no such defense. None.
Supabase is a database and a blob storage service. It does not have a CDN in front of your storage by default. It does not aggressively cache your assets. If you upload your portfolio images to Supabase storage and serve them directly, every single page view is downloading those images straight from the origin and counting against your egress quota.
A few visits to your own site while you are testing things and you are already a meaningful chunk into the free tier. Send your portfolio link to Twitter, get a few hundred views, and you are getting the email. The free tier on Supabase storage egress is laughably small for anyone serving real images.
And the audience Supabase is going after right now is exactly the audience that will throw full-resolution iPhone photos straight into storage and embed them with a plain URL. They are not going to resize. They are not going to put a CDN in front of it. They are not going to set up a transform pipeline. They are going to do the thing the documentation showed them, because that is the whole reason they picked Supabase in the first place.
This is not a “skill issue” on the user’s part. This is a product that is mispriced for its target audience on purpose. The “easy” path leads directly to the bill.
Just Use R2
Cloudflare R2 has zero egress fees. Zero. You pay for storage, you pay for operations, and that is it. Bandwidth out is free. This is not a promotional thing. This is the actual pricing model.
You can bind a subdomain to an R2 bucket in about five minutes and serve images directly from images.yoursite.com or whatever you want. Cloudflare’s CDN is in front of it for free. The whole thing is about as simple as it gets.
I host every image on this site on R2. The photos page, blog images, OG images, all of it. I have never paid more than a few cents a month and I do not have to think about it when I post something. It just works the way you would expect cloud storage to work if you were not getting fleeced.
If you are building anything that serves images or video or any meaningful blob, put it on R2. Do not put it on Supabase storage. Do not host it through Vercel. There is a sane option and it is right there.
The Point
The pricing model is not the problem on its own. Engineers selling to engineers can absolutely have egress fees and everyone goes in eyes open. That is fine.
What is not fair is selling “you do not need to think about infrastructure” to people who genuinely cannot evaluate the trap, and then collecting on the trap when their project gets any traction at all. That is the part that bothers me.
Pick tools that price honestly. R2 prices honestly. Supabase storage does not. Adjust accordingly.