
Made with ChaiBuilder
Images and files you upload in ChaiBuilder — through the builder's media manager or the CMS
admin — are stored as a Payload upload collection (media). Each item is a database
record (filename, alt text, sizes, and metadata) whose binary file lives in a storage
backend you configure.
Images need object storage. By default Payload writes uploaded files to the local filesystem, which is fine for local development but doesn't persist on serverless or containerised hosts (Vercel, Cloudflare, most Docker deploys) — files vanish between deploys and don't exist across multiple instances. For anything beyond local dev, point the
mediacollection at an S3-compatible object store. See Storage Configuration.
media collectionMedia is a standard Payload collection with upload enabled. Out of the box it carries:
alt — alt text (required, localized), used for accessibility and by the AI
image alt text helper.sharp during upload.Because it's a normal collection, media records are queryable and reference-able from your pages and other collections like any structured content.
sharp — and writes a media
record to your database.Inside the builder, the media manager is where editors browse, upload, and pick images
for blocks and fields. Image blocks and any upload-typed field draw from the same media
collection, so an asset uploaded once is reusable everywhere. For editing images in place, see
Media & Images in the visual-builder docs.
If you deploy from ChaiBuilder Cloud, object storage is provisioned for you — an S3
bucket is set up and wired to the media collection automatically, so uploads persist with no
manual configuration. Self-hosting? Configure it yourself — see below.
media collection to S3 (or an S3-compatible store) via the Payload S3 plugin.