Store and serveany type of digital content

An open source S3 compatible storage solution with unlimited scalability, for any file type. With custom policies and permissions that are familiar and easy to implement.

Everything you need
for storage

S3 compatible storage with global CDN, image transformations, and fine-grained access controls powered by Postgres RLS.

Interoperable

Integrates with the rest of Supabase — Auth and Postgres work together.

Lightning fast

Thin API server layer built on Postgres permissions with content delivered via global CDN.

Files
images, videos, docs
Analytics
Iceberg, time-series
Vectors
embeddings, RAG

Multiple bucket types

Files, Analytics, or Vector buckets — choose the right storage model for your application.

Supabase is great because it has everything. I don't need a different solution for authentication, a different solution for database, or a different solution for storage.

Yasser ElsaidFounder of Chatbase

Bucket types
for every application

Files buckets

  • Store images, videos, documents, and more
  • Serve fast from a global CDN
  • Fine-grained access controls
  • Image optimizations and transformations

Analytics buckets

  • Apache Iceberg open table format
  • Efficient query, partition, and transform
  • Historical and time-series data
  • Optionally expose via Postgres

Vector buckets

  • Store and index vector embeddings
  • Multiple distance metrics
  • Metadata filtering and similarity queries
  • RAG systems and AI-powered search

Simple and convenient
APIs

Built from the ground up for interoperable authentication. Fast and easy to implement using our powerful library clients.

// Upload an image to the "avatars" bucket
const spaceCat = event.target.files[0]
const { data, error } = await supabase
  .storage
  .from('avatars')
  .upload('space-cat.png', spaceCat)
Documentation

Integrates natively
with Supabase Auth

Storage authorization is built around Postgres so that you can use any combination of SQL, Postgres functions, and even your own metadata to write policies.

create policy "Public Access"
on storage.objects for all
using ( bucket_id = 'avatars' );
Documentation

Build in a weekend, scale to millions