$19 one-time, plus applicable tax
Buy now: $19Test dataset · digital download (5.9 MB ZIP)
Please note. This is a digital download: after you pay on Stripe you are taken to a private download page, with no account needed. Links last 72 hours and the page can be re-opened for 30 days.

About this test dataset
A complete fictional company over 33 months: eleven related tables with consistent keys, a CEO-to-junior reporting tree, biweekly pay periods, salary raises on anniversaries, benefit enrollments that drive payslip deductions, time-off requests with realistic statuses and lead times, and annual reviews. Net pay reconciles to gross pay, deductions come from the benefit plans the person was enrolled in, and nobody is paid before they are hired or after they leave, so it works for testing payroll reports, org-chart queries and HR dashboards. Tax withholding is a made-up sliding percentage, not a real tax calculation.
- 11 tables in CSV, NDJSON and SQL (schema with keys and data)
- Small set (120 employees) and full set (2,000 employees, 70,000+ payslips)
- 27 consistency checks, run automatically on both sets (pay math, reporting lines, dates, benefits)
- No SSNs, birth dates, bank details or demographic fields; emails at example.com, phones in 555-0100–0199
Free table samples
Download the first rows of a few tables to check the format: employees.csv — first 25 rows · payslips.csv — first 25 rows · time_off_requests.csv — first 25 rows
A look at the data
First rows of a few tables from the small set.
employees (120 rows in the small set, 2,000 in the full set)
| employee_id | employee_number | first_name | last_name | hire_date | department_id | job_id | |
|---|---|---|---|---|---|---|---|
| 1 | E100001 | Pavel | Rowe | pavel.rowe335@example.com | 2014-11-08 | 11 | 55 |
| 2 | E100002 | Jonah | Thorne | jonah.thorne294@example.com | 2015-01-06 | 6 | 32 |
| 3 | E100003 | Liam | Diaz | liam.diaz935@example.com | 2015-03-10 | 3 | 17 |
| 4 | E100004 | Elena | Wade | elena.wade49@example.com | 2015-06-13 | 5 | 27 |
| 5 | E100005 | Omar | Daly | omar.daly986@example.com | 2015-06-30 | 9 | 49 |
| 6 | E100006 | Noor | Lane | noor.lane433@example.com | 2015-07-08 | 10 | 54 |
| 7 | E100007 | Wren | Carver | wren.carver259@example.com | 2015-08-07 | 8 | 43 |
| 8 | E100008 | Lucas | Weber | lucas.weber497@example.com | 2015-08-09 | 4 | 22 |
payslips (4,912 rows in the small set, 71,120 in the full set)
| payslip_id | period_id | employee_id | gross_pay | tax_withheld | benefits_deduction | retirement_contribution | net_pay |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 9038.46 | 2169.23 | 55.6 | 361.54 | 6452.09 |
| 2 | 1 | 2 | 7288.46 | 1749.23 | 44.8 | 437.31 | 5057.12 |
| 3 | 1 | 3 | 7134.62 | 1712.31 | 182.5 | 356.73 | 4883.08 |
| 4 | 1 | 4 | 7153.85 | 1716.92 | 127.3 | 0.0 | 5309.63 |
| 5 | 1 | 5 | 7384.62 | 1772.31 | 118.0 | 443.08 | 5051.23 |
| 6 | 1 | 6 | 7346.15 | 1763.08 | 127.3 | 293.85 | 5161.92 |
| 7 | 1 | 7 | 7673.08 | 1841.54 | 127.3 | 230.19 | 5474.05 |
| 8 | 1 | 8 | 6692.31 | 1606.15 | 118.0 | 0.0 | 4968.16 |
time_off_requests (631 rows in the small set, 9,124 in the full set)
| request_id | employee_id | leave_type | start_date | end_date | business_days | status | requested_at |
|---|---|---|---|---|---|---|---|
| 1 | 1 | vacation | 2024-10-18 | 2024-10-24 | 5.0 | approved | 2024-08-21 11:19:34 |
| 2 | 1 | vacation | 2026-07-27 | 2026-08-09 | 10.0 | cancelled | 2026-07-13 20:22:23 |
| 3 | 1 | sick | 2024-05-31 | 2024-06-01 | 1.0 | approved | 2024-05-31 07:32:00 |
| 4 | 1 | sick | 2024-10-16 | 2024-10-17 | 2.0 | approved | 2024-10-16 06:36:00 |
| 5 | 1 | vacation | 2025-07-30 | 2025-08-03 | 3.0 | cancelled | 2025-06-24 12:51:10 |
| 6 | 1 | vacation | 2026-07-28 | 2026-08-10 | 10.0 | approved | 2026-05-31 22:07:42 |
| 7 | 1 | sick | 2024-02-05 | 2024-02-05 | 1.0 | approved | 2024-02-05 08:30:00 |
| 8 | 1 | vacation | 2025-11-03 | 2025-11-03 | 1.0 | approved | 2025-09-15 17:35:00 |
In the download
- small/ and full/ sets
- csv/ (one file per table)
- json/ (NDJSON)
- schema.sql + data.sql
- SCHEMA.md
- License.txt
$19 one-time, plus applicable tax
Buy now: $19Free guide: Fake HR and Payroll Data for Testing: What Good Test Data Looks Like
Questions
Is any of this real employee data?
No. Every person, company structure and location is generated. Names are random first/last combinations, city names are made up, emails use the reserved example.com domain and phones use the fictional 555-01xx range. There are no government IDs, birth dates or bank details at all.
Are the tax and benefit numbers real?
No. Tax withholding is an illustrative sliding percentage of gross pay (8% to 24%), not any real tax table, and the benefit plan names and prices are invented. The data is for testing software, not for learning payroll rules or checking real-world compliance.
Which databases does the SQL work with?
The schema and inserts use portable SQL types (INTEGER, TEXT, NUMERIC, BOOLEAN, DATE, TIMESTAMP). They load as-is into SQLite and PostgreSQL. For anything else, use the CSV files with your database's import tool.
What does "adds up" mean?
Gross pay equals regular plus overtime plus bonus; net pay equals gross minus tax, benefits and retirement; salaried pay equals the salary in effect divided by 26; benefit deductions match enrollments; managers were hired before their reports; reviews are written by the employee's manager. The full list of checks is in SCHEMA.md.
Can I use it in a course or a product demo?
Yes, including commercial courses, demos and seed data inside your app. You just can't resell the dataset itself as a dataset.
Is this a subscription?
No. One payment of $19 and the files are yours to keep.
What if it does not work for me?
Ask within 14 days of purchase for a full refund. See the refund policy.
Sold by Quietcog. Support: gb1@mail.grokbot.com. See also the terms, refund policy and privacy policy.