Database

Open Source SQL Database
(without the hassle)

Every Supabase project is a dedicated PostgreSQL database, trusted by millions of developers.

PostgreSQL is one of the worlds most scalable databases.

database header
database header

Just Postgres

Every Supabase project is a dedicated Postgres database.

100% portable. Bring your existing Postgres database, or migrate away at any time.

Built-in Auth

Leveraging PostgreSQL's proven Row Level Security.

Integrated with JWT authentication which controls exactly what your users can access.

Realtime enabled

Data-change listeners over websockets.

Subscribe and react to database changes, milliseconds after they happen.

Easy to use dashboard

The simplicity of a Table Editor, or the power of a SQL editor. Your choice.

The simplicity of a spreadsheet

Add, edit, and update your data with the simplicity of a no-code tool.

Create tables

Add tables, columns and rows right in the dashboard. Without a single line SQL.

Set up foreign keys

Build connections throughout your data with the full power of a Relational Database.

Select and Export

Pick the rows you want and export them into a CSV.

@Elsolo244

"Where has @supabase_io been all my life? 😍"

Full SQL

Create tables, functions, join tables - A full SQL editor built into the dashboard

Monaco editor

Built in manaco editor, with rich validation and autocomplete.

Favorite queries

Save your favorite queries to use again and again.

Export to CSV

Any output can be exported into a CSV

@jim_bisenius

"@MongoDB or @MySQL?!?! Please, let me introduce you to @supabase_io and the wonderful world of @PostgreSQL before it's too late!!"

Never write an API again

We introspect your database and provide instant APIs. Focus on building your product, while Supabase handles the CRUD.

Libraries coming soon:

PythonDartC#Kotlin
1// Create a record
2
3// Insert new record into a table called `rooms`
4const { data, error } = await supabase
5  .from('rooms')
6  .insert({ 
7    name: 'Supabase Fan Club', 
8    public: true 
9  })
10
11
12  
13
14
15
16
17
18
19
20
21
1// Read a record
2
3// Retrieve all of the `rooms`, 
4// and get all the messages for each room.
5const { data, error } = await supabase
6  .from('rooms').select(`
7    name,
8    messages ( text )
9  `)
10  .eq('public', true)
11
12
13
14
15
16
17
18
19
20
21

Community driven examples, libraries and guides

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

Svelte kanban board

A Trello clone using Supabase as the storage system.

Created by:joshnuss
NextJS Realtime chat app

NextJS Slack clone app using Supabase realtime subscriptions

Created by:supabase
Next.js Subscription and Auth

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

Created by:Vercel
Expo Starter

Template bottom tabs with auth flow (Typescript)

Created by:codingki
NextJS example

NextJS example using Supabase Auth

Created by:hiro1107
ReactJS realtime chat app

Example app of real-time chat using supabase realtime api

Created by:shwosner
Vanilla-js Auth app

How to sign up and login using supabase and supabase-js using HTML and JavaScript only

Created by:supabase
React Native todo list app

React Native Todo List example with Expo

Created by:supabase
NextJS todo list app

React Native todo List example with Expo

Created by:supabase
React todo list app

React todo List example

Created by:supabase
Svelte todo list app

Sveltejs todo with TailwindCSS and Snowpack

Created by:supabase
Vue.js todo list app

Vue.js todo app using TypeScript

Created by:supabase

Extend your database

Supabase works natively with Postgres extensions.

Choose from a huge collection of Postgres extensions, enabled with a single click.

40+ preinstalled extensions

We only show a few of the extensions supported by supabase here, but we preinstall many more that you can use right away.

1SELECT superhero.name
2FROM city, superhero
3WHERE ST_Contains(city.geom, superhero.geom)
4AND city.name = 'Gotham';
5  
1-- This can be run in the SQL editor
2psql
3CREATE EXTENSION pgcrypto;
4SELECT crypt('mypass', gen_salt('bf', 4));
5crypt
6--------------------------------------------------------------
7$2a$04$1bfMQDOR6aLyD4q3KVb8/ujG7ZAkyie4d/s3ABwuZNbzkFFgXtC76
8
9-- We can now execute the statement below to store the string safely in the database:
10INSERT INTO users (user_id,enc_pass) VALUES (1,'$2a$04$1bfMQDOR6aLyD4q3KVb8/ujG7ZAkyie4d/s3ABwuZNbzkFFgXtC76');
1SELECT order_details.qty,
2    order_details.item_id,
3    order_details.item_price
4FROM order_details,
5  customers
6WHERE customers.id = order_details.customer_id
7AND customers.email = 'john@supabase.io'
8
9-- You can now view pg_stat_statements
10
11SELECT * 
12FROM pg_stat_statements;
13
14userid              | 16384
15dbid                | 16388
16query               | select * from users where email = ?;
17calls               | 2
18total_time          | 0.000268
19rows                | 2
20shared_blks_hit     | 16
21shared_blks_read    | 0
22shared_blks_dirtied | 0
23shared_blks_written | 0
24local_blks_hit      | 0
25local_blks_read     | 0
26local_blks_dirtied  | 0
27local_blks_written  | 0
28...
29
Spatial and Geographic objects for PostgreSQL

PostGIS is a spatial database extender for PostgreSQL object-relational database. It adds support for geographic objects allowing location queries to be run in SQL.

Extensions used:PostGIS
Cryptographic functions for PostgreSQL.

The pgcrypto module is a cryptographic extension that provides a number of hashing and cryptographic functions.

Extensions used:pgcrypto
Tracking execution statistics of all SQL statements

The pg_stat_statements module provides a means for tracking execution statistics of all SQL statements executed by a server.

Extensions used:pg_stat_statements