// VERSUS · CLOUDINARY

A specialized layer, not a platform. No upload step, no SDK, no add-ons.

Cloudinary is the heavyweight of media — DAM, video, AI tags, every SDK and integration on the map. img apis is a specialized layer underneath: paste a source from your bucket, get a transform, a /info bundle with palette + BlurHash + metadata, /grid composition for 2–5 sources, an account-level default mark that auto-applies across every endpoint on Pro+ — and background removal at a disclosed credit cost. No upload pipeline, no SDK, no separate AI add-on invoice.

You like Cloudinary but you keep paying for DAM features you do not use, an SDK per runtime, and AI add-ons that arrive as separate invoice lines. You want intelligence (BlurHash, palette, metadata) in one call, composition without templates, brand marks that travel with every asset, and one predictable monthly invoice.

Pick us when

Pick img apis when no upload step and one predictable bill matter.

  • You want to point at an existing R2 or S3 bucket — no upload pipeline, no Cloudinary public-ID indirection.
  • You need palette + BlurHash + metadata in a single /info call, with WCAG-paired contrast on every swatch.
  • First-class /grid composition for 2–5 sources, plus /placeholder endpoints that render BlurHash or color tiles to real PNG.
  • Account-level default mark (Pro+) auto-applies across every endpoint — set the brand once, every URL ships marked.
  • Background removal at a disclosed credit cost, idempotent credits (same URL never billed twice), and one predictable monthly invoice.
Pick them when

Pick Cloudinary when you want a media platform.

  • You need a full DAM — tags, folders, approvals, AI-assisted moderation.
  • Video transformations, adaptive streaming and analytics are first-class for your roadmap.
  • You want established procurement, certifications and an enterprise sales contact.
  • A first-party SDK per runtime and an admin UI for non-engineers are non-negotiable.
  • AI tagging / AI editing as bundled features matter more than BlurHash and palette.
// SIDE BY SIDE

img apis vs Cloudinary

Compared on billing shape and feature coverage — line by line, claim by claim.

// comparison matrix2 vendors
// feature
oursimg apis
Cloudinary
Mid-tier billing modelflat plan, bandwidth bundledcredit pool
Transforms at mid-tierflat credit allowancecredits shared with bandwidth + storage
Palette + BlurHash + metadata in one /info call
Color pairs with WCAG contrast
Smart gravity (face + entropy)
Background removal
BlurHash decode endpoint (renders to PNG/JPEG)
1-year immutable transform cache
Edge POPs serving you300+60+
Free trial200 cr / 7d25 cr / mo
Bill is one line (no shared pool with bandwidth & storage)
Same URL never billed twice
Custom domain on cheapest plan

Spotted something off? tell us →

// FORMAT NEGOTIATION

Same negotiation. Without the DSL.

Cloudinary auto-negotiates via f_auto inside the transformation string and behind their SDK. img apis does the same with format=auto on a plain URL — no transformation DSL, no SDK to update. Per-Accept negotiation lands on AVIF where the browser allows.
Hero · Trail hero78%
jpeg
134KB
webp
52KB
avif
29KB
Product · Linen hero78%
jpeg
148KB
webp
56KB
avif
32KB
Editorial · Bloom hero79%
jpeg
142KB
webp
53KB
avif
30KB
One URL · format=auto · no transformation DSL.
// PALETTE + BLURHASH + METADATA

Three trips, collapsed into one.

Cloudinary exposes metadata and dominant color through separate transformation flags; BlurHash is not in their published feature list. img apis returns dimensions, a WCAG-paired palette and a BlurHash string — all from a single /info call with a 24-hour edge cache.
// UPLOAD VS POINT-AND-SHOOT

Your bucket. Your URL.

Cloudinary starts at upload — your image lives in their bucket, addressed by their public ID, served through their delivery URL. img apis starts at your bucket and exits at a URL. No SDK config, no upload step, no public-ID indirection.
typescript·Cloudinary · upload then URL
import { v2 as cloudinary } from 'cloudinary';

cloudinary.config({
  cloud_name: process.env.CLD_NAME,
  api_key: process.env.CLD_KEY,
  api_secret: process.env.CLD_SECRET
});

// First upload (or pre-upload through their pipeline)…
await cloudinary.uploader.upload('products/runner.jpg');

// …then build a delivery URL.
const url = cloudinary.url('products/runner', {
  width: 480, height: 360, crop: 'fill', gravity: 'face'
});
html·img apis · point at your bucket
<!-- Point at your own bucket — no upload step. -->
<img src="https://imgapis.com/transform/your-bucket/runner.jpg
  ?w=480&h=360&fit=cover&gravity=face" />

<!-- Same URL, every browser, every framework.
     Cache hits are free. No upload pipeline. -->
// READY TO COMPARE FOR REAL

Ship faster than Cloudinary.

200 credits free for 7 days. No card, no SDK to pin — paste a URL, watch it work.