Swift 6 · Apache-2.0 · no dependencies

Fake data you can
generate twice.

319 generators across 29 namespaces and 63 locales. Pick a number and you get the same people every time — on any machine, on any day.

Package.swift
.package(url: "…/decoy", from: "1.0.0")
Anywhere
import Decoy
import DecoyLocaleEN

var faker = Faker(seed: 1337, locale: DecoyLocaleEN.locale)

faker.person.fullName()        // "Ms. Marguerite Ledesma"
faker.location.streetAddress() // "537 Richard Crest"
faker.company.name()           // "Hardy Corp"
faker.internet.email()         // "angelo.diaz@example.com"
faker.person.jobTitle()        // "Intuitive capability Producer"

The same number, the same people

Two knobs

A seed is just a number you choose. Decoy's randomness is deterministic, so the same number always makes the same choices — seed 1337 gives you these six people today, next year, on your laptop and in CI. Change the number, get a different six. That is what makes generated fixtures safe to rely on.

A locale changes the shape, not just the vocabulary. Watch the address column: English puts the number first, German puts it last, Japanese uses no spaces at all. Some locales fall back to English for some fields — the locale matrix says exactly which.

seedlocale
nameaddresscitycompanyphone

Click any row — every value can name the licensed source it was drawn from.

Everything it generates

319 generators

Pick a namespace to see real output, or open its page for every method it has.

faker.personNames, honorifics, jobsall 17 →

Invented, not sourced

Nobody owns these

Some namespaces are assembled from patterns rather than drawn from a real-world list, so the output is plausible without belonging to anyone. There is no pub called The Gecko & Atlas. That is the point: a fixture, a screenshot or a demo can use these without naming a business that has to live with it.

whimsy.pubName()
  • The Nimble Jackal
  • The Old Spindle
  • The Gecko & Atlas
  • The Old Prism
whimsy.bandName()
  • The Umbral Panthers
  • Copper Foothill
  • The Orbital Dippers
  • The Amber Cormorants
whimsy.codename()
  • Project Fleeting Hollow
  • Operation Upright Dunlin
  • Project Lucid Estuary
  • Operation Endless Adder
whimsy.superheroName()
  • Keen Compass
  • Earnest Ledger
  • The Eager Ocelot
  • Doctor Thicket
beverage.beer()
  • Willing Gannet Tripel
  • Stoat Wheat Beer
  • Earnest Sturgeon Wheat Beer
  • Vivid Bittern Gose
sport.club()
  • Moor County
  • Shoal Narwhals
  • Tundra Urchins
  • Harbour Athletic
whimsy.ssid()
  • Get Off My LAN
  • Router? I Hardly Know Her
  • Silence of the LANs
  • Bill Wi the Science Fi
whimsy.boardGame()
  • Headland: Willing Spindle
  • Rise of the Badgers
  • Gannet & Cipher
  • The Thicket Expedition
whimsy.talkTitle()
  • Zero-Downtime Cutovers and the Noble Tessera
  • Observability: Lessons from Reef
whimsy.technobabble()
  • You cannot index the firewall without synthesizing the solid-state bus
  • If we reboot the array, we can get to the mobile protocol through the back-end firewall
system.databaseError()
  • deadlock detected while waiting for ShareLock on transaction 41821
  • canceling statement due to statement timeout