Neat SQLiteEnglish | 简体中文 Browse, query, and edit local SQLite databases inside VS Code. Work with related tables in a compact spreadsheet, run SQL with typed results, and import or export CSV. Install from VS Code Marketplace · Report an issue Available for Windows, macOS, and Linux on x64 and ARM64. VS Code installs the package for your platform automatically.
Features
Working with the table
Display layout never changes the database. Sorting, column order, width, pinning, and hidden columns only affect the editor view. Dragging a column does not reorder columns in the database file: SQLite can change column order only by rebuilding the table, which risks constraints, triggers, views, and programs that rely on column positions. Right-click a row number for Add record, Copy, Copy with headers, Edit record, Duplicate selected records, and Delete selected records. Right-clicking a fully selected row keeps the complete selected rows; otherwise, it selects that row. Keyboard users can focus a row number and press Context Menu or Shift+F10. Add record is also available in the Data menu. Find and replaceShortcuts and Edit menu actions open a compact, non-modal panel at the top right of the editor, like the VS Code find widget. You can keep selecting cells or editing SQL while it is open; a new selection updates the Selection scope. The panel moves to the bottom when it would cover a located match. It follows the active tab. Escape or the close button closes it. In SQL Query, Find and Replace edit the SQL source text; query results stay read-only. Replacing SQL text edits the draft and executes no SQL. Choose Whole query or Selection (the text selected when search opened), and use the editor’s Undo to revert replacements. In Data, press Ctrl/Cmd+F to open table search, or Ctrl/Cmd+R to open it with Replace checked. Checking Replace reveals the replacement field and actions; leaving it unchecked performs read-only Find. Search all columns or choose one, and toggle Aa (Match case, Alt+C) or .* (regular expression, Alt+R) beside the search field. Enter finds all matches; pressing Enter again steps to the next match and Shift+Enter to the previous one. Results highlight the first match in each value. Whole table searches every page, includes pending edits, and ignores the current table filters. Selection uses the exact cells selected on the loaded page when search opens, including disconnected selections. Select cells before opening search; expired or changed selections require reselection. Whole table is the initial scope; an explicit scope choice can be remembered. Regular expressions (.*) are off initially. Enable it for RE2 expressions and use SQL and CSV
The SQL Query tab runs one selected or current SQL statement with Ctrl/Cmd+Enter. SELECT, WITH, and VALUES read committed database data; save pending table edits to include them. Results preserve SQLite types and exact 64-bit integers. Read queries have a five-second budget, an 8 MiB result budget, and a configurable limit of up to 10,000 rows. A reached result limit is reported explicitly. Export displayed results as CSV exports the exact rows shown, including when a result limit was reached; it does not rerun the query. Column menus offer add, rename, and drop dialogs with a SQL preview. Execute applies the statement; opening the dialog or editing its fields does not change the database. SQLite handles these operations with native ALTER TABLE. Dropping a column rewrites table content internally and can fail when schema objects depend on the column. SQL writes and structure changes commit immediately in a transaction and require all pending table edits to be saved or discarded. They cannot be undone in the table editor. Use a database snapshot before experimenting with structure changes. Foreign-key navigation uses SQLite’s comparison rules to locate a committed parent record and then shows its pending edits. Save newly inserted parent records or new referenced key values before following them. A parent pending deletion cannot be opened. CSV import requires a header row and supports files of up to 8 MiB and 10,000 records. Map source columns to fields, choose storage types, and specify whether empty fields mean empty text, NULL, or an omitted default. A NULL token can distinguish NULL from empty text. Imports remain pending until Ctrl/Cmd+S; database constraints are checked when saving. Saving and safetyEdits remain pending when switching tables. Ctrl/Cmd+S commits them together. Constraint failures and external changes stop the save and preserve pending edits. Undo and Redo cover changes since the last save or revert. Views, virtual tables, generated columns, and BLOB values are read-only. SQLCipher and remote files are unsupported. Save Database Snapshot copies the committed database using SQLite's backup API; pending edits remain in the editor. Save As writes a database copy including pending edits. CSV export uses the selected table and current query; NULL and empty text both export as empty CSV fields. Regular expressions use budgeted RE2 matching in the backend after SQLite applies native conditions and ordering, before page slicing. Other filter modes execute in SQLite. Custom filters accept a restricted WHERE expression; use the SQL Query tab for complete SQL statements. Value enumeration covers the full column and pending edits, with explicit limits. InstallInstall Neat SQLite - Database Editor from the VS Code Extensions view, or build a platform-specific VSIX with DevelopmentUse Node.js 22 or newer and npm:
The VSIX is written to LicenseThe source code is licensed under AGPL-3.0-only. The Neat SQLite name and logo are not included in the code license. Use your own name and logo for derivative products and acknowledge the project. |

