Back

Cloudinary vs Uploadthing

Trust Score comparison · March 2026

Cloudinary
86
Trust
Good
View profile
VS
Trust Score Δ
56
🏆 Cloudinary wins
Uploadthing
30
Trust
Caution
View profile

Signal Comparison

1.2M/wkWeekly npm downloads120k/wk
38GitHub commits (90d)185
3kGitHub stars8.5k
41kStack Overflow questions1.2k
ActiveCommunity healthVery Active
CloudinaryUploadthing

Key Differences

FactorCloudinaryUploadthing
LicenseProprietaryMIT
LanguageTypeScript / PythonTypeScript
HostedYesSelf-hosted
Free tier
Open Source
TypeScript

Pick Cloudinary if…

  • You need image/video upload, transformation, and CDN in one service
  • Optimizing media for web performance (WebP, AVIF, lazy loading)
  • Building user-generated content with moderation and resizing

Pick Uploadthing if…

  • Next.js app that needs file uploads without managing S3 yourself
  • Type-safe upload routes with per-route validation and auth
  • Serverless or edge deployment where direct S3 multipart is tricky

Side-by-side Quick Start

Cloudinary
import { v2 as cloudinary } from 'cloudinary';

cloudinary.config({
  cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRET,
});

// Upload and auto-optimize
const result = await cloudinary.uploader.upload('path/to/image.jpg', {
  folder: 'my-app',
  transformation: [{ width: 800, crop: 'scale' }, { quality: 'auto', fetch_format: 'auto' }],
});

console.log(result.secure_url);
Uploadthing
import { createUploadthing, type FileRouter } from 'uploadthing/next';

const f = createUploadthing();

export const ourFileRouter = {
  imageUploader: f({ image: { maxFileSize: '4MB' } })
    .middleware(async ({ req }) => {
      const user = await auth(req);
      if (!user) throw new Error('Unauthorized');
      return { userId: user.id };
    })
    .onUploadComplete(async ({ metadata, file }) => {
      console.log('Upload complete for userId:', metadata.userId);
      console.log('File URL:', file.url);
      return { uploadedBy: metadata.userId };
    }),
} satisfies FileRouter;

export type OurFileRouter = typeof ourFileRouter;

Community Verdict

Based on upvoted notes
🏆
Cloudinary wins this comparison
Trust Score 86 vs 30 · 56-point difference

Cloudinary leads on Trust Score with stronger signal data across downloads and community health. That said, the other tool is worth considering if your use case matches its specific strengths above.