SQLiteDesk

User Guide — Version 1.2.1

1. Overview

SQLiteDesk is a desktop manager for SQLite databases on Windows, including SQLCipher-encrypted ones. It runs entirely on your PC: no account, no cloud, no telemetry. Everything lives in one window:

  • Open or create SQLite databases — with a password prompt for encrypted files and a recent-files list.
  • Browse and edit rows in a paged grid with inline editing.
  • Run SQL in a full editor with syntax highlighting and schema-aware autocomplete.
  • Design tables visually, with a live DDL preview.
  • Draw ER diagrams of existing databases, or sketch new ones on a canvas.
  • Import / export CSV, JSON, and SQL.
  • Back up a live database safely and restore it later.
  • Maintain a database — VACUUM, integrity check, encrypt / decrypt, change password.

2. Getting Started

Install SQLiteDesk from the Microsoft Store, or run the standalone sqlitedesk.exe — it bundles everything it needs and requires no installation.

  • Windows 10 / 11 (x64)

SQLiteDesk opens maximized, after a brief splash. On first launch you land on the welcome screen: three “Get started” cards (Open, Create, New Query) and a list of recent databases showing each file’s size and when it was last modified. Databases that have been moved or deleted are marked as missing.

Once installed from the Store, you can also double-click a .db, .sqlite, .sqlite3 or .db3 file, or use Open with → SQLiteDesk. You can open a database straight from the command line too:

sqlitedesk.exe "C:\path\to\your.db"
Free trial on Microsoft Store — full functionality during the trial window, no feature gating.

3. Opening & Creating Databases

Open an existing database

Use Open Database on the welcome screen or in the toolbar. SQLiteDesk recognises .db, .sqlite, .sqlite3 and .db3, and will happily open a SQLite file with any other extension via All files.

If the file is encrypted, you’ll be asked for its password. The password is held only for as long as the database is open — it is never written to disk.

You can open several databases at once. Each appears as its own root in the explorer, and query tabs let you choose which one to run against.

Create a new database

Create Database asks where to save the file, then whether to encrypt it. Answer Yes and supply a password to create a SQLCipher-encrypted database; answer No for an ordinary plaintext one.

Choose carefully at this point. A password cannot be recovered. If you lose it, the data is gone — that is the whole point of the encryption. You can, however, add, change or remove encryption later from Maintenance.

4. The Explorer

The left panel lists every open database. Under each one sit four folders — Tables, Views, Indexes and Triggers — with a count beside each.

  • Search filters the list by database name or path.
  • The footer shows how many databases are open and their combined size.
  • Right-click a database to refresh it, copy its path, reveal it in File Explorer, or close it. Closing a database also closes all of its tabs.
  • Right-click an object to open it, select its top 100 rows, export it, rename it (tables), copy its name, or drop it.
  • Double-click a table or view to open it in a data tab.

The tree keeps its expanded branches across a refresh, so creating a single table does not collapse everything you had open.

5. Browsing & Editing Data

Opening a table gives you a paged grid.

Editing

Click a cell and type. The change is saved when you leave the row, and only the columns you actually changed are written back — editing one column never disturbs another, and committing an unchanged row issues no statement at all.

  • Enter commits the cell and moves to the next column, wrapping to the next row — the way a spreadsheet behaves. Shift+Enter goes backwards.
  • Tab moves across cells as usual.
  • Leaving a cell empty stores NULL. Ctrl+0, or Set NULL on the right-click menu, does the same thing explicitly.

Adding and deleting rows

Type into the blank row at the bottom of the grid to insert. Leave the primary key blank and SQLite assigns it for you; any column with a default is left to that default.

To delete, put the cursor in the row and use the Delete row action. You are asked to confirm first — a deleted row cannot be recovered.

When a table is read-only

The status bar tells you why:

  • “read-only (no primary key / rowid)” — the table has no way to identify a single row safely, so SQLiteDesk will not risk editing it. Views are always read-only.
  • “N generated column(s) are read-only” — the table has GENERATED ALWAYS columns. These are computed by SQLite, shown with a (generated) header, and never written to. The rest of the row edits normally.

Paging

