Using TableOne every day? A Pro license unlocks the extra features and funds what ships next. See plans →
TableOne
Download

One native client
for every database.

Write queries, explore tables and edit rows across PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, Redis and dozens more. TableOne is built natively for each Apple platform, so it feels fast and right at home.

Download for Mac

macOS 13 or later · Universal (Apple silicon & Intel)

Install with Homebrew →
Download on theApp Store

iPhone and iPad · iOS 18 or later

TableOne is free and open source. An optional Pro plan adds power features to the Mac app. Compare plans

SQL, NoSQL, analytics and everything in between

The most popular drivers ship inside the app. Others install on demand the first time you connect, and stay up to date on their own schedule.

Every engine, grouped by type

The iPhone and iPad app supports PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Redis, DuckDB and Oracle. Connections you sync from your Mac show up there automatically.

Full compatibility list →

Backed by our sponsors

Become a sponsor ↗

Everything you need for daily database work

These tools live in the Mac app. The iPhone and iPad app is focused on the essentials and is covered below.

Explore all features →

A SQL editor that knows your schema

Autocomplete for tables, columns and joins, :param placeholders, full-text query history and saved snippets. Point TableOne at a folder of .sql files and it shows their Git status. Visual EXPLAIN turns query plans into a readable tree, and plan diffing compares a change against the previous run.

Pro: Query profiler and result charts.

Learn about querying →
Query 1 · Explain
Limitrows 50 · 0.02 ms
Sortcreated_at DESC · 1.4 ms
Seq Scan on ordersfilter status = 'paid' · 9.8 ms
SuggestionIndex on (status, created_at) avoids the scan

Edit rows and schema, then review the SQL

Your changes, from cell edits to new rows and deletions, stay staged until you commit them, and a preview shows the exact statements first. Column, index and constraint changes in the Structure tab work the same way. You also get filters, conditional highlighting, a foreign-key lookup and per-tab undo.

Learn about editing →
Review changes · 3 statements
UPDATE orders SET status = 'shipped' WHERE id = 259837;
INSERT INTO shipments (order_id, carrier) VALUES (259837, 'DHL');
DELETE FROM carts WHERE id = 9921;
CancelCommit

Diff, sync and migrate between databases

Schema Diff compares the structure or data of any two databases and generates a migration script. Destructive steps, like dropping a column, are held back until you approve them. Transfer moves tables or entire databases between connections, even across engines, and reports any types it had to convert. A read-only ER diagram and role management for PostgreSQL and MySQL are included.

Pro: Schema Diff & Sync.

Learn about schema tools →
Schema Diff · staging → production
+ ALTER TABLE users ADD COLUMN locale text DEFAULT 'en';
+ CREATE INDEX idx_orders_status ON orders (status, created_at);
⚠ ALTER TABLE products DROP COLUMN legacy_sku; held for review

Move data in and out, or skip the database entirely

Bring in CSV, TSV, JSON, JSONL, XLSX and SQL, and export to CSV, JSON, SQL, XLSX, Markdown and HTML. Drop a spreadsheet or JSON file onto TableOne to filter and clean it without any database, then load it straight into a table. Backups and restores use each engine's native tools, such as pg_dump, mysqldump and mongodump.

Learn about import & export →
customers.csv · File preview
#namecountrysigned_up
⌕ Filter1,248 rowsImport into table…

Secure connections, wherever your data lives

Connect through SSH tunnels with bastion hosts, TLS certificates, AWS IAM, Azure Entra ID or Google Cloud sign-in, or any custom tunnel command such as kubectl port-forward. Credentials can come from the Keychain, 1Password, HashiCorp Vault or AWS Secrets Manager, and fields accept $ENV_VARS.

Pro: Environment variable references.

Learn about connections →
New connection · PostgreSQL

Safety rails for production

Color-code and label connections by environment, then choose how careful TableOne should be with each one, from a gentle warning up to fully read-only. The strictest levels require Touch ID. DROP, TRUNCATE and an unfiltered DELETE always ask for confirmation, whatever the level.

Undo Save restores the values from your last commit. It isn't a substitute for backups.

Safety levels
MacOff, Warn, Warn (all writes), Protected, Protected with Touch ID, Read-only
iPhone & iPadOff, Confirm writes, Read-only

Pro: Undo Save.

Learn about safety levels →

Bring your own AI, plus a local MCP server

An optional assistant can explain, tune and fix your queries or answer questions about your schema. It uses the provider you choose, whether that's an API key, an existing subscription or a model running locally. TableOne runs no AI servers and sends nothing until you connect a provider.

The assistant only reads by default. When you let it run statements, every write still goes through the connection's safety level.

The built-in MCP server lets tools like Claude Code, Cursor and Zed use your saved connections without ever seeing a password. It listens only on localhost, and each connection's access is set to Off, Read-only (the default) or Read & Write.

Free on every plan.

Works with Anthropic, OpenAI, Gemini, GitHub Copilot, OpenRouter, Ollama, LM Studio and any OpenAI-compatible endpoint.

Learn about AI & MCP →
Assistant · Ask mode
Why is this orders query slow?
It does a sequential scan on orders because nothing indexes status. A composite index should take it from about 10 ms to under 1 ms:
CREATE INDEX idx_orders_status ON orders (status, created_at);

Made natively for Mac, iPhone and iPad

TableOne for Mac

Written in Swift, with native builds for Apple silicon and Intel. Passwords are stored in the Keychain, the strictest safety levels use Touch ID, and updates install in the background.

Download for Mac

macOS 13 or later · Universal (Apple silicon & Intel)

TableOne for iPhone and iPad

A dedicated app for working away from your desk. Connect over SSH or TLS, browse tables, run queries and edit rows. It also offers Face ID lock, Shortcuts actions, a Home Screen widget and Live Activities for long-running queries.

Free, with no in-app purchases.

Download on theApp Store

iPhone and iPad · iOS 18 or later

More about the mobile app →

iCloud Sync keeps your connections, folders and tags the same on every device. It's off until you turn it on, and on the Mac it's part of Pro. Handoff picks up an open connection on your other device.

Learn about sync →

Switching from another client?

Moving over takes a minute, and both tools below are in the Mac app.

Bring your connections, including saved passwords, from TablePlus, Sequel Ace, DBeaver, DataGrip, Beekeeper Studio and Navicat.

Open a project folder and TableOne reads its .env, docker-compose.yml, Prisma schema and other config files, then suggests connections based on what it finds.

Free forever, with an optional Pro plan

The Mac app is free to download and use, with no trial and no time limit. Pro adds power features such as Schema Diff, the query profiler, Undo Save and iCloud Sync. Team adds a shared connection catalog and a shared query library. The iPhone and iPad app is always free.

Full plan comparison →
Billing cycle

Free

The full Mac app without Pro features, plus the iPhone and iPad app.

$0

No account needed.

Download for Mac

Pro

Unlocks every Pro feature in the Mac app.

One license, up to 2 Macs.

Get Pro

Team

Everything in Pro, plus shared connections and queries for your team.

5

Get Team

Prices are in US dollars. Applicable sales tax or VAT is calculated at checkout. Have a coupon? Enter it there.

Open source, independent, ready when you are

TableOne's source is public, including the Pro features. Development is funded by licenses and sponsors. No investors, and your data is never sold.

Get TableOne on every device you use.

Download for Mac

macOS 13 or later · Universal (Apple silicon & Intel)

Download on theApp Store

iPhone and iPad · iOS 18 or later