| name | status | total |
|---|---|---|
| Mira Okafor | delivered | 128.40 |
| Lucas Moreau | shipped | 64.00 |
| Hana Sato | paid | 212.90 |
| Tomás Ribeiro | delivered | 39.99 |
Open source, self-hosted
Your database is a universe.
Fly through every table and relationship as a living map, then query it with SQL that knows your foreign keys.
See the shape of your data before you read a single row.
Tables become stars, sized by row count. Foreign keys become light. Related tables gather into coloured clusters, so a 400-table schema reads like a map instead of a list. Hover or tap a star: each one is a table from a sample shop.
- Declared and inferred relationships, from
*_idnaming - Layouts saved per connection; drag a table to pin it
- Stays smooth on 2,000-table schemas
Zoom is semantic. The closer you get, the more it tells you.
Cluster names fade into table names. Hover one to light up its neighbours, double-click to focus on a neighbourhood, Ctrl K to jump anywhere.
Right down to the columns.
Up close, every table opens into a column card: keys, types, references. One more click and you're in its data, its structure, or a SQL tab with the query already written.
Try the path finderUniverse, data and SQL. One window.
Only in DBZuper
Pick two tables. Get the JOIN.
How does a customer connect to a warehouse? DBZuper walks the relationship graph, shows you the shortest chain, and writes the JOIN for you, inferred hops included.
Click a start table, then an end table.
Only in DBZuper
Follow one row wherever it leads.
Every record is a card with a port per relationship. Click a port and the related rows appear next to it. The whole trail lives in the URL, so you can paste it to a teammate, or turn it into SQL.
Try it: open orders, then an order's order_items, then the product. Dashed ports are inferred relationships.
And when you need rows, a real grid.
Filter, sort and page any table. It all runs in the database, not in your browser, and one click turns the view into SQL.
Click a header to sort, add a filter, or click a customer_id to follow the foreign key. Sample data.
Autocomplete for JOINs. A safety net for DELETE.
Monaco with schema-aware autocompletion that suggests whole foreign-key JOINs. And a safety net that makes you mean it before anything destructive runs.
Most clients give you a tree and a grid.
Trees and grids are great for precise edits, and DBZuper has them too. It just doesn't stop there.
*_id naming, drawn dashedON clauseDELETE"Are you sure?" → EnterType the table back; read-only enforced by the serverAnd everything you'd expect.
Keyboard-first
One palette for tables, columns, records (users 42) and actions.
Server-level connections
Leave the database empty and browse every database on the server.
Four engines, one workspace
Timeouts, read-only and case-insensitive filters handled per engine.
Four themes × light and dark
Classic, Layered, Graphite and Radar. Dark by default, obviously.
History that keeps secrets
Per connection and global. Passwords in SQL are redacted before they're stored.
Yours, on your server
No external services at runtime. Credentials encrypted at rest. amd64 and arm64.
Some tables are bigger than others.
DBZuper is serious about your data and not very serious about itself. Hover or tap a huge table in the Universe and you'll see what we mean. Pin seven tables and something happens.
Pin them all. 0 / 7
order_items · row count
0
It's over 9,000!
Running in one command.
- Run the image. One container, no external services.
- Read the setup code from the log, so nobody else can claim your fresh install.
- Click "Try it with demo data", or connect your own database.
$ docker run -d --name dbzuper -p 8080:8080 \ --add-host=host.docker.internal:host-gateway \ -v dbzuper-storage:/app/storage \ -v dbzuper-sqlite:/data/sqlite \ ghcr.io/dbzuper/dbzuper:latest $ docker logs dbzuper 2>&1 | grep "setup code" Setup code: ZUPR-7Q4K-M2XD # open http://localhost:8080
$ git clone https://github.com/dbzuper/dbzuper $ cd dbzuper $ composer setup # deps, .env, key, database, frontend build $ composer start # serves http://localhost:8000 # needs PHP 8.4, Composer 2 and Node 24 (build only)
One workspace. Every database.
psst. type make a wish anywhere on this page, or .