Guide
Opening and querying SQLite databases in the browser
SQLite files turn up everywhere: inside mobile apps, browser profiles, desktop tools, test fixtures and data exports. Looking inside one usually means installing DB Browser for SQLite or remembering the sqlite3 shell commands. This viewer opens the file in a browser tab instead, lists its tables and lets you run any SQL against it, while the file stays on your device.
Real SQLite, compiled to WebAssembly
The page loads sql.js, the official SQLite C library compiled to WebAssembly, from this site the first time you open a database. That matters because it is the same engine your application uses: the same SQL dialect, the same type affinity rules, JSON functions, window functions and common table expressions. A query that works here will behave the same way in your app.
What you see after opening a file
The table list is read from sqlite_master, the catalogue every SQLite database keeps. Each table and view appears as a chip with its row count, and clicking one runs SELECT * FROM "table" LIMIT 100. Under the chips, the schema section shows the original CREATE TABLE, CREATE INDEX and CREATE VIEW statements, which is often the quickest way to see column types, keys and constraints.
Running queries and editing data
Type SQL into the editor and press Run or Ctrl+Enter. Query time is shown with the results, and the first 1,000 rows appear in a scrollable table; use LIMIT and OFFSET to page through larger tables. You can also change data with INSERT, UPDATE, DELETE or ALTER TABLE. Those changes live in memory: nothing touches the original file until you press “Download database” and save a new copy. Every result table can be downloaded as CSV for a spreadsheet.
A worked example
The Sample button builds a small shop database with five customers and seven orders and runs a revenue query that joins the two tables and counts only paid orders. The top row reads Grace Hopper, US, 1 paid order, 980 in revenue, because her second order is still pending and the join condition excludes it. Replacing the query with SELECT status, COUNT(*) AS n FROM orders GROUP BY status ORDER BY n DESC returns three rows, and the CSV download contains paid,5, refunded,1 and pending,1.
Practical tips
Use PRAGMA table_info('orders') for a quick column list with types and defaults, and PRAGMA foreign_key_list('orders') to see relationships. SQLite stores dates as text, numbers or Unix times depending on the app, so datetime(col, 'unixepoch') and date(col) help turn them into something readable. For Apple apps, timestamps often count from 2001; the Cocoa Timestamp Converter explains those.
Limits
The whole database is loaded into memory, so very large files, roughly above a gigabyte, may fail on devices with little RAM. Encrypted databases need their key and a SQLCipher build, so they cannot be opened here. Extensions that are not built into sql.js, such as spatial ones, are not available.
Privacy and offline use
The database file is read with the browser’s File API and handed straight to the WebAssembly engine in the same tab. Nothing is uploaded, so the viewer is safe for customer databases and app data you would not send to a third-party service, and after the first load it keeps working without a network connection.
Related tools
- Parquet Viewer inspects columnar data files from analytics tools.
- SQL Formatter tidies long queries before you paste them in.
- CSV to SQL turns a spreadsheet into INSERT statements you can run here.
- SQL to Prisma converts the CREATE TABLE statements into Prisma models.
Checked against the current version of the SQLite Viewer on .

