{ "model": "article", "fields": {...} }
{ "type": "asset", "assetId": "img_a1b2" }
{ "title": { "en": "Hello", "de": "Hallo" } }
{ "slug": { "en": "hello-world" } }
{ "author": { "model": "author", "id": "auth_x7y8" } }
{ "path": "/:locale/blog/:slug" }
{ "type": "heading", "depth": 3 }
{ "type": "text", "value": "Hi", "marks": ["bold"] }
{ "type": "asset", "ref": "img_a1b2", "alt": "..." }
{ "publishedLocales": ["en", "de"] }

Blobify

The headless CMS that doesn't keep your content.

Publish plain JSON to your bucket. Your app reads it directly. No API, no rate limits, no vendor lock-in.

$ curl https://acme.r2.dev/spaces/main/content/article/c4f2e8a1/published.json
{
"id": "c4f2e8a1",
"model": "article",
"fields": {
"title": { "en": "Hello, world!", "de": "Hallo, Welt!" },
"slug": { "en": "hello-world", "de": "hallo-welt" },
"author": { "model": "author", "id": "auth_x7y8" }
}
}
↑ raw file in your bucket. Localized fields, references and assets are stored as ids.

Contentless

Traditional CMS keeps the content.
We don't.

A headless CMS removes the frontend, but your content still lives on its servers, behind its API, its pricing, its outages. Blobify publishes plain JSON into storage you already control. You get a polished editing experience, and your content stays entirely yours.

Why Blobify

Own your content.
Control your costs.

Traditional Headless CMS

  • Content on their servers
  • Storage charged per GB
  • Requests metered, with rate limits
  • Bandwidth charged for egress
  • Access API with rate limits and quotas
  • Portability proprietary lock-in
  • SSO usually locked to an enterprise tier
vs

Blobify

  • Content in your S3 or R2 bucket
  • Storage no fees through us 10 GB storage / month free through Cloudflare
  • Requests served straight from your bucket 10 million requests / month free through Cloudflare
  • Bandwidth no fees through us No egress fees on Cloudflare R2
  • Access fetch directly, no API
  • Portability plain JSON, walk away anytime
  • SSO on every plan, no enterprise add-on

How it works

Bring your own bucket.
We just write to it.

A bucket is just a folder in the cloud, hosted by Amazon (S3) or Cloudflare (R2). Blobify writes your content into it as plain JSON, and anything can read it back: a website, an app, even a game.

BBlobifyDashboardMCPfor humans and AI</>Your AppNext / Astro / etc.SSR · SSG · CSRYour BucketS3 / Cloudflare R2{ .. }.json{ .. }.json{ .. }.jsonwritereadfetchno API neededYou own it. You control it.Plain JSON files in your cloud storage

And it scales. Sorted, paginated indexes and instant lookups keep reads fast across millions of entries, still just static files on your CDN, no query engine required.

See how it works and scales

Platform

Everything you need

A complete content platform, from modeling to delivery.

Content modeling

Models

Content types with typed, validated fields

Blocks

Reusable component blocks like Hero, CTA, or FAQ, embeddable in any model

Routing

Each model defines URL patterns with per-locale overrides, resolved by a typed helper

Rich Text

Structured rich text with embedded blocks, links, and references. Clean JSON, not HTML soup

References

Link content together with validated cross-model references

Singletons

Single-instance content types like site settings or a homepage: one entry, no list to manage

Content editing

Localization

Multi-language content with per-locale publishing

Version History

Track changes and restore previous versions

Draft/Published

Preview changes before going live

Auto-save

Edits save as you type, with recovery so you never lose work

Assets

Images

On-the-fly resize, crop, focal point, and format conversion via Cloudflare Images

Public player

Open audio and video in a shareable public player, no dashboard login

Dropzones

Turn any folder into a public drop zone; collect uploads with no account

Sharing

Shareable asset URLs that work without a dashboard login

Developer experience

TypeScript SDK

Generated types and typed client from your schema

AI & MCP

A full MCP server so AI agents can model, write, and publish your content

Webhooks

Notify external services when content changes

Indexes & lookups

Instant lookups by any field, plus sorted, numbered pagination over millions of entries

Team & access

User Management

Roles and per-space access control

SSO

Single sign-on with any OIDC provider, included on every plan

Spaces

Separate environments like main and staging, each with its own access

Private buckets

Keep your bucket private: the dashboard reads through a scoped storage proxy, so nothing is exposed publicly

AI-native authoring

Edit and publish from anywhere.
Even from your phone.

Connect Claude or ChatGPT in one click. OAuth consent hands the agent scoped access to your org, with no API keys to copy or paste. Then just ask: design a content schema from a prompt, translate an entry into a new locale, bulk-import 5,000 entries from your old CMS. All without opening the dashboard.

MCP server

Model Context Protocol

Blobify ships a built-in MCP server so AI agents can use it as a tool. Design schemas, find entries, edit fields, publish locales, bulk-import from another CMS, generate variants.

Connect Claude or ChatGPT in one click, or just drop in an API key.

claude.ai · Add connectorauthorized
Name  Blobify
URL   api.blobify.io/v1/mcp
Auth  Sign in with Blobify (OAuth)
      ✓ consent granted, no key to copy
