ConfigsJul 22, 2026·3 min read

Mimesis — High-Performance Fake Data Generator for Python

A fast Python library for generating structured fake data including names, addresses, dates, text, and domain-specific values for testing, seeding databases, and populating prototypes.

Agent ready

Ready-to-run agent install

This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.

Native · 98/100Policy: allow
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Single
Trust
Trust: Established
Entrypoint
Mimesis
Direct install command
npx -y tokrepo@latest install 1b25f61e-85d0-11f1-9bc6-00163e2b0d79 --target codex

Run after dry-run confirms the install plan.

Introduction

Mimesis is a Python library for generating fake data. It provides locale-aware data providers that produce realistic names, addresses, phone numbers, dates, text, payment details, and dozens of other data types. Mimesis focuses on performance and type safety, generating data significantly faster than similar libraries.

What Mimesis Does

  • Generates locale-aware fake data for 30+ locales including names, addresses, and phone formats
  • Provides 30+ data providers covering personal info, dates, text, internet, payment, food, science, and more
  • Generates structured data via schema definitions for populating databases and building fixtures
  • Supports seeded random generation for reproducible test data
  • Offers a generic provider factory for custom data generation patterns

Architecture Overview

Mimesis organizes data generation into provider classes, each responsible for a data domain (Person, Address, Internet, Finance, etc.). Providers load locale-specific data from bundled JSON datasets and use deterministic random generation. The Schema class composes multiple providers into structured output, producing lists of dictionaries that match database or API schemas. All providers accept a seed for reproducible results.

Self-Hosting & Configuration

  • Install from PyPI: pip install mimesis
  • Import providers directly: from mimesis import Person, Address, Internet
  • Set locale at provider creation: Person("de") for German names, Address("ja") for Japanese addresses
  • Use Schema for structured data: Schema(lambda: {"name": person.full_name(), "email": person.email()})
  • Set seed for reproducibility: Person("en", seed=42) generates the same sequence every run

Key Features

  • 30+ built-in data providers covering personal, financial, geographic, scientific, and internet domains
  • Locale support for 30+ languages with region-specific formats for names, phones, and addresses
  • Schema builder for generating lists of structured records matching database or API shapes
  • Deterministic seeded generation for reproducible test fixtures
  • High performance: generates data 5-10x faster than Faker due to lean architecture and bundled data

Comparison with Similar Tools

  • Faker — larger community and more third-party providers; Mimesis is faster and has built-in type hints
  • factory_boy — ORM-integrated factory for Django/SQLAlchemy models; Mimesis focuses on raw data generation without ORM coupling
  • Hypothesis — property-based testing with shrinking; Mimesis generates realistic-looking data, not adversarial test cases
  • Polyfactory — generates instances of Pydantic models and dataclasses; Mimesis provides raw data values rather than model instances
  • chance.js — JavaScript fake data library; Mimesis serves the Python ecosystem with similar provider coverage

FAQ

Q: How does Mimesis compare to Faker in speed? A: Mimesis is typically 5-10x faster than Faker for equivalent operations due to its simpler architecture and direct data loading without heavy provider registration.

Q: Can I add custom data providers? A: Yes. Create a class inheriting from BaseProvider and register it with the Generic provider or use it standalone.

Q: Does Mimesis support generating unique values? A: Use the unique property on providers (e.g., person.unique.full_name()) to avoid duplicates within a session.

Q: Can I generate data for non-English locales? A: Yes. Pass a locale code like "de", "ja", "pt-br" when creating any provider to get locale-appropriate data.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets