Build in a weekendScale to millions

Supabase is an open source Firebase alternative for building secure and performant Postgres backends with minimal configuration.

Works seamlessly with 20+ frameworks
Next.jsReactNuxtFlutterSveltePythonVue

Build faster and focus on your products

Database

Every project is a full Postgres database, the world's most trusted relational database.

Learn more about /databaseLearn more
Authentication

Add user sign ups and logins, securing your data with Row Level Security.

Learn more about /authLearn more
Storage

Store, organize, and serve large files. Any media, including videos and images.

Learn more about /storageLearn more
Edge Functions

Write custom code without deploying or scaling servers.

Learn more about /edge-functionsLearn more
Realtime

Create multiplayer experiences by sharing, broadcasting, and listening to changes from other clients or the Database.

Learn more about /realtimeLearn more
Vector

Integrate your favorite ML-models to store, index and search vector embeddings.

Learn more about /vectorLearn more
backed by
Y CombinatorMozillaCoatueFelicis

Join the community

Supported by a network of early advocates, contributors, and champions.

What can you build with supabase?

There are many example apps and starter projects to get going

Svelte kanban board

A Trello clone using Supabase as the storage system.

joshnuss GitHub profile picturejoshnuss

Next.js Realtime chat app

Next.js Slack clone app using Supabase realtime subscriptions

supabase GitHub profile picturesupabase

Next.js Subscription and Auth

The all-in-one starter kit for high-performance SaaS applications.

Vercel GitHub profile pictureVercel

Expo Starter

Template bottom tabs with auth flow (Typescript)

codingki GitHub profile picturecodingki

NestJS example

NestJS example using Supabase Auth

hiro1107 GitHub profile picturehiro1107

ReactJS realtime chat app

Example app of real-time chat using supabase realtime api

shwosner GitHub profile pictureshwosner

Instant APIs that do the hard work for you

We introspect your database to provide APIs instantly. Stop building repetitive CRUD endpoints and focus on your product.

TypeScript Support

Type definitions built directly from your database schema

Explore more about /docs/client/generating-typesExplore more

Install from CDN

Use Supabase in the browser without a build process

Explore more about /docs/client/initializingExplore more

Local emulator

Develop locally and push to production when you're ready

Explore more about /docs/guides/self-hostingExplore more

Supabase CLI

Manage Supabase projects from your local machine

Explore more about https://github.com/supabase/cliExplore more
import { createClient } from '@supabase/supabase-js'
    
// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Create a new user
const { user, error } = await supabase.auth.signUpWithPassword({
  email: 'example@email.com',
  password: 'example-password',
})
    
import { createClient } from '@supabase/supabase-js'
    
// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Get notified of all new chat messages
const realtime = supabase
  .from('messages')
  .on('INSERT', message => {
    console.log('New message!', message)
  })
  .subscribe()
    
import '@supabase/supabase-js'

// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Get public rooms and their messages
const publicRooms = await supabase
  .from('rooms')
  .select(`
    name,
    messages ( text )
  `)
  .eq('public', true)
    
import { createClient } from '@supabase/supabase-js'

// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Create a new chat room
const newRoom = await supabase
  .from('rooms')
  .insert({ name: 'Supabase Fan Club', public: true })
  
import { createClient } from '@supabase/supabase-js'
    
// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Update multiple users
const updatedUsers = await supabase
  .from('users')
  .eq('account_type', 'paid')
  .update({ highlight_color: 'gold' })

Build your app without leaving the dashboard

Manage your data with the familiarity of a spreadsheet

You don’t have to be a database expert to use Supabase. Our table editor makes Postgres easy to use, even for non-techies. You can do everything right in our dashboard.

Explore Table View about /databaseExplore Table View

In-built SQL editor for when you need greater control

Write, save, and execute SQL queries directly on our dashboard, with templates to save you time. Run common queries and even build applications using our growing list of templates.

Explore SQL Editor about /databaseExplore SQL Editor

User management as straight-forward as it can be

Easily manage your users with Supabase Auth, with email logins, magic links, and third-party logins. Create complex access policies with SQL rules to fit your unique business needs.

Explore Auth about /authExplore Auth

Build in a weekend, scale to millions