---
title: "Cloudinary vs Uploadthing vs Mux: Handling User Uploads"
author: "Nate Laquis"
author_role: "Founder & CEO"
date: "2026-10-29"
category: "Technology"
tags:
  - Cloudinary vs Uploadthing
  - Mux video API pricing
  - user file upload architecture
  - image CDN comparison
  - S3 presigned uploads
excerpt: "Pick Uploadthing for plain file uploads, Cloudinary for image-heavy products, and Mux the moment video is the product. Here is how the pricing, limits and tradeoffs actually play out."
reading_time: "11 min read"
canonical_url: "https://kanopylabs.com/blog/cloudinary-vs-uploadthing-vs-mux-user-uploads-images-video"
---

# Cloudinary vs Uploadthing vs Mux: Handling User Uploads

## The short answer on Cloudinary vs Uploadthing vs Mux

Use Uploadthing if your users upload documents, avatars and attachments and you just need files stored and served. Use Cloudinary if images are a core part of the product and you want resizing, cropping and format conversion handled for you. Use Mux if users upload video that has to play smoothly on any phone. Most apps need only one of these on day one, and a few need two.

These three tools get compared constantly, which is a little odd, because they do different jobs. Uploadthing is a file upload layer with storage behind it. Cloudinary is a media pipeline that started with images and later added video. Mux is a video infrastructure company and does nothing else. The question is rarely which one is best. It is which job your product actually has.

The mistake founders make most often is picking a tool for the feature list and ignoring the bill. User uploads are one of the few parts of an app where cost scales with your success, not with your team size. A hundred users uploading profile photos costs you almost nothing. A hundred users uploading ten-minute videos can cost more than the rest of your infrastructure combined.

![Glowing network of connected nodes over a globe representing files moving through a media delivery network](https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&q=80)

All prices in this article are secondary-source ranges as of late October 2026. Vendors change plans often, so check each pricing page before you commit. We give ranges on purpose. If someone quotes you a single exact monthly number for media costs without knowing your traffic, they are guessing.

## What user uploads actually involve

A file upload looks like one feature. It is at least five. The browser or phone has to send the bytes. Something has to store them. Something has to check the file is what it claims to be. Something has to turn the original into versions that load fast on every screen. And something has to deliver those versions from a server near the viewer.

Each of the three tools covers a different slice of that list. Getting this straight saves you from buying a video platform to store PDFs, or from storing 4K video in a service built for thumbnails.

### Upload, storage, processing, delivery

Upload is the transfer from the user's device. For anything larger than a few megabytes, you want the client to send the file straight to storage instead of through your own server, because your server then pays for the bandwidth twice and times out on big files. That pattern is called a presigned or direct upload, and all three vendors support some form of it.

Storage is where the original lives. Processing is everything that happens next: resizing an image into five sizes, converting a HEIC photo from an iPhone into a web format, or transcoding a video into several resolutions so it plays on a weak connection. Delivery is the CDN layer. If you want the background on that last piece, our guide to [CDN strategy across Cloudflare, Fastly and CloudFront](/blog/cdn-strategy-cloudflare-vs-fastly-vs-cloudfront) covers how edge delivery works and what it costs.

### Why video changes the math

Images are small and forgiving. A photo is a few megabytes, you process it once, and you serve a few cached variants forever. Video is large, has to be encoded into a ladder of resolutions, and is billed by how long it plays, not just how many bytes move. A user on a train with one bar of signal needs a different file than a user on office Wi-Fi, and your platform has to pick between them while the clip is playing.

That is the line between the first two tools and Mux. Treat video as a separate problem from the start and your architecture stays clean. Treat it as a bigger image and you will rebuild it within a year.

## Uploadthing: the simplest path for plain files

Uploadthing was built by the team around the T3 stack, and it shows. It is designed for TypeScript and Next.js developers who want a typed upload route, a React component and a CDN URL back, with very little setup. You define what file types and sizes a route accepts, wrap it in an auth check, and the client component does the rest.

### What you get

You get direct-to-storage uploads, file type and size validation, a hosted CDN URL for every file, and tidy React helpers for drag and drop and progress. You do not get image transformation or video processing. It stores and serves the file you gave it. That is a feature, not a gap, if your uploads are resumes, invoices, chat attachments or avatars you resize yourself.

### What it costs

As of late October 2026, secondary sources put the free plan at roughly 2 GB. Paid usage starts around $10 per month for about 100 GB, and the usage-based tier begins near $25 per month for about 250 GB. Check the vendor pricing page, because these tiers have moved more than once. Even at the high end of a small app, you are looking at tens of dollars, not hundreds.

### Where it stops being enough

The ceiling arrives when product requirements ask for things Uploadthing does not do. If a designer asks for a square crop that follows a face, or if marketing wants a gallery that serves WebP to Chrome and AVIF to Safari, you will be writing that code yourself or adding a second service. The same goes for video. Uploadthing will accept an MP4 and hand it back, but it will not make it stream well.

Our take: for a first version of almost any B2B app, internal tool or marketplace that handles documents, Uploadthing is the right default. It is cheap, it is fast to wire up, and you can swap it out later because your database only stores a URL.

## Cloudinary: the image pipeline, with a credit system to understand

Cloudinary is the heavyweight of the three for images. You upload an original, then request any version you want by changing the URL. Resize to 400 pixels wide, crop around a face, convert to the best format for the visitor's browser, compress to a target quality. It all happens on the fly and then gets cached on the CDN. For a retail catalog, a real estate listing site or a social product with user photos, that saves weeks of engineering.

### How the credits work

Cloudinary bills in credits, and this is where people get surprised. As commonly described, one credit covers roughly 1,000 transformations, or 1 GB of storage, or 1 GB of bandwidth. Those three things draw from the same pool. A site with a large library and heavy traffic can burn through credits from several directions at once.

Secondary sources put the free plan at about 25 credits per month. The Plus plan sits near $99 per month for around 225 credits, and Advanced near $249 per month for around 600 credits. As of late October 2026, check the vendor pricing page, since plan names and allowances shift.

### The video warning

Cloudinary does handle video. It will transcode, serve adaptive streams and generate thumbnails. The catch is that video eats credits quickly, because video files are big, transformations on them cost more, and every play moves a lot of bandwidth. A product that works comfortably on the Plus plan with photos can jump a tier or two once users start uploading clips.

That does not make Cloudinary a bad video choice for a light use case. A real estate app with one 60-second walkthrough per listing is fine. A social app where every user posts daily video is not the job for a credit pool shared with your image library.

