datagen

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 datagen
📁 Data & Analytics🗣️ English📅 September 5, 2026

Description

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

Open sourceFree, MIT license
Self-run Free (MIT)

📊 Global score

53Average
🌐Availability15/100Faible

1 language · 0 platform

📄Profile90/100Excellent

Profile completeness

🤖 AI-enriched data

💰 Pricing model
💳 Open source

Gratuit, licence MIT

👥 Target audienceDéveloppeurs et ingénieurs data ayant besoin de générer de gros volumes de données de test cohérentes
🗣️ Languagesen
🌍 Target countriesInternational
👍

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

❓ Frequently asked questions

What is datagen in one sentence?
What output formats does it support?
Do I need to know Go to use it?
Can it model relationships between entities?
Is it free?
Is it worth the money compared to alternatives?
Which tool should you pick for your case?