Image & Video Hosting
Store user uploads and product media, resize and compress them on the fly, and serve them fast from a CDN.
The real choice
Image pipeline, video streaming, or a raw CDN bundle. Image services resize, crop and convert through the URL. Video needs encoding and adaptive streaming, which is a separate job. A CDN bundle gives storage, delivery and basic optimization at low per-GB cost, with less done for you. Or process images yourself, with a library in your code or an image server you host.
Pick by situation
Tap the ones that are you — the tools that fit light up below.- Your users upload photos and you need thumbnails and modern formats
ImageKit
Cloudinary - Your images already sit in S3 or another bucket you pay for
ImageKit - You need heavier edits through URLs — overlays, watermarks, smart crops
Cloudinary - Video is the core of your product, like courses or user-uploaded clips
Mux - Bandwidth is your biggest bill, or you want media on the CDN account you already use
Bunny.net
Cloudflare - You'd rather process images yourself than pay per transformation
sharp
imgproxy
The contenders
Grouped by the side of the choice they answer, not ranked. Open a row for when to use it, the trade-off and what makers say.
CloudinaryserviceApps with lots of user-uploaded images and video that need crops, overlays and format conversion through URLs.
47+16 open source$99Plus911.7k/wk−28% vs npm
Use it whenYou want one service to handle uploads, storage, transforms and delivery so you write no media code yourself.
Trade-offCredit-based pricing is hard to predict and climbs with transformations and bandwidth.
Used by BlenderHunt, Ostivities, VideoToFlip, 21st, Advanced-React and 42 more · in 16 open-source projects.
Cloudinary powers our image and video management with fast uploads, automatic optimization, and reliable delivery. It ensures every event image, banner, and asset on Ostivities loads beautifully and efficiently across all devices.
ImageKitserviceAdding resizing and optimization in front of storage you already have, such as an S3 bucket.

20+2 open source$14Lite38.1k/wk−48% vs npm
Use it whenYour files already live somewhere and you only need a transform and CDN layer.
Trade-offFewer advanced media features than Cloudinary.
Used by BACH, fileAI, Katalyst, Mida.so, NotionApps and 15 more · in 2 open-source projects.
MuxapiApps where video is the product — uploads encoded and streamed adaptively with a player and playback analytics.


23+12 open source—364.4k/wk−11% vs npm
Use it whenYou're about to let users upload video or sell video lessons and don't want to run encoding yourself.
Trade-offUsage-based by encoding, storage and delivery minutes; it's for video only, not images.
Used by Rally, Sukha, Supercut, Undiscord, Bland AI and 18 more · in 12 open-source projects.
Super reliable video playback with a clean React API, great performance, and less time wasted on video edge cases.
Bunny.netplatformLow per-GB cost for storage, CDN delivery, image optimization and video streaming from one vendor.No evidence yet$10Optimizer + Standard CDN + Storage
Use it whenBandwidth is your main cost and you're fine wiring the pieces together.
Trade-offNo lasting free tier after the trial; tools are simpler than dedicated media platforms.
No maker's product we track shows it for this yet.
Cloudflareplatform · free tierImage resizing and video streaming from the same account that already runs your DNS and CDN, through Cloudflare Images and Stream.No evidence yet$2.50Paid (images in your own bucket)18.6M/wk3.1× vs npm
sharplibrary · open sourceResizing, cropping and converting images to WebP or AVIF inside your own Node code, at upload or build time.240 open source—85.9M/wk+38% vs npm
Use it whenYou'd rather generate a few fixed sizes yourself than pay per transformation.
Trade-offRuns on your server's CPU and memory, which is tight on serverless; storage and CDN delivery are still yours to set up.
No maker's product we track shows it for this yet · in 240 open-source projects.
imgproxyapp · open sourceCloudinary-style resizing through URLs on a server you run, placed in front of your bucket and behind a CDN.1 open source—23.5k/wk+162% vs npm
Use it whenImage transformation bills are growing and you're comfortable running one more container.
Trade-offYou host and scale it and add the CDN yourself; some features, such as video thumbnails and object-aware cropping, are in the paid Pro edition.
No maker's product we track shows it for this yet · in 1 open-source project.
Cost: the cheapest plan that fits images stored 5k images, new image variants generated 10k transformations, images delivered 50 GB, from list prices. Try your own numbers →
Cost as you grow
Each contender's cheapest usable plan as usage rises.
Who switches to what
Public pull requests on GitHub since Oct 2024 whose title says "X to Y" — real code changes, by developers in general rather than makers only. Pick a flow to see its pull requests.
- fix(photos): call revalidate via vercel.app to bypass Cloudflare challengeadriandlam/adrianlam.sh · 2026-10-02
- Migrate hosting from Vercel to Cloudflare Workersbilly492/Mohamed-Elshihy · 2026-10-01
- Move hosting from Vercel to Cloudflare Workerslukeabraham24777/portfolio · 2026-10-01
- Move hosting from Vercel to Cloudflare Workerslukeabraham24777/unblock-me-game · 2026-10-01
- Move hosting from Vercel to Cloudflare Workersnicoceron/amediotono · 2026-10-01
- chore: migrate hosting from vercel to cloudflare workersvimcolorschemes/vimcolorschemes · 2026-09-30
- Move website/site from Vercel and Upstash to Cloudflare Workers and D1DevPatel128/vero · 2026-09-29
- Move web app hosting from Vercel to Cloudflare WorkersPerSis2863/UniVerse · 2026-09-28
- P0: remove legacy Vercel DNS and move blog to Cloudflare Custom Domaincyberdudebivash/cyberdudebivash-blog · 2026-09-27
- Prepare migration from Vercel to Cloudflare WorkersThorfinnThor/interactec · 2026-09-27
- Move hosting from Cloudflare Pages to Verceldaboss23/boss · 2026-09-29
- Add free Cloudflare to Vercel read-only transport preflightnurhannetarek13-design/tst-spot-signal · 2026-09-28
- fix(cloudflare): fall back to BACKEND_URL when Vercel rejects the bypass secretsmokemoney81/BaitBuddy · 2026-09-25
- Migrate hosting from Cloudflare Workers to Verceljlvmoster/website · 2026-09-23
- Migrate hosting/database from Cloudflare Workers+D1 to Vercel+Supabaseiwannis0/found-digital-growth · 2026-09-22
- Migrate hosting/data layer from Cloudflare to Vercel + Supabaserevmancil/tcac-imdp-reviewer · 2026-09-22
- Migrate from Cloudflare Workers to Vercelsalikahmed595/AI-Summit · 2026-09-18
- Move metrics API from a Cloudflare Worker to Vercel Edge Functionssillsdev/langtech-metrics · 2026-09-18
- Kairon V11 — migrate runtime from Cloudflare to Vercel + Supabase schedulernikitamakiel1-beep/PROJECT · 2026-09-18
- Move authenticated FundMatch app from Cloudflare to VercelWGLewis0721/fundmatch · 2026-09-17
Before you choose
Store originals once and generate sizes through URL transforms instead of saving five copies. Upload directly from the browser with signed URLs so large files never pass through your server. Video is a different problem from images — don't serve user-uploaded MP4s straight from storage.
- Sending uploads through your own server, which ties up memory and hits request size and timeout limits on serverless hosts.
- Serving user-uploaded MP4s straight from storage, so viewers on slow connections wait for one huge file with no lower-quality fallback.
- Letting the frontend request any image width it likes, which multiplies transformations and the bill; stick to a small fixed set of sizes.
Other options
Real choices most makers here won't need to weigh.
Decided alongside
What the 99 makers' products here chose for their other decisions.