Supabase | The Open Source Firebase Alternative

Supabase is an open source Firebase alternative.

Start your project with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings.

Start your projectDocumentation

Works seamlessly with 20+ frameworks

Database

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

Supabase Postgres database

image

Authentication

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

Edge Functions

Easily write custom code without deploying or scaling servers.

Storage Store, organize, and serve large files, from videos to images.

Realtime Build multiplayer experiences with realtime data synchronization.

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

Supabase Vector graph

image

Join the community

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

GitHub discussionsDiscord

@thatguy_tex

"Working with @supabase has been one of the best dev experiences I've had lately. Incredibly easy to set up, great documentation, and so many fewer hoops to jump through than the competition. I definitely plan to use it on any and all future projects."

@IxoyeDesign

"@supabase is just 🤯 Now I see why a lot of people love using it as a backend for their applications. I am really impressed with how easy it is to set up an Auth and then just code it together for the frontend. @IngoKpp now I see your joy with Supabase #coding #fullstackwebdev"

@varlenneto

"I've been using @supabase for two personal projects and it has been amazing being able to use the power of Postgres and don't have to worry about the backend"

@justinjunodev

"Y'all @supabase + @nextjs is amazing! 🙌 Barely an hour into a proof-of-concept and already have most of the functionality in place. 🤯🤯🤯"

@BraydonCoyer

"And thanks to @supabase, I was able to go from idea to launched feature in a matter of hours. Absolutely amazing!"

@damlakoksal

"Contributing to open-source projects and seeing merged PRs gives enormous happiness! Special thanks to @supabase, for giving this opportunity by staying open-source and being junior-friendly✌🏼"

@KenTheRogers

"Holy crap. @supabase is absolutely incredible. Most elegant backend as a service I've ever used. This is a dream."

@kevcodez

"Over the course of a few weeks, we migrated 125.000 users (email/pw, Gmail, Facebook, Apple logins) from Auth0 to @supabase and have now completed the migration. I'm just glad the migration is done 😅 Went well, besides a few edge cases (duplicate emails/linked accounts)"

@PaoloRicciuti

"Using @supabase I'm really pleased on the power of postgres (and sql in general). Despite being a bit dubious about the whole backend as a service thing I have to say I really don't miss anything. The whole experience feel very robust and secure."

@saxxone

"@supabase is lit. It took me less than 10 minutes to setup, the DX is just amazing."

Start building in seconds

Kickstart your next project with templates built by us and our community.

View all examplesOfficial GitHub library

Stripe Subscriptions Starter

The all-in-one subscription starter kit for high-performance SaaS applications, powered by Stripe, Supabase, and Vercel.

Next.js Starter

A Next.js App Router template configured with cookie-based auth using Supabase, TypeScript and Tailwind CSS.

An open-source AI chatbot app template built with Next.js, the Vercel AI SDK, OpenAI, and Supabase.

LangChain + Next.js Starter

Starter template and example use-cases for LangChain projects in Next.js, including chat, agents, and retrieval.

Flutter User Management

Get started with Supabase and Flutter by building a user management app with auth, file storage, and database.

Expo React Native Starter

An extended version of create-t3-turbo implementing authentication on both the web and mobile applications.

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 schemaExplore more about /docs/client/generating-typesExplore moreInstall from CDN Use Supabase in the browser without a build processExplore more about /docs/client/initializingExplore moreLocal emulator Develop locally and push to production when you're readyExplore more about /docs/guides/self-hostingExplore moreSupabase CLI Manage Supabase projects from your local machineExplore 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 userconst { user, error } = await supabase.auth.signUp({
  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 messagesconst realtime = supabase
  .from('messages')
  .on('INSERT', message => {
    console.log('New message!', message)
  })
  .subscribe()
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 bucketconst { data, error } = await supabase
  .storage
  .createBucket('avatars', {
    public: false,
    allowedMimeTypes: ['image/png'],
    fileSizeLimit: 1024  })
import { createClient } from '@supabase/supabase-js'
// Initialize const supabaseUrl = 'https://chat-room.supabase.co'const supabaseKey = 'public-anon-key'const supabase = createClient(supabaseUrl, supabaseKey)

// Invoke a functionconst { data, error } = await supabase.functions.invoke('hello', {
  body: { foo: 'bar' }
})
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 roomconst newRoom = await supabase
  .from('rooms')
  .insert({ name: 'Supabase Fan Club', public: true })

// Get public rooms and their messagesconst publicRooms = await supabase
  .from('rooms')
  .select(`
    name,
    messages ( text )
  `)
  .eq('public', true)

// Update multiple usersconst 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