Overview
SDV (Synthetic Data Vault) is a Python library for creating tabular synthetic data. It uses machine learning models to learn the patterns in your real data, then generates new tables that follow those same statistical patterns without copying the original rows.
It is meant for data scientists and engineers who need realistic test data, want to share datasets without exposing sensitive values, or need extra training data. SDV handles single tables, multiple connected tables, and sequential (time-based) data.
Within the synthetic data category, SDV covers the full workflow: it describes your data with metadata, fits a synthesizer, samples new rows, and then evaluates how close the synthetic data is to the real data with a quality report.
What it does
- Multiple models, from the statistical GaussianCopula to the deep-learning CTGAN
- Generates data for single tables, multiple connected tables, or sequential tables
- Quality reports and column plots to compare synthetic data against the real data
- Built-in anonymization for sensitive columns such as emails, addresses, and credit card numbers
- Preserves keys and relationships, including unique primary keys and primary/foreign key links
- Logical constraints to encode business rules during data processing
Getting started
Install SDV with pip, load a demo dataset, fit a synthesizer, and sample synthetic rows.
Install SDV
Install from PyPI (a virtual environment is recommended). Conda is also supported.
pip install sdvLoad a demo dataset
Download a built-in single-table demo. This returns both the data and its metadata.
from sdv.datasets.demo import download_demo
real_data, metadata = download_demo(modality='single_table', dataset_name='fake_hotel_guests')Fit a synthesizer and sample data
Create a synthesizer, fit it on the real data, then sample new synthetic rows.
from sdv.single_table import GaussianCopulaSynthesizer
synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(data=real_data)
synthetic_data = synthesizer.sample(num_rows=500)Evaluate the synthetic data
Generate a quality report that scores how closely the synthetic data matches the real data.
from sdv.evaluation.single_table import evaluate_quality
quality_report = evaluate_quality(real_data, synthetic_data, metadata)Commands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Generate safe test and demo data that mirrors production without exposing real customer values
- Share or publish a dataset by replacing sensitive columns with anonymized synthetic ones
- Create extra training data when a real dataset is small or imbalanced
- Reproduce multi-table or time-series data while keeping keys and relationships intact
How SDV (Synthetic Data Vault) compares
SDV (Synthetic Data Vault) alongside other open-source synthetic data tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Easy Dataset | ★ 15k | An application that parses your documents and converts them into structured question-answer datasets for fine-tuning, RAG, and model evaluation. |
| SDV (Synthetic Data Vault) | ★ 3.6k | Learn patterns from real tables and generate realistic synthetic data in Python |
| distilabel | ★ 3.4k | A framework for building synthetic-data and AI-feedback pipelines that call any LLM to generate and judge datasets. |
| NeMo Data Designer | ★ 2.4k | An NVIDIA library for orchestrating LLM-based synthetic-data pipelines with validation and quality scoring. |
| Augmentoolkit | ★ 1.9k | A tool that turns raw documents into synthetic instruction and conversation datasets for fine-tuning models. |
| NeMo Curator | ★ 1.8k | An NVIDIA toolkit for cleaning, deduplicating, and curating large text datasets used to train LLMs. |
| Curator | ★ 1.8k | A Python library for generating and curating large synthetic datasets to train and post-train language models. |
| ydata-synthetic | ★ 1.7k | A collection of generators for creating synthetic tabular and time-series data from real datasets. |

