Plain English and SQL for your data files, in your browser
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
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.
- 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.
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.