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.
Connections · Browsing and SQL · Editing and undo · Database and analysis tools
Databases and connections
| Capability | macOS | Windows |
|---|---|---|
| PostgreSQL | Implemented | Implemented |
| Supabase | PostgreSQL connection with preset | PostgreSQL connection with preset |
| MySQL and MariaDB | Implemented | Implemented |
| SQLite files | Implemented | Implemented |
| MongoDB | Implemented | Implemented |
| SSH tunnels | Implemented | Implemented |
| PostgreSQL SSL and root certificate | Configurable, including verify-full | Configurable, including verify-full |
| Saved credentials | macOS Keychain | DPAPI-protected local storage |
| Connection switching and copying | Auto-connect on selection; copy connection string with or without password | Auto-connect on selection; copy connection string with or without password |
| Import TablePlus connections | Import a password-protected TablePlus export, including database and SSH passwords when present | Import JSON/XML/binary-plist and password-protected exports, including supplied database/SSH credentials; reselect key files |
| Read-only connection setting | Implemented | Implemented |
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
| Capability | macOS | Windows |
|---|---|---|
| Table paging, sorting and row inspection | Implemented | Implemented |
| AND/OR conditions and raw SQL filters | Flat 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 density | Content-sized columns, remembered manual widths, three row heights | Content-sized columns, remembered manual widths, three row heights |
| Table counts and storage information | Row counts; table and database sizes where supported | Row counts; table and database sizes where supported |
| Structure, indexes and DDL views | Implemented | Implemented |
| Staged table edits with SQL review | Implemented | Implemented |
| Current statement, selection and script execution | Implemented | Implemented |
| Per-statement results and query cancellation | Implemented | Implemented |
| History and saved queries | Stored locally | Stored locally |
| Query Pad | Persistent SQL scratchpad with collapsible statement navigator | Persistent SQL scratchpad with collapsible statement navigator |
| Pinned tabs and workspace panels | Pin/unpin tabs; independently toggle connections and tables | Pin/unpin tabs; independently toggle connections and tables |
| Refresh and save shortcuts | Command-R refreshes tables or runs SQL; Command-S reviews table edits or saves queries | Ctrl+R refreshes tables or runs SQL; Ctrl+S reviews table edits or saves queries |
| Environment labels and colours | Implemented | Implemented |
| CSV, TSV, JSON, Markdown and SQL INSERT export | Implemented | Implemented |
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
| Capability | macOS | Windows |
|---|---|---|
| Undo pending row edits | Multi-step staged undo | Multi-step staged undo |
| Undo applied row changes | Supported PostgreSQL and SQLite tables; up to 50 recorded batches until disconnect | Supported PostgreSQL and SQLite tables; up to 50 recorded batches until disconnect |
| Manual transaction controls | Auto-commit toggle, Commit and Rollback for relational query sessions | Auto-commit toggle, Commit and Rollback for query sessions |
| Refresh after local writes | Refresh clean tables; preserve tabs with pending edits | Refresh clean tables; preserve tabs with pending edits |
| Drop and truncate review | SQL preview; explicit PostgreSQL CASCADE option | SQL 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
| Capability | macOS implementation | Windows |
|---|---|---|
| CSV import | Column mapping and new/existing table workflows | Implemented |
| ER diagram | Schema relationship view | Implemented |
| Visual EXPLAIN | Query-plan inspection tools | Implemented |
| Result charts | Bar, line, area, scatter and pie charts; PNG export; first 2,000 result rows | Implemented |
| Table designer | Create/alter forms with generated statements; capabilities vary by engine | Implemented |
| Foreign-key value picker | Search referenced rows while editing a foreign-key cell; up to 50 matches | Implemented |
| Table transfer | Copy rows to another connection, optionally creating a table with mapped types | Implemented |
| Backup and restore controls | Server-engine utilities required; SQLite backup uses VACUUM INTO | Implemented |
| On-device AI assistant | Conditional on Apple Intelligence availability | Configured 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.