Messy input
Headers are wrong, date columns are inconsistent, CSV delimiters are weird, and someone pasted totals into the middle of the file.
Local-first · DuckDB-powered · Windows desktop
Bendit is a desktop workbench for importing data files, inspecting columns, writing SQL transformations, and exporting clean results — without setting up a database server or uploading your data to the cloud.
Prefer Parquet? Download the same sample as .parquet →
The annoying middle ground
Headers are wrong, date columns are inconsistent, CSV delimiters are weird, and someone pasted totals into the middle of the file.
Use DuckDB SQL transformations instead of doing the same fragile manual Excel steps again next month.
Keep customer files, financial exports and operational data on your own machine instead of uploading them to another SaaS tool.
Scale
If you've ever hit "this workbook is too large to open" or watched Excel grind to a crawl well before a million rows, you've run into limits that are baked into the file format itself. Bendit runs on DuckDB — an embedded analytical engine built for exactly this — so instead of stopping around a million rows, it comfortably handles tens of millions on ordinary hardware.
| Feature | Excel limit | Bendit |
|---|---|---|
| Rows per worksheet | 1,048,576 | Tens of millions — bounded by your disk and RAM, not a hardcoded ceiling |
| Columns per worksheet | 16,384 (A to XFD) | No fixed column limit |
| Characters per cell | 32,767 | No fixed limit |
| Worksheet tabs per workbook | Limited by available memory | Any number of tables, limited only by disk space |
| Unique cell formats | 65,490 | Not applicable — plain typed columns, nothing per-cell to run out of |
| Hyperlinks per worksheet | 65,530 | Not applicable |
| Workbook file size | No fixed limit, but practical limits depend on RAM and Excel version | Local DuckDB files comfortably scale well past typical Excel file sizes before performance degrades |
None of this makes Excel a bad tool — it's still the fastest way to eyeball a few hundred rows. But once a file is pushing against these ceilings, or Excel just gets sluggish well before actually hitting them, that's exactly where a real query engine underneath starts to matter.
Workflow
Bendit keeps the flow deliberately small. Open a file, inspect its columns, write SQL, preview the output and export clean CSV or Parquet.
Real examples
SQL-first
No visual pipeline ceremony. No cloud job. No database server. Just a file, a query, and clean output.
See more examples →select
trim(customer_name) as customer_name,
try_cast(order_date as date) as order_date,
replace(amount, ',', '.')::decimal(18,2) as amount
from imported_excel
where customer_name is not null
order by order_date desc;
Result grid
Every query lands in a fast, filterable grid — so you can sanity-check a transformation before it goes anywhere.
Every column header has its own inline filter, so you can narrow down a few million rows to the ones you care about without touching the query.
Active filters and sort order carry through to the export — what you see in the grid is what lands in the file, in CSV or Parquet.
Exports run through DuckDB's own COPY, streaming the full result set directly to disk — not just whatever page happens to be loaded in the grid.
Questions people search for
Yes. Bendit is built for importing Excel files and turning messy worksheets into queryable data.
No. The product is designed around local-first file transformation. Your files stay on your machine.
Yes. DuckDB is the SQL engine behind Bendit’s file transformation workflow.
No. Bendit is focused on cleaning, reshaping and exporting data files, not dashboards.
No. That limit comes from the Excel file format itself. Bendit runs on DuckDB, which comfortably handles tens of millions of rows on ordinary hardware — well past where Excel would refuse to open the file at all.
Not yet. Bendit is Windows-only today; macOS and Linux builds are on the roadmap. Email us to get notified when they're available.
Ready to test it?
Best test: take a real Excel or CSV export that normally annoys you and try cleaning it with SQL.