Use the first / previous / next / last controls at the foot of the grid. Page size defaults to 200 rows and can be changed in Settings (it applies to newly opened tabs).

6. Running SQL

New Query opens an editor with SQLite syntax highlighting.

  • F5 runs the script. If you have text selected, only the selection runs.
  • Ctrl+Space opens autocomplete, which knows SQLite’s keywords plus the tables, views and columns of the target database.
  • The Run against picker in the tab’s toolbar chooses which open database the query hits. The tab header shows it too, so there is never any doubt.
  • A script with several SELECTs produces several result grids, one tab each.
  • Stop cancels a running query. It appears next to Run while a query is in flight.
  • The messages pane below reports rows returned or affected, and timings.

Results are capped at 10,000 rows per grid by default so an unbounded SELECT cannot exhaust memory. A capped grid is labelled (capped) and the messages pane tells you the read stopped early — add a LIMIT clause, or raise the cap in Settings.

Unsaved SQL survives switching between query tabs; nothing is discarded just because you moved away before running it.

Query history

Every executed query is saved with its database, timestamp, row count and duration. Open History from the right-hand rail, pick an entry, and it opens in a new query tab. History persists across sessions and holds the most recent 500 queries.

7. Designing Schemas

Table designer

New Table opens a column-by-column designer. For each column set a name, a type, and any of primary key, autoincrement, not null, unique, and a default value. The DDL preview updates live, so you can always see exactly what will be created.

A couple of SQLite specifics the designer handles for you:

  • AUTOINCREMENT is only offered for a single INTEGER PRIMARY KEY — that is the only place SQLite allows it.
  • NOT NULL is kept on non-INTEGER primary keys. SQLite has a long-standing quirk where a TEXT PRIMARY KEY will otherwise accept NULLs.

Composite primary keys are written as a table-level constraint automatically when you mark more than one column.

Foreign keys

Add foreign key adds a relationship row: pick one of your own columns, the table to reference, and the column in it. ON DELETE and ON UPDATE default to NO ACTION; CASCADE, RESTRICT, SET NULL and SET DEFAULT are also available. The DDL preview updates as you go, and rows you have not finished filling in are simply ignored.

Only tables that already exist in the target database can be referenced. To design several related tables at once, use the ER Designer instead.

Altering existing objects

From the explorer’s right-click menu you can rename tables and drop tables, views, indexes and triggers. For anything more involved, write the ALTER TABLE yourself in a query tab — SQLiteDesk validates ADD COLUMN before it runs and explains what SQLite will not allow, rather than passing you a raw engine error.

8. ER Diagrams

Two different tools, easy to confuse:

ER Designer — for creating schemas

New ER Design gives you a canvas. Drag tables onto it, add and edit columns inline, then draw a foreign key by dragging from one field to another. The SQL preview updates as you work; one click creates the whole schema in the selected database.

ER Diagram — for understanding one you already have

Diagram reads the open database and draws its tables and the foreign keys between them. Useful for a database you didn’t design yourself.

9. Importing & Exporting

Import

Large files are streamed rather than loaded into memory, so import size is limited by patience rather than RAM. Column types are inferred from a sample of the first rows, and values are stored as those types.

Import accepts three kinds of file:

FileWhat happens
.csvChoose the delimiter and whether the first row is a header. Column types are inferred (INTEGER / REAL / TEXT) and the table is created if needed. Duplicate headers are disambiguated (name, name_2); blank ones become column2, column3.
.jsonExpects an array of objects. Columns are the union of all keys, in order of first appearance.
.sqlLoaded into a query tab so you can read it before running it. Nothing executes until you press Run.

Export

  • A single table or view — right-click it, or use Export in an open data tab. Choose CSV, JSON or SQL INSERT statements; the format follows the extension you pick.
  • A query result — export from the query tab.
  • A whole databaseExport database as SQL writes a runnable script containing the schema and all data.

10. Backup & Restore

Backup makes a copy of a database. You are asked whether to encrypt the copy, and this is independent of the source: you can back up an encrypted database to a plaintext file, back up a plaintext database to an encrypted one, or re-key an encrypted backup with a new password.

