This generator produces a believable synthetic e-commerce catalog — products with names, SKUs, prices, discounts, stock levels, and ratings — that you can drop into demos, analytics dashboards, seed scripts, and import pipelines. Every row is internally consistent, so the data behaves correctly when your tooling does maths on it.
Why synthetic data matters for e-commerce development
Using real product data from a live catalog in development and testing creates several risks: real prices might leak to unintended audiences, privacy policies may not cover development environments, and live catalog data is often messy, incomplete, or outdated. Synthetic data solves all three problems — it is safe to share, screenshot, and publish, it is structurally complete, and it is generated fresh on demand.
For e-commerce specifically, the challenge with naive random data is that fields must be internally consistent. If salePrice is random rather than derived from price × (1 − discount%), then any analytics code that checks margin or discount logic will produce nonsense. This generator derives all commercial fields from each other, so the data stays coherent across calculations.
What each product record contains
| Field | Description |
|---|---|
| id | Unique integer identifier |
| name | Composed from adjective + material + product noun |
| sku | Category prefix + zero-padded sequence (e.g., ELEC-00042) |
| category | One of several standard retail departments |
| price | Full price, within a category-plausible range |
| discount | Random percentage, often 0 for most items |
| salePrice | round(price × (1 − discount / 100), 2) — always derived, never random |
| stockQty | Integer quantity on hand |
| inStock | Boolean derived from stockQty > 0 |
| rating | Random 3.0–5.0, reflecting realistic review skew |
| reviewCount | Scales with rating (highly rated products tend to have more reviews) |
| description | Short SKU-based description string |
How it works
For each product the generator composes a name from adjective, material, and noun word pools,
assigns a category, and derives the commercial fields. Because salePrice is computed from price and discount rather than being random, any revenue or margin calculation you run against the dataset gives sensible results. Export as JSON for APIs and seed files, or as CSV with a header row and proper quoting for spreadsheets and bulk importers.
Practical applications
UI development: Generate 10–20 products for a realistic product listing page without needing to mock API calls. The names and images (if you add placeholder URLs by convention) look like a real catalog.
Analytics testing: Generate 500+ products and import into a BI tool or analytics dashboard to test chart rendering, filtering, and aggregation. The price/discount/rating distribution will produce meaningful chart shapes.
Database seeding: Paste a JSON array into a seed file for testing order flows, cart logic, and checkout. Because prices and quantities are internally consistent, stock-check and discount-application logic behaves correctly.
Import pipeline testing: Use the CSV export to test your bulk product import tool, including edge cases like products with 0 stock, 0 discount, or maximum rating values.
Tips
Use a small row count for quick UI screenshots and a few hundred rows to stress-test tables, pagination, and chart rendering. The CSV exporter quotes any field containing a comma or quote so it never corrupts columns. Regenerate for a fresh catalog, or copy and save a dataset you want to reuse as a stable fixture in automated tests.