FAKER
// kotlin edition //
Kotlin Java Scala Groovy Clojure Android
213+
Providers
60+
Locales
4Γ—
Faster
JVM
Platform

Ensure your application data looks as if it was real, just like our really fake logo, but not quite so.

philosophy

We fake it.

You make it.

In fact, kotlin-faker is so good at generating fake data, it almost fooled us into thinking it was real! 😱

From names that sound like they belong to secret agents πŸ•΄οΈ to addresses where superheroes 🦸 might live.

data domains

What Kind of Data?

213+ generators covering everything from real-world names and banking details to obscure pop culture references.

Pick a category to explore:

Core Entertainment Tech Culture Creatures Humor
Faker.kt
why kotlin-faker

Built for Modern JVM

While other data fakers exist, kotlin-faker is built from the ground up to be the most powerful, flexible, and developer-friendly choice.

{ }
Kotlin First
Idiomatic DSL makes data-generation code clean, readable, and type-safe
No awkward Java interop or legacy API design β€” it just feels right
Runs on Android and any JVM 11+ environment without extra setup
∞
Unrivaled Coverage
213+ data providers across every imaginable domain
60+ locales including non-latin scripts
From Address and Name to obscure Esport teams and LOTR characters
⟳
Unique & Powerful
Guaranteed unique values at the provider or function level
Random class instance generation for any data class
CLI app for exploring generators without writing code
Blazing Fast & Actively Maintained
Benchmarked against legacy Java fakers, kotlin-faker is up to 4Γ— faster β€” saving you time across thousands of test runs. Actively developed with new providers added regularly.
4Γ—
faster than java-faker
internationalization

60+ Locales

Generate data that feels local β€” from Norwegian names to Japanese addresses. Just set the locale and go.

Locales.kt
// default β€” English (en)
val faker = Faker()
faker.name.name() // β†’ "John Smith"
Β 
// Norwegian BokmΓ₯l (nb-NO)
val nbFaker = Faker { locale = "nb-NO" }
nbFaker.name.name() // β†’ "BjΓΈrn Eriksen"
Β 
// Japanese (ja)
val jaFaker = Faker { locale = "ja" }
jaFaker.name.name() // β†’ "η”°δΈ­ ε€ͺιƒŽ"
advanced features

And Much More

01
Unique Values
Guarantee no repeated values across a provider or a specific function. Essential for realistic, non-colliding test data.
faker.unique.name.name()
faker.unique.address.city()
02
Random Instances
Populate any Kotlin data class automatically with fake data. Configure generators per field, or let faker decide.
faker.randomProvider<User>()
Β Β .randomClassInstance()
03
String Templates
Build composite strings using expression templates that resolve to real faker values inline.
faker.string.resolve(
Β Β "#{Name.name}"
)
04
CLI App
Explore available generators and outputs right from your terminal β€” no code needed.
$ faker-cli list
$ faker-cli generate name
platform support

Works anywhere on the JVM

Kotlin
Java
Scala
Groovy
Clojure
Android
⚠⚠⚠

WARNING

All names, addresses, bank accounts, and other data generated by this library β€” even those based on real strings β€” are entirely fictional. 🦹

All produced data is fake and generated... poorly. πŸ’©

The data is completely made up, but the problems that it tries to solve are real. πŸ‘½

We take no responsibility for any existential crises caused by the eerily convincing fake data.

Use with caution!