Publish plain JSON to your bucket. Your app reads it directly. No API, no rate limits, no vendor lock-in.
Contentless
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
How it works
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.
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 scalesPlatform
A complete content platform, from modeling to delivery.
Content types with typed, validated fields
Reusable component blocks like Hero, CTA, or FAQ, embeddable in any model
Each model defines URL patterns with per-locale overrides, resolved by a typed helper
Structured rich text with embedded blocks, links, and references. Clean JSON, not HTML soup
Link content together with validated cross-model references
Single-instance content types like site settings or a homepage: one entry, no list to manage
Multi-language content with per-locale publishing
Track changes and restore previous versions
Preview changes before going live
Edits save as you type, with recovery so you never lose work
On-the-fly resize, crop, focal point, and format conversion via Cloudflare Images
Open audio and video in a shareable public player, no dashboard login
Turn any folder into a public drop zone; collect uploads with no account
Shareable asset URLs that work without a dashboard login
Generated types and typed client from your schema
A full MCP server so AI agents can model, write, and publish your content
Notify external services when content changes
Instant lookups by any field, plus sorted, numbered pagination over millions of entries
Roles and per-space access control
Single sign-on with any OIDC provider, included on every plan
Separate environments like main and staging, each with its own access
Keep your bucket private: the dashboard reads through a scoped storage proxy, so nothing is exposed publicly
AI-native authoring
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.
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.
Name Blobify
URL api.blobify.io/v1/mcp
Auth Sign in with Blobify (OAuth)
✓ consent granted, no key to copyAsk “Make me a blog schema like X.com” and the AI generates models, fields, and validation. You review and approve before anything ships.
Fix a typo over breakfast: open Claude or ChatGPT on your phone, ask it to update the post, hit publish. No laptop. No dashboard.
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
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.
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 point · x 0.20 · y 0.51
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.
Drag and drop from the dashboard with live progress. Files upload straight to your bucket, never through our servers.
Folders, display names, and rich metadata on every file. A fast catalog index powers listing, with a JSON document per asset by ID.
Open audio and video in a public player, and hand out shareable asset links that work without a dashboard login.
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.
For developers
Two ways to read content. Use whatever fits. Both read the same JSON files from your bucket.
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);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
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.
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.
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
Adjust each slider to match your needs.
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.
For teams that need a more tailored setup, pricing shape, or rollout.
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