datagen
A synthetic data generator that lets you describe your data model in a simple language, then compiles it into fast native code to produce large, coherent test datasets.
🔗 Visit datagenDescription
Generating realistic test data at scale is usually either slow (data generated interpretively, row by row, in a scripting language) or crude (random values with no logical relationships between fields or tables). datagen takes a different approach: you describe your data model once in a small, declarative language, and it compiles that description into native code before running it — so generating millions of coherent rows is fast rather than a bottleneck.
datagen's domain-specific language uses Go-like syntax to define entity shapes, cross-references between models, and tag-based filtering rules, which the tool then transpiles into native Go code for the actual generation step. It outputs to CSV, JSON, XML, or stdout, and can write directly into a MySQL database. It ships built-in functions for common data-generation patterns so you're not writing everything from scratch. It's MIT-licensed, written in Go (1.24+), and at 60 GitHub stars is a small but functioning project rather than a widely-adopted standard.
💬 Our review
The short version: datagen's compile-to-native-code approach is a genuinely smart answer to "synthetic data generation is too slow at scale," and it's free and open-source — the tradeoff is learning a small custom DSL instead of just writing a script in a language you already know.
Against writing generation logic directly in Python with Faker, datagen's DSL-to-Go compilation step should meaningfully outperform an interpreted script once you're generating large volumes, at the cost of an upfront learning curve for its syntax. Against model2data, a narrower dbt-specific tool from the same discovery batch, datagen is more general-purpose — MySQL output and multiple export formats — but doesn't come with model2data's dbt project scaffolding. At 60 stars it has more traction than most tools in this niche, but it's still a small project without commercial backing. Worth it if you need to generate large volumes of structured, relationship-aware test data and are comfortable learning a compact DSL; stick with a scripting-language library like Faker for smaller, one-off needs.
💰 Pricing
📊 Global score
🤖 AI-enriched data
Gratuit, licence MIT
Pros
Compile le DSL en code Go natif → génération rapide même à gros volume
Relations entre modèles via références croisées et filtrage par tags
Plusieurs formats de sortie (CSV, JSON, XML, stdout) + écriture directe en MySQL
60 étoiles GitHub, adoption réelle pour un outil de niche
Cons
Nécessite d'apprendre un DSL propriétaire plutôt que d'utiliser un langage déjà connu
Communauté encore restreinte, pas de support commercial
