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.

Start a project
picture

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 deploy

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.

Coming soon

Auto transformation & optimisation

Resize and compress your media before you serve it.

Coming soon
  1. 1

  2. 2

    // Upload an image to the "avatars" bucket

  3. 3

    constspaceCat = event.target.files[ 0]
  4. 4

    const{ data, error } = awaitsupabase
  5. 5

    .storage
  6. 6

    .from( 'avatars')
  7. 7

    .upload( 'space-cat.png', spaceCat)
  8. 8

  9. 9

  10. 10

  11. 11

  12. 12

  13. 13

  1. 1

  2. 2

    // Upload an image to the "avatars" bucket

  3. 3

    constspaceCat = event.target.files[ 0]
  4. 4

    const{ data, error } = awaitsupabase
  5. 5

    .storage
  6. 6

    .from( 'avatars')
  7. 7

    .upload( 'space-cat.png', spaceCat)
  8. 8

  9. 9

  10. 10

  11. 11

  12. 12

  13. 13

  1. 1

  2. 2

    // Upload an image to the "avatars" bucket

  3. 3

    constspaceCat = event.target.files[ 0]
  4. 4

    const{ data, error } = awaitsupabase
  5. 5

    .storage
  6. 6

    .from( 'avatars')
  7. 7

    .upload( 'space-cat.png', spaceCat)
  8. 8

  9. 9

  10. 10

  11. 11

  12. 12

  13. 13

  1. 1

  2. 2

    // Upload an image to the "avatars" bucket

  3. 3

    constspaceCat = event.target.files[ 0]
  4. 4

    const{ data, error } = awaitsupabase
  5. 5

    .storage
  6. 6

    .from( 'avatars')
  7. 7

    .upload( 'space-cat.png', spaceCat)
  8. 8

  9. 9

  10. 10

  11. 11

  12. 12

  13. 13

  1. 1

  2. 2

    // Upload an image to the "avatars" bucket

  3. 3

    constspaceCat = event.target.files[ 0]
  4. 4

    const{ data, error } = awaitsupabase
  5. 5

    .storage
  6. 6

    .from( 'avatars')
  7. 7

    .upload( 'space-cat.png', spaceCat)
  8. 8

  9. 9

  10. 10

  11. 11

  12. 12

  13. 13

Integrates natively with Supabase Auth

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!

Expore documentation
  1. 1

    create policy "Public Access"
  2. 2

    onstorage.objects for all
  3. 3

    using ( bucket_id = 'avatars');
  4. 4

Allow public CRUD access to a bucket

This will allow users access to the bucket named 'avatars'

  1. 1

    create policy "Public Access"
  2. 2

    onstorage.objects for all
  3. 3

    using ( bucket_id = 'avatars');
  4. 4

Allow public CRUD access to a bucket

This will allow users access to the bucket named 'avatars'

  1. 1

    create policy "Public Access"
  2. 2

    onstorage.objects for all
  3. 3

    using ( bucket_id = 'avatars');
  4. 4

Allow public CRUD access to a bucket

This will allow users access to the bucket named 'avatars'

Build in a weekend, scale to millions

Start your project