DB Browser
universal database explorer
Try demo mode → SSO
DK
{{ activeConnObj.v }} {{ activeConnObj.db }} · {{ activeConnObj.schema }} ▾
Switch connection
{{ c.v }}
{{ c.label }}
{{ c.sub }}
{{ c.check }}
12 ms ping
Search tables, columns, queries ⌘K
Connections
6 saved · 4 live · read-first defaults on
{{ c.eV }}
{{ c.label }}
{{ c.eLabel }}
{{ c.statusLabel }}
host {{ c.host }}
db   {{ c.db }} · schema {{ c.schema }}
user {{ c.user }}
{{ activeConnObj.v }} {{ activeConnObj.db }}
▾{{ activeConnObj.schema }}
▾Tables{{ tableCountLabel }}
{{ t.name }} {{ t.rows }}
{{ viewsCaret }}Views{{ viewsCountLabel }}
{{ t.name }} {{ t.rows }}
▸ {{ tab.label }}
Columns · {{ colCount }} {{ tableName }}
Name Type Null Key Default
{{ m.name }} {{ m.type }} {{ m.nullLabel }} {{ m.keyLabel }} {{ m.def }}
Showing 1–14 of {{ tableCount }} Filter read-only
‹ ›
# {{ col.n }} {{ col.sortMark }}
{{ row._id }} {{ cell.v }}
running… ● {{ qCount }} rows · {{ qTime }}s
1
2
3
4
5
6
7
8
9
10
select c.email,
count(o.id) as orders,
sum(o.total) as revenue,
max(o.created_at)::date as last_order
from customers c
join orders o on o.customer_id = c.id
where o.status = 'paid'
group by c.email
order by revenue desc
limit 50;
# {{ col.n }}
{{ row._id }} {{ cell.v }}
{{ inspectorTitle }}
Column
type{{ selColObj.type }}
nullable{{ selColObj.nullLabel2 }}
default{{ selColObj.def }}
Table details
engine{{ inspectorEngine }}
schema{{ inspectorSchema }}
rows{{ tableCount }}
size41 MB
columns{{ colCount }}
indexes3
Foreign keys
customer_id → customers.id
referenced by
order_items.order_id
payments.order_id
Join Assistant auto-detects FK joins · {{ joinRelLabel }}
INNER LEFT RIGHT FULL
{{ c.label }} ×
{{ col.label }}{{ col.t }}
{{ c.conn }}
{{ b.label }}
Add table
Add table from any database
{{ g.conn }}
{{ t.name }} {{ t.mark }}
Generated SQL
{{ l.kw }}{{ l.body }}{{ l.warn }}
Query Templates & Saved Queries
One-click, read-safe starting points — parameterised per connection.
Templates
{{ t.cat }}
{{ t.name }}
{{ t.desc }}
{{ t.tag }}
Your saved & shared queries
{{ q.name }} {{ q.conn }} {{ q.sharedLabel }} {{ q.who }} · {{ q.when }}
Audit Log
Every executed query and action, retained 90 days.
{{ auditConnLabel }}
{{ st.label }}
{{ auditCountLabel }}
Time User Connection SQL Rows Duration Status
{{ a.time }} {{ a.user }} {{ a.conn }} {{ a.sql }} {{ a.rows }} {{ a.dur }} {{ a.statusLabel }}
No matching audit events.
Settings
Users
Roles
Role-based access
Branding
Demo mode
Password
Users
People with access to this workspace. Assign each a role to scope their permissions.
User Role Status Last active
{{ u.initials }}
{{ u.name }}
{{ u.email }}
{{ u.role }} ▾
{{ o.name }} {{ o.check }}
{{ u.statusLabel }}
{{ u.last }}
Roles
Each role bundles a set of permissions. Tune the exact grants under Role-based access.
{{ r.name }} {{ r.memberLabel }}
{{ r.desc }}
{{ r.caps }} Edit →
Role-based access
Control which tables and features each role can reach. masked hides PII columns; reads stay audited.
Resource {{ r }}
{{ row.f }} {{ cell.val }}
Branding
Shown on login, exports, and emailed reports.
Logo
Accent color
Demo mode
Replace live connections with a read-only sample dataset — safe for screenshots and onboarding.
Enable demo mode
Writes are disabled; all data is synthetic.
Password
Rotate your account password. Connection credentials are stored separately, encrypted.
New connection ×
Engine
{{ e.label }}
Export results 12 rows · 4 cols ×
Format
CSVcomma-separated
Excel.xlsx workbook
JSONarray of rows
ZIPCSV + schema
Rows
All (12) Current page Custom range
Columns
✓ email ✓ orders ✓ revenue last_order
Email report ×
dana.k@hey.com × finance@acme.io × add…
CSV Excel PDF
Schedule
{{ scheduleHint }}
Every Monday ▾ 08:00 UTC ▾
New custom template ×
{{ c.name }}
read-only· runs against the active connection · use :param for inputs
Invite user ×
{{ r.name }}
They'll receive an email invite and appear as Invited until they accept.
Edit user ×
{{ r.name }}
{{ st.label }}
{{ roleFormTitle }} ×
New roles start with no table access — grant it under Role-based access.
{{ toast.msg }}