Backups of unencrypted databases use SQLite’s online backup API and are safe to take while the database is in use.

Restore replaces the current contents of a database with those of a backup. You are warned first, and asked for the backup’s password if it needs one. The database keeps its own encryption setting — restoring a plaintext backup into an encrypted database leaves it encrypted, with its existing password.

A restore into an encrypted database is written to a temporary file and verified before it replaces anything, so if the restore fails your original database is left untouched.

You cannot back up or restore a database over itself; SQLiteDesk will stop you.

11. Encryption

SQLiteDesk uses SQLCipher, which encrypts the entire database file — including the schema. An encrypted database is unreadable without its password, in SQLiteDesk or anywhere else.

From Maintenance you can:

  • Encrypt a plaintext database with a new password.
  • Change password on an already-encrypted database.
  • Remove encryption, writing the database back out as plaintext.

Each of these rewrites the whole file, so allow time on a large database. The new file is written alongside the original and verified before it replaces it, so an interrupted operation leaves your database intact.

Your password is never stored — not in settings, not in the recent-files list, not in logs. That also means nothing can recover it for you.

12. Maintenance

The Maintenance dialog (right-hand rail) shows the file’s size, page count and size, free pages, journal mode, text encoding, and whether it is encrypted. From there:

ActionWhat it does
VacuumRebuilds the file, reclaiming space left by deleted data.
AnalyzeCollects statistics that help SQLite’s query planner.
ReindexRebuilds every index.
Integrity checkVerifies the database is not corrupt. Reports ok, or lists the problems found.

13. Settings & App Data

Settings offers a light / dark theme, the default page size for new data tabs, and the maximum rows loaded per query result.

The dark theme is a neutral mid grey — the sense in which Adobe and Blender use the word, rather than near-black. Panels sit lighter than the window behind them, so surfaces separate by getting brighter rather than darker. Changing the theme repaints the app immediately; no restart is needed, and nothing is left behind in the previous theme’s colours.

Application data lives in %LOCALAPPDATA%\SQLiteDesk:

FileContents
settings.jsonTheme and page size
recent.jsonRecent database paths
history.jsonQuery history
logs\Daily log files, kept for 7 days

Deleting any of these is safe — SQLiteDesk recreates them. Setting the SQLITEDESK_DATA environment variable points all of it somewhere else, which is handy for running a clean profile without disturbing your own.

The About dialog shows the version, build number and build date — a quick way to confirm which version you’re running.

14. Keyboard Shortcuts

KeyAction
F5Run the script, or the selection if there is one
Ctrl+SpaceAutocomplete in the SQL editor
EnterCommit the cell and move to the next column
Shift+EnterCommit the cell and move to the previous column
Tab / Shift+TabMove between cells
Ctrl+0Set the current cell to NULL

15. Troubleshooting

“The file could not be opened. The password may be wrong or the file is not a valid SQLite database.”

Either the password is wrong, or the file is not SQLite at all — check you picked the right file. This message also appears if the file is locked by another program, so close anything else that might have it open.

“Cannot INSERT into generated column” or similar SQLite errors while editing

SQLiteDesk passes SQLite’s own error text through unchanged. The message names the column or constraint involved, which is usually enough to identify the problem.

A table shows no editing controls

It has no primary key or usable rowid. Add a primary key, or edit it with SQL in a query tab.

A big query appears to hang

Press Stop next to Run to cancel it. Results are capped at 10,000 rows per grid by default, so a runaway SELECT stops on its own; add a LIMIT clause when exploring.

Something crashed

Check the newest file in %LOCALAPPDATA%\SQLiteDesk\logs.

16. Known Limitations

Honest notes on the current release, so nothing comes as a surprise:

  • The grid cannot store an empty string. Clearing a cell stores NULL. To store '', use an UPDATE statement in a query tab.
  • The diagram and ER canvases are darker than the rest of the app in both themes. That is deliberate — they are working surfaces, like a drafting view — not a theming gap.
Privacy. SQLiteDesk runs entirely on your PC. It has no accounts, makes no network connections, and collects no telemetry. Your databases and passwords never leave your machine.