โ† All guides

A fake user API you can actually write to (randomuser.me alternative)

randomuser.me is a lovely tool, and this guide starts by saying so: for a one-off "give me a realistic person" call it's hard to beat โ€” localized names in dozens of nationalities, photo headshots, per-request ?seed= determinism, even CSV/XML output. If that's all you need, keep using it.

The wall you eventually hit is that randomuser.me is a generator, not a backend. We verified all of this against the live API in July 2026:

So the moment your prototype needs "the user list plus sign-up, edit, delete, search" โ€” the moment fake users need to behave like a users table โ€” you want a different tool.

Try it in 10 seconds (no signup)

Mockbird's public demo has a seeded people collection right now:

curl 'https://HOST/m/demo/customers?limit=3&select=firstName,lastName,email'
curl 'https://HOST/m/demo/customers/1'          # a single person, by id
curl 'https://HOST/m/demo/customers?_page=2&_limit=2'

Your own user API in two curls

curl -X POST https://HOST/api/projects \
  -H 'content-type: application/json' -d '{"name":"user-api"}'
# โ†’ {"id":"abc123","adminKey":"KEY","baseUrl":"https://HOST/m/abc123", ...}

curl -X POST https://HOST/api/projects/abc123/resources \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"name":"users","template":"users","seed":25}'

That's 25 realistic users โ€” names, emails, cities, join dates, and avatar URLs served by your own project (initials in a colored circle, generated SVG โ€” no third-party image service to go down, and no real person's photograph standing in for "Jane User"):

curl 'https://HOST/m/abc123/users?limit=1'
# [{ "id": 1,
#    "firstName": "Aria", "lastName": "Johnson",
#    "email": "aria.johnson88@example.com",
#    "avatar": "https://HOST/m/abc123/img/128x128?seed=aria9133&round=1&text=AJ",
#    "city": "Kyoto",
#    "createdAt": "2026-05-22T15:12:54.772Z" }]

Want different fields? Skip template and pass your own fields array โ€” role, plan, isAdmin, whatever your UI needs (field types).

randomuser.me โ†’ Mockbird translation

randomuser.meMockbird
?results=20?limit=20 (or _limit)
?page=3&results=10&seed=x?_page=3&_limit=10 โ€” stable without a seed, because the data persists
?inc=name,email?select=firstName,lastName,email (projection)
?seed=foo (same strangers every call)not needed โ€” your 25 users are records in a real collection; same list until you change it
no single-user URL/users/7
?city=โ€ฆ ignored?city=Kyoto, ?lastName_like=jack, ?q=aria, ?_sort=firstName all work
writes: 404POST / PATCH / DELETE persist (and show up in the inspector)
login.uuid/password/sha256 (inert strings)POST /auth/login with any seeded user's email โ†’ a real signed JWT; protected mode makes every endpoint require it

That last row deserves a sentence: because your fake users are a real collection, the mock auth endpoints treat them as the user roster. POST /m/abc123/auth/login with {"email":"aria.johnson88@example.com","password":"anything"} returns a JWT plus that user's record; /auth/register inserts a new one. Your login screen, session handling and token-expiry logic all become testable against the same data your user list renders.

Also in the box

GraphQL over the same records ({ users(limit: 2, sortBy: "firstName") { id firstName email } }), named snapshots for deterministic tests, types.ts/Zod/OpenAPI/Postman exports, webhooks on writes, and db.json export so you can eject to json-server any time.

Honest comparison

randomuser.meMockbird
Setupnone at allnone for the demo; two curls for your own
Localized identities (?nat=)โœ” dozens of nationalities, localized names/addresses/phonesโœ˜ one international-ish pool
Photo headshotsโœ” real photographsinitials avatars (SVG, self-hosted)
Output formatsโœ” JSON, CSV, XML, YAMLJSON (+ GraphQL)
Add / edit / delete usersโœ˜ read-onlyโœ” full CRUD, persisted
Filter / search / sortgender + nationality onlyโœ” any field, ranges, substring, full-text, sort
Custom fieldsโœ˜โœ”
Login / auth simulationโœ˜ (inert credential strings)โœ” real signed JWTs against your roster
Failure/latency simulationโœ˜?mock_status=500, ?mock_delay=2000, chaos

Fair is fair: if you need a French user with a French address and a photo, use randomuser.me โ€” we don't do localized identity generation, and their headshots look better in a demo than initials do. Use us when the user list has to act like part of your app instead of a slideshow of strangers.

What this is (and isn't): Mockbird is a mock-API/prototyping service, not a production user store โ€” don't put real personal data in it. All seeded people are fake (names from a word list, emails on example.com). Projects are unlisted; anonymous creation has a per-IP daily cap โ€” sign up (free) to keep projects tied to an account.

This page is written by the Mockbird maker โ€” bias disclosed. randomuser.me behavior (writes 404, /api/5 404, ?city= ignored, inc/nat/seed/format working) verified with live requests in July 2026; uinames.com checked the same day.

Prefer a UI? The dashboard has a one-click /users starter on every new project. More guides: reqres.in alternative ยท mock JWT auth ยท placeholder images & avatars. Create your API โ†’