plainDB features on Mac and Windows

Browse tables, filter rows, inspect structure and review edits in one desktop workspace. The database, import, schema and analysis workflows are implemented on both platforms, with each app using its platform's controls.

Implementation reviewed October 1, 2026. “Implemented” below describes the current app, not a promise of release availability or compatibility with every server version. Physical Windows-PC acceptance testing remains pending.

Connections · Browsing and SQL · Editing and undo · Database and analysis tools

Databases and connections

Current database and connection support
CapabilitymacOSWindows
PostgreSQLImplementedImplemented
SupabasePostgreSQL connection with presetPostgreSQL connection with preset
MySQL and MariaDBImplementedImplemented
SQLite filesImplementedImplemented
MongoDBImplementedImplemented
SSH tunnelsImplementedImplemented
PostgreSQL SSL and root certificateConfigurable, including verify-fullConfigurable, including verify-full
Saved credentialsmacOS KeychainDPAPI-protected local storage
Connection switching and copyingAuto-connect on selection; copy connection string with or without passwordAuto-connect on selection; copy connection string with or without password
Import TablePlus connectionsImport a password-protected TablePlus export, including database and SSH passwords when presentImport JSON/XML/binary-plist and password-protected exports, including supplied database/SSH credentials; reselect key files
Read-only connection settingImplementedImplemented

Supabase support covers its PostgreSQL database. It does not include Auth, Storage, Realtime or Edge Functions administration. For an IPv4 desktop connection, begin with the exact session pooler string from your dashboard. See Supabase setup and PostgreSQL setup.

Daily browsing and SQL work

Relational database workflow
CapabilitymacOSWindows
Table paging, sorting and row inspectionImplementedImplemented
AND/OR conditions and raw SQL filtersFlat condition list; match all or any; edit as SQL (JSON for MongoDB)Flat condition list; match all or any; edit as SQL
Grid sizing and densityContent-sized columns, remembered manual widths, three row heightsContent-sized columns, remembered manual widths, three row heights
Table counts and storage informationRow counts; table and database sizes where supportedRow counts; table and database sizes where supported
Structure, indexes and DDL viewsImplementedImplemented
Staged table edits with SQL reviewImplementedImplemented
Current statement, selection and script executionImplementedImplemented
Per-statement results and query cancellationImplementedImplemented
History and saved queriesStored locallyStored locally
Query PadPersistent SQL scratchpad with collapsible statement navigatorPersistent SQL scratchpad with collapsible statement navigator
Pinned tabs and workspace panelsPin/unpin tabs; independently toggle connections and tablesPin/unpin tabs; independently toggle connections and tables
Refresh and save shortcutsCommand-R refreshes tables or runs SQL; Command-S reviews table edits or saves queriesCtrl+R refreshes tables or runs SQL; Ctrl+S reviews table edits or saves queries
Environment labels and coloursImplementedImplemented
CSV, TSV, JSON, Markdown and SQL INSERT exportImplementedImplemented

Export scope. Both table exporters can fetch all rows matching the current filters and sort order. Query-result exports use fetched results on both platforms. Check the row count before treating an export as complete; a data extract is not a full database backup.

Review is specific to staged edits. The confirmation step applies to edits made through the table-editing workflow. SQL entered in the editor uses its Run controls. Database permissions and a recoverable backup remain necessary for important data. Read how edit review works.

Editing, undo and transactions

Control over changes on both platforms
CapabilitymacOSWindows
Undo pending row editsMulti-step staged undoMulti-step staged undo
Undo applied row changesSupported PostgreSQL and SQLite tables; up to 50 recorded batches until disconnectSupported PostgreSQL and SQLite tables; up to 50 recorded batches until disconnect
Manual transaction controlsAuto-commit toggle, Commit and Rollback for relational query sessionsAuto-commit toggle, Commit and Rollback for query sessions
Refresh after local writesRefresh clean tables; preserve tabs with pending editsRefresh clean tables; preserve tabs with pending edits
Drop and truncate reviewSQL preview; explicit PostgreSQL CASCADE optionSQL preview; explicit PostgreSQL CASCADE option

Saved undo has a specific scope. With recording enabled, direct grid and inspector inserts, updates and deletes on supported PostgreSQL and SQLite tables are recorded in auto-commit mode. Each Apply is one batch. Recovery history stays in memory for the current connection and is cleared on disconnect. Conflicting row or table-definition changes stop recovery. Tables with triggers, cascading relationships or special rules may be ineligible. Arbitrary SQL, imports, drop, truncate and other DDL are not recorded. Use a manual transaction where appropriate, or explicitly apply without saved undo. See the complete undo explanation.

Transactions follow your database. Commit and Rollback act on the current transaction, not historical changes. Some engines implicitly commit certain DDL operations; a transaction is not a promise that every operation can be reversed.

Database and analysis tools

Database and analysis tools on both platforms
CapabilitymacOS implementationWindows
CSV importColumn mapping and new/existing table workflowsImplemented
ER diagramSchema relationship viewImplemented
Visual EXPLAINQuery-plan inspection toolsImplemented
Result chartsBar, line, area, scatter and pie charts; PNG export; first 2,000 result rowsImplemented
Table designerCreate/alter forms with generated statements; capabilities vary by engineImplemented
Foreign-key value pickerSearch referenced rows while editing a foreign-key cell; up to 50 matchesImplemented
Table transferCopy rows to another connection, optionally creating a table with mapped typesImplemented
Backup and restore controlsServer-engine utilities required; SQLite backup uses VACUUM INTOImplemented
On-device AI assistantConditional on Apple Intelligence availabilityConfigured OpenAI-compatible loopback model server; explicit opt-in

Import, transfer and backup details

Backup tools are not bundled. PostgreSQL backup/restore needs pg_dump and pg_restore; plain SQL restore also needs psql. MySQL/MariaDB uses mariadb-dump/mariadb or mysqldump/mysql. MongoDB uses mongodump/mongorestore. Install compatible utilities in a location the app checks. SQLite backup creates a separate file; there is no in-app SQLite restore action.

Transfer copies table data, not an entire database design. Its optional table creation maps column types; it does not reproduce all indexes, constraints or application behaviour. Confirm the destination and test mappings on disposable data. Manual transaction controls likewise follow the connected engine’s semantics; some operations cannot be rolled back.

The Mac assistant can help draft and explain SQL, discuss errors and describe selected context. It uses Apple's on-device model and can optionally include the first 20 rows of the current result. It requires eligible hardware, Apple Intelligence enabled and a ready model. Review generated SQL before execution. Windows provides the same request and SQL suggestion workflow through a configured local model server; it can explicitly include up to 20 result rows. See AI requirements and limits.

Choose a build for the work you need today

Mac requirements: macOS 14.4 or later, Apple silicon. Windows requirements: Windows 10 version 1809 or later, or Windows 11, 64-bit. Apple's AI model and Keychain are Mac-specific; Windows uses a configured local model and per-user DPAPI. No Linux release is listed. Check release availability before planning a migration.

Need help choosing? Use the PostgreSQL GUI evaluation checklist, compare TablePlus or DBeaver, or read the frequently asked questions.

Check plainDB availability