sqlite lens
JetBrains Marketplaceplugin 33684free viewer, Pro subscription
SQLite Lens opens a SQLite database file in the editor tab of IntelliJ IDEA and the other JetBrains IDEs, read-only by design. No lock is taken, and the directory is left as it was found, with no -wal, -shm or journal file added beside the database, so a database a running app still owns is not disturbed by the open. The schema tree comes up first, rows page in as you scroll, and Find streams down every row with live progress. We claim no .sql file, so a SQL source file keeps the editor it had. Pro adds a SQL console for SELECT, PRAGMA and EXPLAIN, exports to CSV, JSONL or Parquet, a column profile report, a diff of two database files, a whole-table sort, and a reader for the frames still waiting in the -wal.
- opens
- .sqlite, .sqlite3, .db3, .db and .gpkg files, and most files that start with the SQLite magic bytes, whatever their extension
- runs on
- IntelliJ IDEA, PyCharm, Android Studio (Ladybug and later) and every JetBrains IDE from 2024.2 on
- store
- JetBrains Marketplace, plugin 33684
- newest version
- 1.4.0, published 2026-09-11
- pro
- a subscription with its own 30-day trial; the price is quoted below as the store shows it

free
- Never touches your file: the open is immutable and read-only; no lock is taken and no sidecar file appears
- Any size: metadata first, then rows in constant-memory pages of up to 5000; go-to-row lands anywhere, and there is no row cap
- Schema tree: tables with row counts, then views, indexes, triggers and virtual tables; under each table its column types, the primary key and any foreign keys
- Find in table: a search streamed down every row, with next and previous jumps between hits
- Cell inspector: long text windowed, BLOBs as hex, text or an image preview (PNG, JPEG, GIF)
- WAL-aware: pending WAL frames and hot journals are surfaced, with a one-click snapshot reload that never touches the original
- Exact types: 64-bit integers never rounded through floating point; INTEGER, REAL, TEXT, BLOB and NULL rendered exactly per cell
- Database facts: page size, encoding, journal mode, user_version, application_id, and the GeoPackage version a .gpkg declares
- Copy out: a row as JSON, the page as CSV
- Named errors: an encrypted or corrupt file reports a named reason instead of an error dialog
- Themes: twelve looks for the grid, the console results and the diff; trying one is free for the open window
pro
- SQL console: your SQL goes to SQLite untouched; several statements run in order, each timed, and a failing one stops the run and is named; SELECT and PRAGMA rows land in the grid, Explain opens the query plan, and a statement that would write is refused
- Export: a table, the search matches or any query result to CSV, JSONL or Parquet, with Parquet columns typed from their values
- Profile report: rows and nulls for every column, ranges, histograms and an outlier count for the numeric ones, the largest gap in a timestamp column, a duplicate-row count and a correlation matrix, as HTML, Markdown or JSON
- Diff two databases: schema and rows compared between two files, with exact added, removed and changed counts, drill-in, and rows matched by primary key
- Whole-table sort: order by any column across every row, not just the visible page
- WAL frames: the frames SQLite would replay from the -wal beside the database, listed one per row, verified with SQLite's checksums or read from the frame headers only
- Kept themes: a chosen look stays set from file to file
price, as the store shows it
Pro is $1.90 a month or $19 a year for individual use, $4.90 or $49 for organizations. Each Lens plugin comes with its own free 30-day Pro trial. A year of continuous subscription earns JetBrains' perpetual fallback license: the version available when that year started stays yours for good, including its fixes.
where it stops
- An encrypted database does not open; the file reports the reason and nothing else happens
- Tables without a usable primary key diff as counts only, and the diff says so
- Rows still in the WAL show after the one-click reload, not before it

