Stop overpaying for Supabase image transformations
Keep your bucket and change one URL. ProdKit serves resized AVIF and WebP from Cloudflare's global network, billed in the same unit as Supabase for up to 62% less.
- Free plan, no card
- Works on Supabase Free
- Five-minute setup
Example request
Before: xyz.supabase.co/storage/v1/…/avatars/cory.png
After: img.prodkit.cloud/acme/avatars/cory.png?width=256
Monthly bill at 4,000 origin images
Plain image URLs work in every stack
Why switch
Same images, a smaller bill
Supabase's transformations are convenient, but they bill every origin image, only exist on paid plans, and push all image traffic through your egress quota.
Supabase image transformations
- $5 per 1,000 origin images after the first 100
- Only on paid plans, not available on Supabase Free
- Output capped at 2,500px per side
- Every image view counts toward your egress quota
ProdKit
- From $0, and paid plans cost 54–62% less at their included volume
- Works with public buckets on every Supabase plan, including Free
- Resize up to 4,096px, with AVIF and WebP chosen per browser
- Repeat views come from ProdKit's edge cache, not your Supabase egress
- One paid plan covers every project you ship
How it works
Live in five minutes
There's no pipeline to build and nothing new to host. Storage stays where it is.
Public bucket URL
xyz.supabase.co/storage/v1/object/public/avatars
Verified xyz / avatars
01
Connect your bucket
Paste your public bucket URL. ProdKit checks it and gives the project an endpoint.
xyz.supabase.co/…/avatars/cory.png
img.prodkit.cloud/acme/avatars/cory.png
02
Replace one URL
Swap the storage base URL for your endpoint. Paths and filenames stay exactly the same.
- AVIF256 × 256cache HIT18 KB
Fraction of the original bytes
03
Serve optimized images
Images come back resized, in AVIF or WebP, from Cloudflare's cache near your users.
Built on Cloudflare
Cloudflare's edge, none of the setup
Every image request runs on Cloudflare's network. ProdKit adds the parts Cloudflare leaves to you: no account or zone to configure, one URL per project, and a bill per image instead of per size.
img.prodkit.cloud/acme/avatars/cory.png?width=640
ProdKit Images
Your endpoint, usage dashboard, and per-image billing
Cloudflare Workers
Routes every request to your bucket and meters usage
Cloudflare Images
Resizes each image and converts it to AVIF or WebP
Cloudflare R2
Keeps generated sizes so none is transformed twice
Your Supabase bucket
Originals stay where they are. ProdKit only reads them
Savings calculator
See what you'd save every month
Set your monthly volume to compare Supabase's per-image pricing with a flat plan. At 4,000 images, Supabase charges $19.50 and Starter is $9.
An origin image is one source file in your bucket, counted once a month however many sizes it's served at. That's the unit Supabase bills: $5 per 1,000 after 100 included on paid plans. Supabase pricing
Supabase
$49.50
transformations / mo
ProdKit
$27
Starter + $18 overage
You save
$22.50
45% · $270/yr
~30 GB/month of image traffic moves off your Supabase egress quota.
Assumes ~60 KB per optimized image. Originals are fetched from Supabase only when a new size is generated.
Features
Everything production images need
Focused on one job: delivering the images your app already has, faster and for less.
AVIF and WebP, automatically
Each browser gets the smallest format it supports. Originals stay untouched in your bucket.
Responsive sizes
Request any width up to 4,096px with one URL parameter. Up to five sizes of each image are included.
Cloudflare's edge cache
Generated sizes are cached across Cloudflare's network, close to your users, so repeat views are fast and never billed.
Face-aware crops and effects
Crop around faces or a focal point, blur, sharpen, or cut out the background (beta). Each is a Cloudflare Images feature and one URL parameter.
Usage you can see
Track origin images, sizes, bandwidth, cache hit rate, and savings against Supabase pricing.
Built for coding agents
Clear docs and a ready-made prompt let Claude Code, Cursor, or Codex migrate your image URLs in one pass.
Agent workflow
One prompt migrates your whole app
Point your coding agent at the project with your endpoint and bucket. It finds Supabase Storage URLs, rewrites them, sizes each image for how it's displayed, and hands you a diff to review.
Prompt
Claude Code · Cursor · Codex
Optimize every image in this project with ProdKit. Endpoint: https://img.prodkit.cloud/acme Bucket: avatars Rewrite Supabase Storage URLs, size each image for how it's displayed, and show me the diff.
components/avatar.tsx
− src={`${SUPABASE_URL}/storage/v1/object/public/avatars/${id}.png`}
+ src={`https://img.prodkit.cloud/acme/avatars/${id}.png?width=96`}
Pricing
Pricing that pays for itself
Billed per origin image, like Supabase, so every comparison is like for like. Paid plans cover unlimited projects.
Free
For side projects and trying ProdKit on a real app.
$0
/ month
1,000 origin images / month
Stops at the limit, never billed
Supabase doesn't include image transformations on its Free plan.
- 1 project
- Every size and format included
- Global CDN and edge caching
- Works in any stack
Starter
Best place to startFor a production app replacing its Supabase transformation bill.
$9
/ month
4,000 origin images / month
$3 per 1,000 extra images
- Supabase for 4,000 images
- $19.50
- You save
- $10.50/mo
- Unlimited projects
- Every size and format included
- Usage dashboard and request logs
- Email support
Pro
For growing apps with bigger catalogs and more traffic.
$29
/ month
15,000 origin images / month
$2.50 per 1,000 extra images
- Supabase for 15,000 images
- $74.50
- You save
- $45.50/mo
- Everything in Starter
- Lower overage rate
- Priority email support
Scale
For image-heavy products serving at serious volume.
$249
/ month
130,000 origin images / month
$2 per 1,000 extra images
- Supabase for 130,000 images
- $649.50
- You save
- $400.50/mo
- Everything in Pro
- Lowest overage rate
- Custom limits and invoicing
FAQ
Questions, answered
What counts as an origin image?
One source file in your bucket, counted once per calendar month however many sizes and formats it's served in. It's the same unit Supabase bills, and repeat views from cache are free.
Do I need Supabase Pro?
No. ProdKit works with public buckets on any Supabase plan, including Free, where Supabase doesn't offer image transformations at all.
Do my images move?
No. Files stay in your Supabase bucket. ProdKit fetches an original only when it needs to generate a new size, then serves cached copies.
What happens if I go over my plan?
Paid plans keep serving and bill extra images at the plan's overage rate. The Free plan stops at 1,000 images and serves your originals instead, so there's never a surprise bill.
Can I use private buckets?
Not yet. ProdKit works with public Supabase buckets today. Signed URLs for private buckets are on the roadmap.
How many projects can I connect?
One on the Free plan and unlimited on paid plans. Every project gets its own endpoint, and they all share one plan's included images.
What is ProdKit built on?
Cloudflare. A Cloudflare Worker routes each request to your bucket, Cloudflare Images resizes and converts it, and Cloudflare R2 keeps the sizes it generates. ProdKit handles setup, metering, billing, and the dashboard around them.
Why not use Cloudflare Images directly?
You can, and the raw transformation fees are usually lower. Doing it yourself means putting a domain on Cloudflare, enabling transformations for the zone, allowlisting your storage host, writing URLs or a loader, and paying for every size of every image. ProdKit does that setup once, bills per image, and adds per-project endpoints and usage tracking.
Is ProdKit affiliated with Supabase or Cloudflare?
No. ProdKit is an independent service built on Cloudflare's developer platform that works with Supabase Storage. Supabase and Cloudflare are trademarks of their respective owners.
Your images are one URL away from a smaller bill
Start on the free plan, connect a public bucket, and see the difference before you pay anything.