Faker

Generate realistic fake data for seeding, testing, and anonymizing PHP apps

Library
Composer
vv1.24.1
3,999 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
52 /100 Fair
Development Activity 4
Maintenance 32
Community 72
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
84 /100 Excellent
Architecture 85
Code Quality 85
Innovation 82
Learning Curve 88

Faker is a PHP library that generates fake but realistic-looking data for you. Whether you need to bootstrap a database, create good-looking XML documents, fill in a persistence layer to stress test it, or anonymize data taken from a production service, Faker provides an expressive API for producing names, addresses, phone numbers, emails, lorem text, and dozens of other data types.

Community-maintained as the successor to the original fzaninotto/faker, FakerPHP offers localized providers for many regions and a pluggable provider architecture, making it a staple of PHP test suites and fixture tooling.

What You Get

  • A fluent Generator API with dozens of built-in data formatters (names, emails, addresses, dates, text, payments)
  • Locale-aware providers covering many languages and regions
  • Modifiers such as unique(), optional(), and valid() for constraining generated values
  • A pluggable provider and container architecture for adding your own custom data generators

Common Use Cases

  • Seeding development and test databases with realistic sample records
  • Building fixtures and factories for automated test suites
  • Anonymizing or masking production data for safe use in lower environments

Under The Hood

Architecture - Faker\Factory::create() builds a Generator and registers the default providers (Person, Address, Internet, Company, DateTime, Payment, and others) for the chosen locale. The Generator uses magic __get/__call to route property and method access to whichever provider supplies that formatter, while decorator generators (UniqueGenerator, ValidGenerator, DefaultGenerator, ChanceGenerator) wrap it to implement unique(), valid(), optional(), and default() semantics. A PSR-11 Container and Extension interfaces support the modern, explicitly-typed provider API.

Tech Stack - Pure PHP supporting 7.4 and 8.x, depending only on psr/container and symfony/deprecation-contracts. It uses Composer for distribution with PSR-4 autoloading under the Faker\ namespace, and the dev toolchain includes PHPUnit, PHPStan, Psalm, and a Roave backward-compatibility check.

Code Quality - The project is mature and heavily tested, with 170+ test files, static analysis via PHPStan and Psalm (with baselines), type-coverage tracking, and Codecov reporting. Providers are cleanly separated by data category and locale, though recent commit activity is low as the library is largely feature-complete.

API Design - The developer experience is a key strength: a single Factory::create() call yields a generator whose data accessors read almost like English ($faker->firstName, $faker->safeEmail, $faker->dateTimeBetween). Extensive documentation on fakerphp.github.io and intuitive modifier chaining keep the learning curve low, and the pluggable provider model makes domain-specific extensions straightforward.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers