Coming soonAndroid, Windows and Mac first. Linux is in testing.

The SQL client you can trust with production.

Run a query, fix a row, check on a slow server. From your phone on the train or your desk at work. MySQL, MariaDB, PostgreSQL and SQLite, and every change shows you its SQL before it runs.

Android · Windows · Linux · macOS

Sidetable on a tablet, running a ten-statement script against a staging database. Statement 8 failed and the error is explained underneath. Sidetable on a phone showing the same script's steps The connection list on a phone, with Local, Dev, Stage and Prod badges
No analyticsThere's no code in the app that reports on you.
No accountIt never contacts us. There's nothing to sign in to.
No adsNothing to dismiss and nothing to pay to remove.
Your secrets stay yoursPasswords and keys are encrypted on your device.
Where it runs

One app, whichever screen you've got.

The same editor, grid and schema tools on a phone, a tablet, a foldable and a desktop. Here's where each one stands today.

AndroidComing soon

Phones, tablets and foldables.

WindowsComing soon

An installer and a portable zip, with the same screens as Android. It's what we use every day.

LinuxComing soon, in testing

A .deb package and a portable tar.gz.

macOSComing soon

A disk image, with the same screens as Android.

iOSLater

It's on the list. We'd rather do Android and desktop well first.

LOCALDEVQASTAGEPROD
Safety

Production should feel different. So it does.

Tell each connection where it lives. Production wears red, slows you down at the right moments and stops the things that usually go wrong at 5 on a Friday.

  • You see the SQL first. Every change shows the exact statement and the rows it touches. Nothing runs until you say go.
  • It warns you before the server says no. Try to delete a customer that other tables still point at, and it tells you which ones.
  • Unlock to write. If you want a second step, use your fingerprint, a device PIN, an app PIN or the database password.
The review sheet refusing a delete because 26 payment rows and 26 rental rows still point at the customer
The review sheet catching a delete that foreign keys would block.

Five environments, each with its own color and defaults

Pick one when you save a connection. Every default can be changed per connection, and you can add your own environments or give any connection its own color.

LOCALYour own machine

Your SQL runs as you typed it. Grid edits still get a review.

Auto-commit
DEVDevelopment

The same, for a shared dev server where mistakes are cheap.

Auto-commit
QATesting

Writes go through the review sheet first.

Smart commit
STAGEStaging

Writes go through the review sheet first.

Smart commit
PRODProduction

Review first, then unlock with your fingerprint, a PIN or the database password. The bar across the top is striped.

Smart commit, plus limits

Stage first, save once

Change cells in the grid or a form, across as many tables as you like. Review the whole batch as one plan and it runs as one transaction. Change your mind about one edit and you can drop it from the review without losing the rest.

A table with two changed rows and one row marked for deletion

Spots a row someone else changed

If the row changed on the server after you loaded it, you find out in the review. You don't overwrite a colleague by accident.

The review sheet warning that someone else changed or deleted the row

Tells you what happened

When your connection drops in the middle of a write, you don't have to guess. It tells you whether anything was saved.

A dropped connection panel saying the transaction was rolled back and nothing was saved

Click any screenshot to see it larger.

15 minAn idle transaction on Production rolls itself back, so a forgotten one can't hold locks all weekend.
5 minStatements on Production stop after five minutes, unless you set a different limit for that connection. For a long migration, Run all without a time limit lifts it for that one run, after asking.
Type the nameDropping something on Production asks you to type what you're dropping.
Read-onlyA read-only connection is blocked in the app, and the server is told to refuse writes too.
Write and run

An editor that knows your schema.

Highlighting, completion that reads your tables and aliases, join suggestions and a formatter. Run a statement, a selection or the whole script.

If a script breaks, you'll see exactly where.

Each statement gets its own line with a time and a result. When one fails, the server's error is explained in plain words, and you can jump to it, retry it or skip it.

  • Stop at the first error, or carry on and read the log afterwards.
  • Save queries, give them parameters and find them again with Ctrl+P.
  • Every statement you run goes into a history you can search. It keeps two years by default.
  • Link .sql files and folders, and keep local versions with diffs.
  • Prefer Vim keys? They're there when you want them.
A phone showing script steps, with statement 8 failed and its error explained

Find the slow step, in words you can read.

Explain turns a query plan into plain steps, shows what each one costs and points at the slowest. It asks before it analyzes anything that writes, then rolls it back.

  • Full table scans on big tables are flagged for you.
  • Tap a step to see the details the server reported.
A query plan with the slowest step highlighted, taking 36 percent of the time

Chart it. Compare it.

Turn the rows you loaded into bars or a line without leaving the app. Run the same read on two connections, say production and staging, and Compare lines the rows up by key so the differences stand out.

  • Show only the differences, and export them.
  • Compare only runs reads, so it can't change either side.
A line chart of query results
The editor on the left and the results grid on the right, in the Paper theme
On a tablet or a desktop, the editor and the results sit side by side.
Keep an eye on it

Something's slow and someone's waiting. Here's who.

The Activity tab shows running queries and, when one is stuck behind another, the whole chain. It tells you which connection is holding things up, what it last ran and what usually causes it.

  • Blocking chains. See who waits on whom, then end the connection or cancel the query, after a confirmation.
  • An alert when a query waits too long. You pick the number of seconds.
  • Server overview. Connections in use, cache hit ratio, replication and your largest tables, each with the SQL behind it.
  • Host readings over SSH. Add CPU, memory, load and disk space if you want them.
Two connections held up by an idle transaction, with an End connection button
A blocking chain on a MySQL server, with the cause explained.
Server overview showing connections, cache hit ratio and largest tables
A confirmation before cancelling a running query on Postgres
Your data

Browse it, change it, move it.

Big tables, odd files and a pile of connections to carry around. All of it is fine on a small screen.

Page through millions of rows.

  • Sort, filter and search run on the server across every row, not only the ones loaded.
  • Filter a column by a list of values with in and not in.
  • Tap a foreign key to jump to the row it points at, or filter by a cell's value from its menu.
  • Look for a value across a whole database when you can't remember which table holds it.
  • Structure, DDL and Info tabs for every table, and a designer that reviews every ALTER before it runs.
  • See who has access with a list of accounts and their grants.
A table of payments in the data grid, with foreign key arrows next to the ids
A table's structure tab, listing columns, keys and indexes
Structure shows columns, keys and indexes.
A table's DDL tab
DDL is one tap from Copy or Open in editor.

Bring a file. Leave with a table.

Import CSV and XLSX files into an existing table, or let Sidetable guess the column types and build a new one. It checks every value first and skips bad rows with a report, instead of failing halfway.

  • Run a SQL dump through the script runner. Huge files stream, so they never load into memory.
  • Export results as CSV, JSON, SQL, Markdown or XLSX.
  • Back up and restore a database as SQL or gzip.
  • Share a result as a picture, with the sensitive columns blurred.
The import dialog matching file columns to table columns on a Production connection

New phone? Send your connections over.

Pick one connection, a folder or all of them. Sidetable shows a QR code, and you type a four-word code on the other device. The code isn't in the QR picture, so a photo of your screen opens nothing.

  • Passwords and keys stay out unless you switch them on.
  • Or export an encrypted file with a passphrase you choose.
Send to another device, showing a sample QR code and a sample four-word code
A sample. This QR code and these words don't open anything.
Connections

Getting connected shouldn't be a guessing game.

SSH tunnels, jump hosts, TLS and client certificates are all in the connection form. When something fails, the test tells you which step it was.

A connection test listing each step, from the jump host to the database login
The test shows every step.
A prompt asking whether to trust an SSH server's fingerprint
New SSH servers ask before they're trusted.
A connection form with TLS and SSH tunnel sections
TLS, pinned certificates and tunnels.

Keep a lot of connections. Stay tidy.

  • Folders, labels and environments, with a search that looks through all of them. Give any connection its own color.
  • Open several connections at once and jump between them with Alt+1, Alt+2 and so on.
  • Paste a connection URL and the form fills itself in.
  • On Windows, pull an SSH host straight out of your ~/.ssh/config.
  • Open a second, read-only copy of a connection when you only want to look around.
The connection manager on a tablet, with MySQL and PostgreSQL connections grouped in folders
AI help

Help with SQL, only if you ask for it.

It's off until you set it up, and you choose where it runs. Point it at a model on your own computer, such as Ollama, LM Studio or Docker Model Runner, or at any service that speaks the OpenAI API with your own key.

  • Explain a query, fix a statement that failed, or describe what you want and get SQL back.
  • It writes into your editor. If the answer is a single read, you can run it from there, through the connection's usual safety checks. Writes and schema changes never get a Run button.
  • Off by default on Production connections, and you can switch it on or off per connection.
  • Every answer shows exactly what was sent.
You askHow many films are in each category, biggest first?
select c.name, count(*) as films
from category c
join film_category fc on fc.category_id = c.category_id
group by c.name
order by films desc;
What it sendsThe statement, the error, your engine and version, and table and column names and types.
What it never sendsYour rows, your passwords, or the name and host of your connection.
Made for real screens

Dark, Light and Paper.

Paper is a high-contrast black on white that stays readable in bright sun. Layouts adapt from a small phone to a foldable to a wide desktop, and they hold up with large text.

The data grid in the Dark theme
Dark
The data grid in the Light theme
Light
The data grid in the Paper theme
Paper
And the rest

The small things that add up.

Long queries, short wait

On Android, start a long query or a big export, switch to something else and get a notification when it finishes.

App lock

Lock the app with your fingerprint or a PIN. Passwords are encrypted with a key held by the Android Keystore.

Desktop secrets

On Windows, saved secrets are sealed with DPAPI. On Mac they use the Keychain, and on Linux the system keyring.

Your own shortcuts

Search every command, record a new key combination and see conflicts before you save. Mac defaults use Command.

Transactions you can see

Auto-commit, Smart or Manual. A bar shows what's open, how many writes and for how long, with Commit and Roll back. Leave the app and a notification offers both.

A write log

Every write you run is logged per connection, with the statement and the values.

Server messages

Postgres notices and MySQL warnings show up next to your results, where you'll actually see them.

Row limits by default

Reads load in pages. You choose when to load more, and Load all warns you about the size first.

Edit query results

Results from a single table can be edited in place and go through the same review as everything else.

SQLite files

Open a database file on your phone or computer. On Android it works on a copy, and a bar asks before it saves back or exports one.

A symbol row for your thumbs

A row of SQL symbols sits above the on-screen keyboard, so brackets and quotes are one tap.

Spots migration tools

If Flyway, Prisma, Django or another tool manages a schema, a change you make by hand says so before it runs.

Large text and TalkBack

Labels wrap instead of getting cut off at large text sizes, and every button is at least 48 dp.

Exports that pick up

If your connection drops during an export, a table with a key carries on after the last row it wrote. Anything else stops with what it has and offers Retry.

Copy and paste rows

Copy rows as text for a spreadsheet, CSV, JSON or INSERT statements. Paste them into a table and they wait in the review as new rows, without the key. Rows copied from a join paste each table's own columns. Duplicate row opens a filled-in form.

How we compare

Here's how it stacks up. Honestly.

We checked each product's own pages on 30 September 2026. Where we're behind, we say so.

On the desktop

SidetableTablePlusBeekeeper StudioDBeaver
Android appYes, coming soonNone foundNo, desktop onlyNone found
Desktop systemsWindows, Mac and LinuxMac, Windows, Linux and iOSMac, Windows and LinuxWindows, Mac and Linux
Database enginesMySQL, MariaDB, PostgreSQL, SQLiteMany moreMany moreMany more
ER diagramsNot yetYesYes, on paid plansYes

On Android

SidetableRemoDBSQL ClientPG Orbit
EnginesMySQL, MariaDB, PostgreSQL, SQLiteMySQL, SQL Server, PostgreSQL, SybaseNine database typesPostgreSQL
AdsNoneAds in the free versionAds in the free versionNot stated

Platforms and features come from each vendor's own pages and store listings, read on 30 September 2026. "None found" and "Not stated" mean we looked and didn't see it, which isn't the same as saying it doesn't exist. Products change, so check their sites for today's details. If you spot a mistake, tell us and we'll fix it.

What we don't do yet

We'd rather you hear it from us than find out later. These are on the list, and none of them has a date.

  • SQL Server and Oracle
  • ER diagrams
  • Schema compare and migration SQL
  • Syncing between your devices
  • AWS and Azure sign-in
  • iOS
Privacy

It talks to your databases and nothing else.

We don't run a server for the app to call. The only places it connects are the ones you point it at. This website has its own, shorter privacy note.

It connects to

  • Your database servers, when you connect or run something.
  • Your SSH servers and jump hosts, for tunnels.
  • The AI model you set up, only when you ask it something.

It never

  • Reports usage, crashes or anything else to us.
  • Checks for updates behind your back.
  • Sends your connections anywhere unless you export or send them, and then they're encrypted.
  • Backs up to Google or moves to a new phone on its own.
Questions

Things people ask.

Which databases does it work with?

MySQL 5.7, 8.4 and 9, MariaDB 11.8 and PostgreSQL 16 and 18, including through PgBouncer. SQLite files open on Android and in the desktop apps. It doesn't do SQL Server or Oracle yet.

Is it really safe to use on a production database?

It's built for that. Production connections review every write, can ask you to unlock first, roll back idle transactions after 15 minutes, stop long statements and ask you to type the name of anything you drop. It can't make a bad query good, but it gives you every chance to catch it before it runs.

Where does my data go?

Nowhere except between you and your own servers. There are no accounts, no analytics and no crash reports. Saved passwords and keys are encrypted on your device. The privacy page in the app goes into more detail.

How does the AI help work, and does it see my data?

It's off until you set it up. When you do, it can send your statement, the error, your engine and version, and table and column names and types to the model you chose. It never sends rows, passwords or your connection's name and host. It also won't run anything by itself. It writes into your editor and you run it, through the usual safety checks.

Can I use it on my phone and my laptop?

Yes, with one app for each. There's no sync yet, so you move connections over with a QR code and a four-word code, or with an encrypted file. Syncing is something we'd like to add.

Can I bring my connections from another app?

You can paste a connection URL and the form fills itself in. We don't read other apps' connection files yet.

When can I get it?

Soon. Android, Windows and Mac come first. Linux is in testing and will follow. Leave your email below and we'll let you know when it's ready.

What will it cost?

We haven't settled on a price yet. It will be posted here before launch, so you'll know before you pay for anything.

Coming soon

Want to know when it's ready?

Tell us which platform you'd like and we'll let you know as soon as it's out.

AndroidComing soon
WindowsComing soon
LinuxIn testing
macOSComing soon
iOSLater