Back to all comparisons

Compared

json-server logo

ReqRes vs json-server

ReqRes vs json-server: json-server turns a local JSON file into a fake REST API. ReqRes gives you the same instant REST API, hosted, with auth, request logs and data that persists.

Last updated: September 28, 2026
Get started

Try ReqRes in 2 minutes. Start a project or explore the Notes example.

json-server is one of the most popular ways to get a fake REST API: point it at a JSON file and you have full CRUD on localhost:3000. ReqRes gives you the same instant REST API, but hosted, so it has a public URL, real user logins and request logs, and you do not need Node running.

TL;DR

  • json-server is a free, open-source (MIT) Node CLI that serves a JSON file as a REST API and writes changes back to the file.
  • ReqRes is a hosted REST API with persistent collections, app-user auth and request logs, plus a free no-signup demo API.
  • json-server runs on your machine. To share it you need to host it yourself; the hosted My JSON Server does not save writes.
  • json-server v1 is still in beta and dropped several v0.17 options, including custom routes, middlewares and --delay.
  • Pick json-server for fast, local, offline prototyping. Pick ReqRes when the API needs to be reachable, shared or authenticated.

What json-server is

json-server creates a REST API from a db.json file with no code:

npx json-server db.json

You get GET, POST, PUT, PATCH and DELETE on every array in the file, plus filtering (gt, lt, contains and more), sorting, pagination with _page and _per_page, related records with _embed, and static files. Changes are saved back to the file.

Things to know about the current version:

  • The npm latest release is v1.0.0-beta, and the README warns to expect breaking changes. The last stable release is 0.17.4 (September 2023).
  • v1 removed custom routes, middlewares, --delay, --read-only and snapshots, and ids are now always generated strings.
  • There is no auth, error simulation or request log. Add-ons such as json-server-auth were built for v0.17 and have not been updated since 2021.
  • My JSON Server (my-json-server.typicode.com) hosts a db.json from a public GitHub repo, but writes are faked and not saved, responses are cached for a minute, and it is labelled beta.

What ReqRes is

  • A free demo API at https://reqres.in/api/users, with no install and no signup, and ?delay= for loading states
  • Projects with persistent collections, app-user authentication (magic-code login, sessions, per-user data), request logs and custom endpoints
  • Failure scenarios on demand. Three are free (429, 422, malformed JSON); all 15 come with the Agent Developer plan.

Key differences

Aspect ReqRes json-server
Where it runs Hosted, public URL Your machine (localhost:3000)
Setup None for the demo API; a key for projects Node 22.12+ and a db.json file
Persistence Stored until you delete it Written to the local file
Sharing Anyone with the URL and key Host it yourself; My JSON Server is read-only
Auth Real app users, magic-code login, sessions None built in
Request logs Dashboard, retained 1-90 days by plan Console output only
Latency and errors ?delay=, named failure scenarios Removed --delay in v1; none built in
Offline use No Yes
Cost Free tier, paid plans from $5/month Free

When to choose ReqRes

  • The API must be reachable from anywhere: a phone, a deployed preview, a teammate, a CI runner.
  • You need login and per-user data without writing auth.
  • You want to see every request your app made.
  • Students or testers cannot install Node, or you do not want to support their setup.
  • You need error handling tested, such as a 429 with Retry-After.

When to choose json-server

  • You want everything local and offline.
  • You want your data in a file you can edit by hand and commit.
  • You need rich query operators on a local dataset.
  • You want it free at any volume and are happy to run it yourself.

Side by side

json-server (local file):

await fetch('http://localhost:3000/posts', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ title: 'Hello' }),
});

ReqRes (hosted):

await fetch('https://reqres.in/api/collections/posts/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: 'Hello' } }),
});

Note the data wrapper: ReqRes stores whatever is inside it as the record.

Moving a json-server project to ReqRes

  1. Create a project at app.reqres.in and add one collection per top-level array in your db.json.
  2. POST each item to /api/collections/{name}/records, wrapped in { "data": ... }.
  3. Swap http://localhost:3000/{name} for https://reqres.in/api/collections/{name}/records and add your key header.

ReqRes is not for you if...

  • You need to work fully offline
  • You want your dataset to live in a local file
  • You need json-server's query operators and relations on large local data
  • You want unlimited free usage

Common questions

Is ReqRes a hosted json-server?

In practice, it covers the same job: an instant REST API for prototyping and testing. It is hosted, stores data between sessions and adds auth and logs. It does not read a db.json file.

Can I deploy json-server so others can use it?

Yes, on any Node host, but you then run and secure that server yourself. My JSON Server is free and hosted, but it does not save writes.

Does json-server support authentication?

Not built in. The json-server-auth package added it for v0.17 but has not been updated since 2021 and is not documented to work with v1.

Next step

Ready to ship? Continue in the app.