Ask your spreadsheets and data files in plain English or SQL — without uploading them anywhere

· OmniSelect FileSQL by ClientVirt

7 min read Original article ↗

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

FormatExtensionsHow it becomes a table
CSV, TSV, text.csv, .tsv, .txtChoose the delimiter, quote character and line ending; skip rows; header row optional
Excel.xlsx, .xls, .xlsm, .xlsb, .xltx, .xltPick the sheet; skip rows; header row optional
Other spreadsheets.ods, .dbf, .wk1, .wk3OpenDocument (LibreOffice), dBase / FoxPro and Lotus 1-2-3, read like Excel
JSON.jsonNested objects become columns named by their path; arrays of objects become rows
JSON Lines.jsonl, .ndjsonOne record per line, flattened the same way as JSON
XML.xmlNested elements and attributes become columns
YAML.yaml, .ymlNested structures flattened the same way as JSON
Avro.avroRead with WebAssembly; uncompressed, deflate and snappy files. How to read one
Parquet.parquetRead with WebAssembly, nested columns included
Arrow / Feather.arrow, .featherArrow IPC files and streams, uncompressed or compressed with LZ4 or ZSTD. How to read one
SQLite.sqlite, .db, .gpkgPick the table or view; GeoPackage files included. Read by SQLite itself, compiled to WebAssembly. How to explore one
Microsoft Access.accdb, .mdbEvery table, each its own row; files without a password. How to open one
SPSS, SAS, Stata.sav, .zsav, .por, .sas7bdat, .xpt, .dtaDates become dates; labelled values get a _label column beside the code. Guides: SPSS, SAS, SAS transport, Stata
BSON, MessagePack, CBOR.bson, .msgpack, .cborMongoDB 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, .tgzEvery 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:

Check it yourself in 60 seconds

You do not have to take “nothing is uploaded” on trust. Your browser can show you.

  1. Open the app and let it finish loading, press F12 and open the Network tab.
  2. Clear the list.
  3. Add a file and run a query. The list stays empty: the file was read and queried without a single request.
  4. 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