what's new
- 1.4.0published 2026-09-11
A column profile report, the second Pro export. Give the export a name ending .profile.html, .profile.md or .profile.json in the Export Rows dialog and the open table, or the search matches, is walked once and profiled instead of copied: every column gets its row, null and empty counts and the kinds of cell it holds; a numeric column its min, max, mean and standard deviation, quartiles, a histogram and an outlier count; a text column its length range, distinct count and most frequent values; a date or timestamp column its earliest and latest value, the median step and the largest gap. The table as a whole gets a duplicate row count, exact up to two million rows and marked when it stops there, and a correlation matrix over its numeric columns, forty at most. The quartiles, the histogram, the outliers and the gaps come from a sample once a column holds more than a thousand values, and the report says so beside each of those figures. The HTML is one page with nothing loaded from outside, and the JSON keeps every number at full precision. The finished balloon offers Open report, and a cancelled run leaves no file. The Pro SQL console also runs several statements in one go now: separated by semicolons they run in order, each timed in the status line; a failing statement stops the run and is named with its line number, the driver's own message and how many ran before it; a semicolon inside a string, a quoted name or a comment stays text; Explain gives one plan per statement; the grid shows the last result set; a statement that would write is refused as before, while BEGIN, COMMIT and ROLLBACK go to SQLite as typed.
- 1.3.0published 2026-09-09
Export to Parquet, a Pro action. Pick a .parquet name in the Export Rows dialog, whose filter reads CSV, JSONL or Parquet, and the whole table or the search matches are written as one snappy-compressed Parquet file, each column typed from the values in it: integers as int64, reals as double, text as UTF-8 strings, blobs as bytes. A column of integers with a real among them is written as double, and a column that mixes text or blobs with numbers is written as the text the grid shows. Declared column types are not consulted, since SQLite keeps a type per value, and so does this export. The open database and its -wal, -shm and -journal files are refused as a destination, as they are for CSV and JSONL, and a cancelled export leaves no file behind, not even the scratch file the writer keeps beside the destination while it works. When the export finishes, the balloon offers Open exported file, and the file lands in Parquet Lens when that is installed. A new Pro tab, WAL (Pro): Read frames (Pro) reads the -wal beside the open database and lists the frames SQLite would replay from it, one row each, with the page number, whether the frame commits, the database size that commit leaves behind, its offset and its size. Above the rows the summary counts the committed frames and any unfinished tail apart, and names the frames left from an earlier cycle without listing them. The copied count from the -shm is added when that record can be trusted. Two read levels are offered, Verify with SQLite's checksums and Frame headers only (faster), and the summary names the one used. The Theme picker has two more entries at the end, lamplighter and catacombs, each with a padlock and its own line in the open list, "unlocks when you share Lens with a colleague" and "unlocks the first time Pro runs for you". Pick a locked one and the plugin opens the way to earn it. For lamplighter that is the share card, also under Help as Share SQLite Lens: the marketplace page, the family page and a referral code of this install's own, with the line "enter it under Theme in any Lens plugin" below it. Copy share card earns the theme here; a colleague who picks lamplighter in their own Theme picker, types the code into the share card and presses Unlock with code earns it on their side. Catacombs opens the first time Pro runs for you, a trial included, and an earned theme stays whatever the license says. Four night themes join the picker, Duskhollow, Abyss, Obsidian and Moonlit Garden; trying one is free for the open window and keeping it is Pro, like the eight. Files ending in .gpkg open here too, since a GeoPackage is a SQLite database by specification, and the Info tab names the GeoPackage version the file declares.
- 1.2.8published 2026-09-07
Trials that begin from a JetBrains account come with a signed key, and that key went on opening Pro after the 30 days were used up. It stops the day after the trial ends. Bought licenses are left alone, the perpetual fallback license too. The same mistake had the plugin thank a lapsed trial the way it thanks a buyer, and the notice that a trial has ended never showed; both are right now. Second fix, in the WAL banner: every frame in the -wal file was counted as one you had not seen yet. After a checkpoint that could not shorten the file, the frames stay where they are even though the database already has them, so a fully checkpointed database still warned about pending changes. The count now takes the -shm file into account, which records how many frames a checkpoint copied in, and the banner says nothing is waiting once none are left. If that record cannot be trusted, every live frame is counted, as before. The facts row carries the same number, and one frame is written as 1 frame, not 1 frames.
more
- every format, every product
- opening a large file
- the exports and the profile report
- DuckDB Lens
- support
Pricing, invoices and licensing questions go to [email protected]; anything else about the product to [email protected].