Pricing

Docs

Programmable Media Runtime

Upload once.
Get every
variant.

Define processing pipelines visually — resize, encode, encrypt, run AI — and every variant auto-regenerates when the pipeline changes. GraphQL-native. EU-hosted.

Start FreeLive Playground

AES-256

EU-hosted

GraphQL

2 GB free

live

product.jpg

4.8 MB · input

resize

400×400 · cover

thumb

.webp · 8 KB

encode

webp · q:80

index

.avif · 89 KB

encrypt

AES-256-GCM

original

.enc · 4.8 MB

pipeline changes → all variants regenerate

Hosted

EU-hosted (US coming soon)

Encryption

AES-256-GCM

API

GraphQL + REST

Storage

BYOS supported

Compliance

GDPR · DPA

Sound familiar?

You've built this before.

Every media-heavy product hits the same walls. Resize logic, vendor lock-in, compliance gaps. The infrastructure work that has nothing to do with your product.

Writing resize logic again?

Every project: S3 bucket, Lambda function, Sharp config, CloudFront invalidation. You've built this pipeline five times. It breaks the same way every time.

SaaS & startup teams

Cloudinary bill scaling faster than revenue?

10K SKUs × 5 variants × 3 formats. The transform count explodes. You pay per operation, not per outcome. And you can't bring your own storage.

E-commerce & agencies

EU compliance requires data sovereignty?

Your users are in Germany. Your images live in us-east-1. Your DPA says "EU-only processing." Cloudinary doesn't offer that. You're stuck.

EU enterprise & regulated

What if the pipeline was the product, not the problem?

How it works

Upload once. Pipeline does the rest.

From raw file to optimized, encrypted, edge-cached variants — automatically. Change your pipeline and every variant regenerates.

01

Create a namespace

An isolated space for one project or content type. Own encryption keys, own pipelines, own storage config.

namespace: "my-shop" → EU region, AES-256

02

Build a workflow

Drag nodes into a processing graph. Resize, encode, watermark, run AI detection — each node is a step. Connect them.

input → resize → encode_webp → encrypt → output

03

Upload via API

GraphQL mutation, REST endpoint, or SDK. Upload any media type — photo, video, audio, file. One call. Resumable.

mutation { uploadPhoto(file: $f, ns: "my-shop") }

04

Variants auto-delivered

Every file flows through your pipeline. Thumb, index, original — generated and cached at edge. Pipeline changes? All variants auto-regenerate.

thumb.webp 4KB · index.avif 89KB · original.enc 2.4MB

product-hero.jpg

4.2 MB

4096 × 2730

JPEG

Input

Resize

400px · cover

Encode

WebP · q72

Encrypt

AES-256-GCM

AI

bg-remove

optional

Variants

thumb.webp

320×320 · 4 KB · CDN-cached

index.avif

1280px · 89 KB · CDN-cached

original.enc

4.2 MB · AES-256 · vault

input received

2 transforms

encrypted

3 variants ready

pipeline active

Content types

Any media. One pipeline.

Photos, videos, audio, documents — each flows through its own processing graph and produces typed variants automatically.

Input

product-hero.jpg

JPEG · 4.8 MB

Pipeline

resize 2048×auto

encode webp q:85

resize 400×400

encode webp q:72

encrypt AES-256

Output variants (3)

index

2048×1365 · lossy

.webp

142 KB

thumb

400×400 · cover crop

.webp

8.4 KB

original

AES-256-GCM · per-file DEK

.enc

4.8 MB

Variants

3

Pipeline nodes

5

Encrypted

1

Total output

3 files

Why Partikl

What you won't find elsewhere.

Not incremental improvements. Fundamentally different architecture for media processing. Built for developers who need control, not a black box.

Visual pipeline builder

Drag-and-drop node graph for media processing. Connect resize, encode, encrypt, AI nodes into any topology. See the flow, debug visually, export as JSON.

Cloudinary: URL params. Imgix: query string. No visual graph anywhere.

Per-namespace encryption

AES-256-GCM or ChaCha20-Poly1305. Each namespace has its own key hierarchy. Keys in isolated Vault. We never see your plaintext. Ever.

Cloudinary: no encryption. Imgix: no encryption. Bunny: no encryption.

Auto-regenerate variants

Change a node parameter — quality, format, dimensions — and all existing variants for all files in that pipeline automatically regenerate. No manual reprocessing.

Everywhere else: re-upload or write a migration script.

AI addon marketplace

NSFW detection, similarity search, upscale, background removal, watermarking, object detection — plug into any pipeline as a node. Pay per use. First N free.

Cloudinary: limited built-in AI. Imgix: none. No marketplace model.

GraphQL-native + subscriptions

Not a REST wrapper. Native GraphQL with mutations, queries, and real-time subscriptions. Know when your upload is processed, when variants are ready, when a pipeline errors.

Everyone else: REST + webhooks. No real-time. No subscriptions.

BYOS — Bring Your Own Storage

Connect your S3, R2, or any S3-compatible bucket. We process and encrypt, you store. Your domain, your infrastructure, your data sovereignty.