ClaudeChatGPT+ any MCP client
MCP setup guide

Design from a prompt

Ask “Make me a blog schema like X.com” and the AI generates models, fields, and validation. You review and approve before anything ships.

From your phone

Fix a typo over breakfast: open Claude or ChatGPT on your phone, ask it to update the post, hit publish. No laptop. No dashboard.

In bulk

Moving off your old CMS? Ask the AI to bring everything over: thousands of entries, translations included. Imports are safe to re-run, so nothing gets duplicated and a migration can be retried until it's perfect.

Assets

Not just content.
A real asset manager.

Images, audio, video and PDFs, all managed in the same bucket-first model. Dropbox-style workflows, except the files live in your bucket and never get locked in.

Images, delivered from your bucket

Store one original. Blobify serves it through Cloudflare Images, which generates every size, format and crop the moment a page asks for it, then caches it at the edge. You never pre-export thumbnails or touch the source file.

Set a focal point on what matters and it rides along on the image reference. However the picture is cropped, that spot stays in frame instead of the dead center. Drag it below and the portrait and banner re-frame around it.

focal pointresize & cropWebP / AVIFedge-cached
drag the focal point

focal point · x 0.20 · y 0.51

2:3 portrait
wide banner

Yours, always

Every file lives in your S3 or R2 bucket and never leaves it. Serve straight from your bucket or CDN, cancel any time, and keep everything. No lock-in.

Upload from anywhere

Drag and drop from the dashboard with live progress. Files upload straight to your bucket, never through our servers.

Organized & catalogued

Folders, display names, and rich metadata on every file. A fast catalog index powers listing, with a JSON document per asset by ID.

Play & share

Open audio and video in a public player, and hand out shareable asset links that work without a dashboard login.

Drop zones for collecting files

Turn any folder in your bucket into a public drop zone. Share the link and people outside the dashboard can upload straight into that folder, with no account and no console access. You pick which folder, browse what lands there, and switch uploads on or off whenever you like.

uploads/press-kit/drop zone
logo.svg12 KB
keynote.pdf4.1 MB
hero-shot.jpg2.4 MB
Drop files or click to upload

For developers

Developer Experience First

Two ways to read content. Use whatever fits. Both read the same JSON files from your bucket.

Option 1

Plain fetch

No API, no SDK. Just fetch JSON from your bucket.

const bucketPath = process.env.S3_BUCKET_PATH;

// 1. Read the manifest: which shards exist for each model
const manifest = await fetch(
  `${bucketPath}/summaries/published/index.json`
).then((res) => res.json());

// 2. Fetch this model's summary shards in parallel
const shards = await Promise.all(
  manifest.models.article.shards.map((shard) =>
    fetch(
      `${bucketPath}/summaries/published/article/${shard}.json`
    ).then((res) => res.json())
  )
);

// 3. Merge the shards into your articles, each with the
//    summary fields you configured (localized where translatable)
const articles = shards.flatMap((shard) => shard.items);
Option 2

Typed TypeScript client

Generated types from your schema. References resolved. Localized helpers built in.

import { createClient } from './blobify';

// 1. Point the generated client at your bucket
const blobify = createClient({
  baseUrl: 'https://my-bucket.s3.amazonaws.com',
  spaceId: 'main',
  // Published in production, drafts everywhere else
  state:
    process.env.NODE_ENV === 'production'
      ? 'published'
      : 'draft',
});

// 2. Fully typed reads, references and assets resolved
const articles = await blobify.getAll('article', 'en');

// 3. Find one by any summary field (slug, etc.)
const page = await blobify.findOne('page', { slug: 'about' }, 'en');

Trust & resilience

Your site never calls us.
It doesn't even have our number.

Reads come straight from your own bucket and CDN, so Blobify's uptime has zero effect on your live site. Your content lives in an S3 or R2 bucket you own: take your data and walk away anytime, and your app keeps serving the exact same JSON.

Reads never touch Blobify

Your site fetches published JSON directly from your bucket and CDN. Our servers are only in the loop while you edit, so if Blobify has an outage your live site keeps serving, unaffected.

Your data, your bucket

Content is plain JSON in an S3 or R2 bucket you own and control. Cancel anytime and there's no export step and no lock-in: the files are already yours, right where they always were.

Pricing

Simple, transparent pricing

Beta: billing is not active yet. Calculator reflects launch-target pricing.

Build your plan

Adjust each slider to match your needs.

Editors
1free
12381530
Entries
1,000free
1,00010k25k100k500k1m5m10m
Spaces
1free
1241020
Locales
1free
12481020
Free
No credit card required
i

Did you know?

We don't charge for requests, storage, or bandwidth. Content lives in your own S3/R2 bucket. You pay your cloud provider directly at their rates.

Custom

For teams that need a more tailored setup, pricing shape, or rollout.

  • Unlimited editors, records, locales, and write ops
  • Flexible onboarding and migration support
  • Architecture guidance for your content model and delivery setup
  • Custom integrations and workflow polish
  • A plan shaped around your team rather than fixed tiers
Contact us

Cancel anytime. Your content stays yours.

If you cancel, your app keeps reading the same JSON from your bucket. No data export step, no migration window, no lock-in.

FAQ