Design and Manage Supabase Databases Visually with DbSchema

DbSchema lets you design, manage, and document Supabase databases. Create ER diagrams, define tables and columns, and generate SQL scripts - with or without a live database connection.

Use Git to share the design, compare it with the Supabase database, and deploy changes. DbSchema also includes a data editor, query builder, and HTML5 documentation - everything you need in one tool.

DbSchema Database Designer

Download DbSchema Download Supabase JDBC Driver

Supabase's PostgreSQL Foundation and RLS-Aware Schema Visualization

Supabase is an open-source Firebase alternative built entirely on top of PostgreSQL. It layers a rich set of services — PostgREST for automatic REST API generation, Realtime for WebSocket-based change subscriptions, Auth for user management, Storage for file uploads, and Edge Functions for server-side logic — all driven by the same underlying PostgreSQL database. Row Level Security (RLS) policies define which rows each authenticated user can read or modify, turning access control into a first-class database concern.

DbSchema connects to the Supabase PostgreSQL instance directly and reverse-engineers the full schema, including tables in the public schema, PostgREST views, RLS policy definitions visible via pg_policies, and all foreign key relationships. The visual diagram gives your team a single-pane view of the data model that PostgREST exposes as a REST API, making it straightforward to reason about the relationship between your tables and the API endpoints your frontend consumes.

Supabase PostgreSQL schema with RLS policies visualized in DbSchema

Writing PostgreSQL Queries Against Supabase

Supabase is standard PostgreSQL under the hood, so every PostgreSQL SQL feature is available — triggers, stored procedures, DO blocks, CTEs, window functions, and more. DbSchema's SQL editor connects via the standard PostgreSQL JDBC driver and gives you a full-featured query environment. You can run EXPLAIN ANALYZE to profile slow queries, test RLS policies by temporarily setting SET ROLE authenticated, or script bulk data migrations using DO $$...$$ anonymous blocks.

The editor supports multiple simultaneous query tabs, which is useful when you need to cross-reference data from several related tables or compare query plans before and after adding an index. Results can be exported directly to CSV for reporting or handed off to your data team for further analysis.

Writing PostgreSQL queries against Supabase in DbSchema SQL editor

Exploring Supabase Tables Including pgvector Embeddings

Supabase supports the pgvector extension for storing and querying machine learning embeddings, making it a popular backend for AI-powered features. DbSchema's data explorer renders vector column values so you can spot-check that embedding rows are populated correctly. You can filter the table by any other column to retrieve a specific record and inspect its embedding alongside its metadata, which is useful for debugging nearest-neighbour search mismatches.

The explorer also makes it easy to navigate the auth.users, storage.objects, and other Supabase system schemas that sit alongside the public schema. This is helpful when investigating permission issues or understanding the relationship between user IDs in auth.users and rows protected by RLS policies in your application tables.

Exploring Supabase tables and pgvector data in the DbSchema data explorer

Connecting DbSchema to Supabase

Supabase exposes a standard PostgreSQL connection. Select PostgreSQL as the database type in DbSchema and use the connection string from the Supabase dashboard under Settings → Database. The JDBC URL format is: jdbc:postgresql://db.xxxxx.supabase.co:5432/postgres?sslmode=require. The project reference (xxxxx) is unique to your Supabase project. SSL is enforced and the sslmode=require parameter must be present.

For applications or tools that open many short-lived connections, Supabase also provides a connection pooler (PgBouncer) endpoint whose hostname contains pooler.supabase.com. Use the pooler URL in DbSchema if you are on a free-tier project with a limited connection count, or if you notice connection timeouts during intensive query sessions. The database password is the one set in the Supabase dashboard; it is separate from any API keys used by the PostgREST layer.

Why Teams Use DbSchema with Supabase

  • Renders the complete schema including RLS policies, giving backend and frontend teams a shared visual reference.
  • Simplifies debugging of PostgREST API issues by showing the exact tables and views exposed to the REST layer.
  • Provides a SQL query environment for tasks that are too complex for the Supabase Studio table editor.
  • Makes pgvector embedding data inspectable without writing custom queries, speeding up AI feature development.
  • Generates offline schema documentation that can be included in technical design documents and security audits.
  • Supports both direct connection and pooler connection profiles, giving flexibility for different workload types.