![Laptop on a desk showing code for an image upload and transformation pipeline](https://images.unsplash.com/photo-1498050108023-c5249f4df085?w=800&q=80)

### Where it fits best

Cloudinary earns its price when image quality and variety drive revenue: e-commerce, marketplaces, publishing, listings. It also helps when non-engineers need to adjust how images are cropped or branded without a deploy. If your images are simple avatars and you never change their size, you are paying for a pipeline you do not use.

## Mux: video infrastructure that bills by the minute

Mux does one thing. You send it a video, either by direct upload or a URL, and it encodes the file into an adaptive stream, stores it, and delivers it through a CDN to a player that adjusts quality to the viewer's connection. It also handles live streaming, thumbnails, captions and playback analytics. There is no image product, no document storage and no general file layer.

### How Mux pricing works

Mux prices by minutes of video, not gigabytes. There are three meters: encoding, storage and delivery. Secondary sources put storage at roughly $0.003 per minute per month. Delivery typically comes with around 100,000 free minutes, then lands somewhere between $0.0008 and $0.001 per minute watched, though sources differ and the rates shift with resolution and plan. As of late October 2026, check the vendor pricing page for current figures.

It helps to translate that into a real scenario. Say you host 5,000 minutes of user video and viewers watch 200,000 minutes in a month. Storage is in the range of $15 per month. Delivery is the first 100,000 minutes free, then the remaining 100,000 at under a dime per hundred minutes, so roughly $80 to $100. You are paying low hundreds of dollars at most, for a product that would have taken months to build yourself. Scale that to millions of watched minutes and delivery becomes the line item to watch.

### Why teams choose it

The honest reason is time. Building a reliable video pipeline means ingest, transcoding, adaptive bitrate packaging, signed playback URLs, a player, and a plan for the odd formats that phones produce. Mux gives you that as an API, and the pricing is predictable because it tracks how much video you hold and how much gets watched.

### What it does not do

Do not route your PDFs or profile pictures through Mux. It is the wrong tool and the minutes pricing will not make sense for them. Most products that use Mux pair it with something else for everything that is not video.

## The DIY option: S3 or R2 with presigned uploads

You can skip all three vendors and build the pipeline on object storage. The usual recipe: your backend creates a presigned URL, the client uploads straight to an Amazon S3 or Cloudflare R2 bucket, and you serve files through a CDN. For images, you add an image resizing layer, such as Cloudflare Images, a small Lambda running Sharp, or an open source proxy like imgproxy.

### Why teams go this way

Cost control and no lock-in. R2 charges no egress fees, which matters when you serve a lot of files. S3 storage runs about two cents per GB per month at the standard tier. At large volume, the raw storage and bandwidth cost can be a fraction of what a managed credit or usage plan charges.

### What you take on

You now own file validation, virus scanning if users upload documents to each other, orphan cleanup when an upload never gets attached to a record, retries for flaky mobile connections, and the image variant logic. For video, you would also own transcoding, which is a project in itself. AWS offers managed transcoding, but wiring it to a good player and handling failures is real work.

Our view: the DIY route makes sense when your media bill is already large enough that the savings pay for an engineer's attention, or when you have compliance rules that keep files inside your own cloud account. Before that point, a managed tool is cheaper once you count the time. For a sense of how these costs compare to everything else your app spends on, see our breakdown of [app infrastructure cost per month at 1K, 10K and 100K users](/blog/app-infrastructure-cost-per-month-1k-10k-100k-users).

![Developer workstation with multiple screens showing cloud storage dashboards and upload logs](https://images.unsplash.com/photo-1492619375914-88005aa9e8fb?w=800&q=80)

## Side by side: cost, effort and limits

A direct comparison makes the tradeoffs clearer. These are rough ranges drawn from public pricing and secondary reports as of late October 2026. Treat them as planning numbers, not quotes.

- **Uploadthing:** free plan around 2 GB, then roughly $10 to $25 per month for 100 to 250 GB. Handles files only. Setup takes an afternoon for a Next.js team.

- **Cloudinary:** free at about 25 credits, roughly $99 per month for around 225 credits, roughly $249 per month for around 600. Excellent for images, workable for light video, expensive for heavy video. Setup takes a day or two, plus time to design your transformations.

- **Mux:** pay per minute for encoding, storage and delivery, with a free delivery allowance. Video only. Setup takes a few days to get the player, uploads and webhooks right.

- **S3 or R2 with your own code:** the lowest raw cost at scale, the highest engineering cost up front. Plan on a couple of weeks for images and a lot longer for video.

### Where the bill surprises people

With Uploadthing the surprise is usually storage that grows quietly because nobody deletes old files. With Cloudinary it is the shared credit pool, where a viral post or a batch import of videos can push you up a tier overnight. With Mux it is delivery minutes, especially if you autoplay video in a feed where nobody asked to watch it. With DIY it is the engineer's time, which never appears on an invoice but is usually the biggest number.

### Lock-in is mostly about URLs

Whatever you choose, store your own file identifiers in your database and build URLs in one place in your code. Cloudinary transformation URLs and Mux playback IDs are tied to those vendors, so if you scatter them across components, migrating later hurts. If you keep a single helper that turns a record into a URL, you can swap a vendor over a weekend.

## Which one for your product

Here is how we would map common product situations to a pick. None of these are absolute, but they are where we would start.

- **A B2B dashboard where users attach PDFs, spreadsheets and logos:** Uploadthing. You do not need image processing, and the cost stays tiny.

- **An e-commerce store or marketplace with thousands of product photos:** Cloudinary. The on-the-fly resizing and format conversion pay for themselves in page speed and saved engineering.

- **A course platform, creator tool or video messaging app:** Mux. Adaptive streaming and analytics are the product, and per-minute pricing maps cleanly to your revenue per user.

- **A social app with photos and short video:** Cloudinary or a DIY image layer for photos, Mux for video. Do not push both through one credit pool. The numbers in our guide on [what it costs to build a social media app](/blog/how-much-does-it-cost-to-build-a-social-media-app) show why media is one of the largest recurring line items in that category.

- **A real estate or travel listing site:** Cloudinary for photos, with its built-in video for a short tour clip, unless video is a major draw. If it is, add Mux.

- **A startup watching every dollar with a technical founder:** Uploadthing now, and move to S3 or R2 with presigned uploads when the monthly bill makes the migration worth a week of work.

- **A regulated product, such as health or legal, where files must stay in your own cloud account:** S3 or R2 inside your own account, with encryption and access logging you control.

If you are torn between two, pick the cheaper one that covers your launch scope and keep your URL logic in one helper. Wrong early choices here are easy to reverse. Wrong late choices, after a million files exist, are not.

Kanopy helps founders pick a stack and build the product on it, and upload handling is one of the first decisions we pressure test. The next step is to see what your media choices do to your monthly bill as you grow, which our [infrastructure cost guide](/blog/app-infrastructure-cost-per-month-1k-10k-100k-users) lays out stage by stage. If you want a second opinion on your own plan, [Book a free strategy call](/get-started).

---

*Originally published on [Kanopy Labs](https://kanopylabs.com/blog/cloudinary-vs-uploadthing-vs-mux-user-uploads-images-video)*
