OmniSelect FileSQL turns CSV, Excel, JSON, XML, YAML, Avro and Parquet files — and SQLite, Access, SPSS, SAS and Stata data, ZIP archives and more — into SQL tables inside a browser tab. Ask a question in plain English and the SQL is written for you, or write your own. Filter, join, group and aggregate, then export the result. Files are read into memory on your own machine: they are not uploaded, there is no account to create and nothing to install.
1. Add files
Click the File Select panel or drop files onto it, up to 26 at once. Each file becomes a table named by a letter from its filename, so orders.csv is O.
2. Ask in plain English
Type a question such as total revenue by city. The SQL appears beside it, ready to edit; press Ctrl+Enter to run it. Prefer SQL? Write your own SELECT. No file to hand? Use Try sample data in the File Select panel.
3. Export
Download the result as CSV, JSON, Excel or Parquet. The file is generated in your browser and saved straight to your disk. An export holds every row of the result, not just the rows on screen.
Supported formats
| Format | Extensions | How it becomes a table |
|---|---|---|
| CSV, TSV, text | .csv, .tsv, .txt | Choose the delimiter, quote character and line ending; skip rows; header row optional |
| Excel | .xlsx, .xls, .xlsm, .xlsb, .xltx, .xlt | Pick the sheet; skip rows; header row optional |
| Other spreadsheets | .ods, .dbf, .wk1, .wk3 | OpenDocument (LibreOffice), dBase / FoxPro and Lotus 1-2-3, read like Excel |
| JSON | .json | Nested objects become columns named by their path; arrays of objects become rows |
| JSON Lines | .jsonl, .ndjson | One record per line, flattened the same way as JSON |
| XML | .xml | Nested elements and attributes become columns |
| YAML | .yaml, .yml | Nested structures flattened the same way as JSON |
| Avro | .avro | Read with WebAssembly; uncompressed, deflate and snappy files. How to read one |
| Parquet | .parquet | Read with WebAssembly, nested columns included |
| Arrow / Feather | .arrow, .feather | Arrow IPC files and streams, uncompressed or compressed with LZ4 or ZSTD. How to read one |
| SQLite | .sqlite, .db, .gpkg | Pick the table or view; GeoPackage files included. Read by SQLite itself, compiled to WebAssembly. How to explore one |
| Microsoft Access | .accdb, .mdb | Every table, each its own row; files without a password. How to open one |
| SPSS, SAS, Stata | .sav, .zsav, .por, .sas7bdat, .xpt, .dta | Dates become dates; labelled values get a _label column beside the code. Guides: SPSS, SAS, SAS transport, Stata |
| BSON, MessagePack, CBOR | .bson, .msgpack, .cbor | MongoDB dumps and binary records, flattened the same way as JSON. Guides: BSON, MessagePack, CBOR |
| Gzipped | .csv.gz, .json.gz, .xml.gz … | Any format above, gzip-compressed: unpacked in your browser, then read as the file inside. How it works |
| ZIP and TAR archives | .zip, .tar, .tar.gz, .tgz | Every readable file inside becomes its own table, ready to join |
Each file can be up to 50 MB and 1,000,000 rows. If a file is cut short, a notice says so above the results.
A guide for each specialist format
Some formats usually mean a licence, an install or a script before you see a single row. Each of these has its own walkthrough, with every example run in the app:
- Open a .sas7bdat file without SAS — read a SAS data set and save it as CSV
- Read SAS transport (.xpt) files — SDTM and ADaM data from an FDA submission, joined in SQL
- Read an SPSS .sav file without SPSS — value labels, user-missing answers, frequencies and crosstabs
- Turn a Stata .dta file into Excel — with the value labels still attached
- Open an .accdb or .mdb file without Microsoft Access — every table, on a Mac too
- Explore a SQLite database in a browser tab — tables, views and joins, nothing to install
- Read Avro and Feather files with no code — nested records flattened, one joined to the other
- Open a MongoDB .bson dump without MongoDB — ObjectIds become text, no server, no driver
- Read MessagePack files with SQL — a 64-bit id kept exact instead of rounded
- Read CBOR files with SQL — tagged dates and big integers decoded correctly
Check it yourself in 60 seconds
You do not have to take “nothing is uploaded” on trust. Your browser can show you.
- Open the app and let it finish loading, press F12 and open the Network tab.
- Clear the list.
- Add a file and run a query. The list stays empty: the file was read and queried without a single request.
- For the stronger test, turn off your Wi-Fi and do it again. Queries and exports still work.
Before you clear the list you will see the page loading its own files — the scripts, the code editor and the query engines — all from this site and nothing from anywhere else. The full verification guide covers this and two further checks.
Questions
Is it free?
Yes. The web version is free to use and needs no sign-up. Organisations that need an internal deployment, a written licence or a security review pack can get in touch.
Is my data stored anywhere?
No. Files are held in memory for as long as the tab is open and discarded when you close it. The tool writes nothing to local storage and sets no cookies.
Do I need to know SQL?
No. Ask in plain English and the SQL is written for you, inside your browser, with no AI service and no API calls. You can read and edit it before it runs, and it only says LIMIT when you ask for a number of rows; the Row limit box beside Export decides how many come back. The plain-English guide shows what it understands.
What SQL can I use?
The engine is DuckDB, running inside your browser tab: SELECT with WHERE, inner and left JOIN, GROUP BY, HAVING, ORDER BY and LIMIT, aggregates such as COUNT, SUM and AVG, string functions such as UPPER and TRIM, and CASE and COALESCE. The How To Use guide has worked examples.
How big a file can it handle?
Up to 50 MB and 1,000,000 rows per file. Your own computer does the work, so its memory matters too. For data in the tens of gigabytes, a database is the right tool.
Does it work offline?
Yes, once the page has loaded: you can disconnect and keep adding files, running queries and exporting. Reloading the page needs the connection again. For machines with no network at all, see using SQL offline and air-gapped.
Can we run it on our own intranet?
Yes — it is a static, self-contained build with no server component of its own and no third-party network calls, so it is well suited to intranet or air-gapped hosting; a build for this is available on request. Where your data comes from a live database rather than files, that build can also be extended to reach it through a gateway of your own.
Can it read nested JSON and XML?
Yes. A nested field such as customer.name becomes a column you can query by its short name, name, or by its path with underscores, customer_name. Arrays of objects become one row per element.
Can it open gzipped files?
Yes. A gzipped copy of any supported format — orders.csv.gz, events.jsonl.gz, data.xml.gz — is unpacked by your browser, inside the tab, and read as the file inside, without extracting it first. The 50 MB limit applies to the unpacked size. ZIP and TAR archives work too: every readable file inside becomes its own table. The .gz guide explains the difference.
Where to next
- Open the app — add a file, or try the sample data
- How To Use — file options, SQL syntax, joins and exports
- All guides — twenty-two walkthroughs, every SQL example tested
- Plain English to SQL — ask a question, get SQL, with no AI and no API calls
- Licensing — internal deployment, written licences, security review packs