Storage

Store and serve any type of digital content

An open source Object store service with unlimited scalability, for any file type.

With custom policies and permissions that are familiar and easy to implement.

  • Interoperable

    Integrates well with the rest of Supabase ecosystem, including Auth and Postgres.

  • Lightning fast

    Thin API server layer that leverages Postgres' permissions and performance.

  • Dependable

    Enterprise-level scalability and durability.

Sleek dashboard for managing your media

A complete Object Explorer so that any of your team can use.

Drag and drop uploading, moving objects, and multiple object selection. As easy as working on your desktop.

Изображение возможностей продукта
Изображение возможностей продукта
Изображение возможностей продукта
Изображение возможностей продукта
Изображение возможностей продукта

File previews

Preview any media type, including video and audio.

Check out our example app

Profile management example

Update a user account with public profile information, including uploading a profile image.

Created by: supabase
nextjs-ts-user-management

Simple and convenient APIs

Built from the ground-up for interoperable authentication.

Fast and easy to implement using our powerful library clients. Asset optimization and image transformation coming soon!

  • CDN integration

    Serve from the edge to reduce latency.

  • Auto transformation & optimisation

    Resize and compress your media before you serve it.

  • // 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)
  • // 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)
  • // 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)
  • // 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)
  • // 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)

Integrates natively with Supabase Auth

Using Postgres Row Level Security to create Object access rules.

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.

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

Allow public CRUD access to a bucket

This will allow any user access to the bucket named 'avatars'
  • const policy "Public Access"
  • on storage.objects for all
  • using (bucket_id = 'avatars');
  • const policy "Public Access"
  • on storage.objects for all
  • using (bucket_id = 'avatars');

Allow public CRUD access to a bucket

This will allow any user access to the bucket named 'avatars'

Build in a weekend, scale to millions