ReqRes Blog

JSONPlaceholder Alternatives: What to Use When It Isn't Enough

Sep 28, 2026 5 min read
testing mock-api frontend jsonplaceholder
Next step

Want to try this in 2 minutes? Start a project or open the Notes example.

JSONPlaceholder is brilliant for getting started: instant fake endpoints, predictable JSON, zero setup. At some point, though, your app stops being a demo, and a fake API starts getting in the way. This guide covers when that happens, the best JSONPlaceholder alternatives for each situation, and how to switch without rewriting your frontend.

What JSONPlaceholder does well

  • Instant, free, no-signup endpoints for posts, comments, users, todos, albums and photos
  • Related resources, such as /posts/1/comments
  • Fast, predictable responses that never change
  • Nothing to install

For tutorials, quick demos and unblocking UI work, it is hard to beat.

Where it stops working

Writes are faked. A POST to /posts returns 201 with id: 101, but nothing is saved. Request /posts/101 straight after and you get a 404. PUT and DELETE work the same way. So any flow that creates something and reads it back cannot work.

That leads to the other gaps:

  • No persistence. Refresh the page and your "new" data is gone.
  • No real users. Everyone sees the same records, and there is no login.
  • No auth flows. You cannot test a login screen, a session or a 401.
  • No request logs. When something breaks, you cannot see what your app sent.
  • No failures. Every request succeeds, so error handling never gets tested.

If any of those sound familiar, you have outgrown a pure fake API.

The best JSONPlaceholder alternatives

Tool Hosted? Data persists? Auth Best when you need
ReqRes Yes Yes, in projects Real app users Persistence, logins and logs, no setup
DummyJSON Yes No (simulated) JWT demo login Richer fake data and a token flow
json-server No, runs locally Yes, to a local file None An offline fake API from your own JSON
Mockoon Locally (cloud paid) In memory, resets Simulated Detailed local mocks kept in Git
Beeceptor Yes Capped per endpoint Header matching Rule-based mocks, wider protocol support

ReqRes

A hosted REST API with two layers. The free demo endpoints (https://reqres.in/api/users, /api/login) work with no signup, like JSONPlaceholder, but include realistic errors and a ?delay= parameter. When you need more, a free project gives you:

  • Collections that store data, so a POST today is still there tomorrow
  • App users with magic-code login, sessions and per-user records
  • Request logs for every call
  • Failure scenarios to test error handling (429, 422 and malformed JSON are free)

Your code stays fetch(). See ReqRes vs json-server and ReqRes vs Mockoon for detailed comparisons.

DummyJSON

Like JSONPlaceholder with more realistic data (products, carts, recipes, users), search and pagination, and a JWT login you can use to practise protected routes. Writes are simulated, so it has the same persistence limit.

json-server

Point it at a db.json file and get full CRUD on localhost:3000, with changes written back to the file. Great offline, but it runs on your machine, so others cannot reach it unless you host it. Version 1 is still in beta. Full comparison.

Mockoon

A free, open-source mock server with a desktop app and CLI, strong rules and templating, and OpenAPI import. CRUD data lives in memory and resets on restart; hosted mocks start at $100/month billed annually. Full comparison.

Beeceptor

A hosted, rule-based mock server with REST, GraphQL, SOAP and gRPC support. Its free tier is 50 requests a day, and CRUD storage is capped per endpoint (oldest records are removed first). Full comparison.

Which one should you pick?

  • You just need fake data for a tutorial: stay on JSONPlaceholder, or use the ReqRes demo API if you also want error responses and delays.
  • Your app creates data and reads it back: ReqRes (hosted) or json-server (local).
  • You need login and per-user data: ReqRes app users.
  • You need to see what your app sent: ReqRes request logs.
  • You need to test error handling: ReqRes failure scenarios, or build them yourself in Mockoon or Beeceptor.
  • You must work offline: json-server or Mockoon.

Switching from JSONPlaceholder to ReqRes

Your components barely change. The URL gains a collection path, you add a key header, and request bodies go inside data.

Before (JSONPlaceholder):

await fetch('https://jsonplaceholder.typicode.com/todos', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ title: 'Ship onboarding', completed: false }),
});

After (ReqRes project):

await fetch('https://reqres.in/api/collections/todos/records', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_MANAGE_KEY', // pro_* key for writes, keep it server-side
  },
  body: JSON.stringify({ data: { title: 'Ship onboarding', completed: false } }),
});

// This time the todo is really there
const { data } = await fetch('https://reqres.in/api/collections/todos/records', {
  headers: { 'x-api-key': 'YOUR_PUBLIC_KEY' }, // pub_* key, safe in the browser
}).then((r) => r.json());

To move over:

  1. Create a free project at app.reqres.in.
  2. Add a collection for each resource you use (todos, posts and so on).
  3. Swap the base URL and add the key header.
  4. Wrap request bodies in { "data": ... }.

Common questions

Is there a JSONPlaceholder alternative that saves data?

Yes. ReqRes projects store records until you delete them, hosted and free to start. json-server saves to a local file on your machine. JSONPlaceholder and DummyJSON return realistic responses but do not store writes.

Is there a JSONPlaceholder alternative with authentication?

ReqRes has real app users with magic-code login and per-user data. DummyJSON has a demo JWT login. JSONPlaceholder and json-server have none built in.

Does JSONPlaceholder save POST requests?

No. It returns a successful response with a new id, but the resource is not created, so a follow-up GET for that id returns 404.

Is JSONPlaceholder still free?

Yes, and it remains a great choice for learning and demos. The alternatives above are for when your app needs more than fixed fake data.

Try it

Ready to ship? Continue in the app.