The Chinook database that didn't stop in 2013.
3,953,160 rows · last row 3 minutes ago
Free datasets for demos, tests, benchmarks and courses
Hose generates multi-table relational data from a business model, with years of history and with referential integrity and causal order built in. The datasets keep growing, and a download taken next month has today's rows plus what happened since. Same seed, same universe, every time.
The free datasets download as SQLite or CSV, and every download is at most ten minutes behind the live data. Regulars who order every morning and a long tail who never came back, weekends that dip and Decembers that spike. Need your own schema or a bigger volume? We build it for you.
Free datasets, generating right now
The Chinook database that didn't stop in 2013.
3,953,160 rows · last row 3 minutes ago
The jaffle shop didn't close when the tutorial ended.
1,003,526 rows · last row 6 minutes ago
Northwind is still taking orders.
291,090 rows · last row an hour ago
A plant store with a funnel, not just an orders table.
3,356,689 rows · last row moments ago
A SaaS whose MRR you can audit down to the invoice.
2,696,399 rows · last row moments ago
Your schema, your volume, or your industry. We build it for you.
Every download is MIT-licensed, regenerated on a rolling window, and at most ten minutes behind the live data. Same seed, same rows, today and next month.
The trouble with demo data
They know what a retention curve is supposed to do. Random-row generators give you columns without a business: customers who all behave alike and orders that arrive at random. Every trend is a flat line. Static demo datasets go stale the day you load them and reshuffle every id when you regenerate. A copy of production is a compliance problem with a screen-share button. So when someone asks about a number, you end up steering the demo away from the data instead of through it.
What you get instead
The datasets run in real time behind the site rather than sitting as fixed dumps. Orders keep arriving, today's download has rows yesterday's did not, and the tail on each dataset page shows them as they are written.
Populations behave like populations. A few regulars account for most of the revenue while most customers come once and never return. Retention decays and then flattens the way real cohorts do. Whatever the person on the call asks you to group by, the distributions match what they see in their own data.
Ids are hashes of their own causal history, so referential integrity holds by construction, not by cleanup. Click from a chart to an order to the customer who placed it and someone is there: every join finds its rows, even with an audience watching.
Same seed, same database, byte for byte. The run you rehearsed against on Tuesday is the run you present on Thursday. The screenshots in the deck still match the screen, and the backup recording shows the same rows as the live demo.
Every id, timestamp and attribute is a pure function of the seed and an event's lineage. A dataset refreshed next month has the same ids and rows as today's, plus what happened since.
The free datasets are a coffee chain, a plant store, a SaaS and two classics. Yours is a short description of what happens in your business and what causes what. We build it into a dataset with your schema at your volume.
By industry
By use case
Download a dataset and open it in Metabase, Grafana, dbt or whatever your demo runs on: three years into production and refreshed every ten minutes. SQLite and CSV have the same rows and the same joins.