Cloudinary: their storage only. Imgix: origin pull only. No BYOS.

Developer experience

Ship in minutes, not sprints.

One API call. Upload any media, get processed variants back. GraphQL-native with SDKs for every major platform.

GraphQL — Request

mutation UploadPhoto($file: Upload!) {
  uploadPhoto(
    file: $file
    namespaceId: "ns_my-shop"
  ) {
    id
    filename
    size
    variants {
      kind        # thumb | index | original
      url
      format
      size
      encrypted
    }
  }
}

Response

{
  "data": {
    "uploadPhoto": {
      "id": "ph_8xk2m",
      "filename": "product-shot.jpg",
      "size": 2457600,
      "variants": [
        { "kind": "thumb",    "url": "…/thumb.webp",     "format": "webp", "size": 4200,    "encrypted": false },
        { "kind": "index",    "url": "…/index.avif",     "format": "avif", "size": 89000,   "encrypted": false },
        { "kind": "original", "url": "…/original.enc",   "format": "enc",  "size": 2457600, "encrypted": true  }
      ]
    }
  }
}

AI Addon Marketplace

Plug AI into any pipeline. Pay per use.

Each addon is a node. Drop it into your workflow graph, configure once — runs automatically on every matching file. No ML infrastructure. No API juggling.

Browse all addons

Included by default — always free

Core transforms in every plan. No extra charges, no limits.

Resize & Crop

URL params · CDN-cached · Free

Compress & Format

Auto WebP · AVIF · No limits · Free

Deduplication

Hash-based · On-upload · Free

AI addons — pay per use

First 20 free

Background Removal

On-upload

Batch

API

Remove or replace image backgrounds with precision. Output clean PNG or composite onto any color. Batch-ready.

$0.05 / image

First 50 free

Alt Text Generator

On-upload

SEO

30+ langs

SEO-ready descriptions auto-generated in 30+ languages. Stored in variant metadata on every upload.

$0.02 / image

First 10 free

Object Detection

API

Batch

Realtime

Bounding boxes + class labels via YOLO. Returns structured JSON in variant metadata. Tag, filter, search.

$0.05 / image

First 100 free

Similarity Search

Search

Dedup

API

Find duplicates and near-duplicate images. Embeddings stored per-file. Query via API or dedup on upload.

$1 / 1K checks

First 50 free

Auto-Moderate

Safety

On-upload

API

Detect NSFW and risky content before it goes live. Configurable thresholds. Blocks or flags automatically.

$2 / 1K images

First 5 free

Upscale / Denoise

Batch

API

On-demand

2×/4× AI upscaling with noise removal. Crystal-clear results from low-res source material.

$0.10 / image

All addons are pipeline nodes — combine any way you want. Background removal → alt text → similarity index, all in one upload.

Explore full marketplaceView docs

Built for your context

One runtime. Every team.

SaaS Builders

Stop writing the same pipeline twice.

S3 + Lambda + Sharp + CloudFront. Every. Single. Project.

One API call. Typed variants back. Done.

< 5 min to first variant

GraphQL + subscriptions

SDK: Node.js, Python, Go

Free tier · 2 GB included

E-commerce Teams

10K SKUs. 5 sizes. Zero manual work.

Every product upload needs 5 variants × 3 formats = 15 transforms. Manually.

Define once, auto-generate on every upload.

~93% bandwidth reduction

Auto WebP/AVIF conversion

Background removal addon

Shopify / WooCommerce ready

EU Enterprise

Your data never leaves the region you set.

Cloudinary = US servers. Your DPA says EU-only. You're stuck.

Storage, processing, cache — all in EU. GDPR DPA included.

AES-256 · GDPR DPA

Per-namespace encryption

BYOS — your S3 bucket

Self-hosted (roadmap)

Pricing

Simple usage-based pricing.

Start free. Pay as you grow. No surprise bills.

Free

$0

forever

2 GB · 5K transforms

included · overage billed

Start building. No credit card.

3 workflows

2 namespaces

GraphQL API

Documentation

Start Free

BEST VALUE

Starter

$9

/month

15 GB · 50K transforms

included · overage billed

For indie developer or side-project

25 workflows

10 namespaces

AES-256 encryption

BYO Domain supported

Email support

Start Starter Trial

FOR TEAMS

Pro

$29

/month

50 GB · 100K transforms

included · overage billed

For teams shipping fast.

Unlimited workflows

50 namespaces

Addon Custom API

BYO Storage supported

Email support

Start Pro Trial

Team

$79

/month

400 GB · 1M transforms

included · overage billed

For scaling products.

Unlimited workflows

Unlimited namespaces

Priority processing queue

Team members: up to 10

Priority support

Start Team Trial

Need unlimited transforms, custom keys, BYOS, or self-hosted?

Ready to ship

Start building in 2 minutes.

Create a namespace. Drop in a pipeline. Upload your first file. Get encrypted, edge-cached variants back. No infrastructure meetings.

Start Free

2 GB free

AES-256 encrypted

EU-hosted

No credit card