JSONPlaceholder
Fake REST API for testing and prototyping. Six resources (posts, comments, todos, users…) with full CRUD simulation. The default API in every frontend tutorial.
🟢 Online · 346 ms
100%
Unlimited (fair use), no key, no credit card
No key required
Free alternatives (live ranking)
- Free Dictionary API — 🟢 Online · Unlimited (fair use), no key, no credit card
- ipify — 🟢 Online · Unlimited, no key, no credit card
- DiceBear Avatars — 🟢 Online · Unlimited (fair use), no key, no credit card
Compare JSONPlaceholder with…
- JSONPlaceholder vs Free Dictionary API — Unlimited (fair use), no key, no credit card
- JSONPlaceholder vs ipify — Unlimited, no key, no credit card
- JSONPlaceholder vs DiceBear Avatars — Unlimited (fair use), no key, no credit card
Paid alternatives
- Mockaroo — free 200 rows, paid from $60/yr
- Postman Mock Servers — free tier, then from $14/mo
Frequently Asked Questions
Does JSONPlaceholder require an API key?
No, JSONPlaceholder is freely accessible without registration or an API key.
What is JSONPlaceholder's free tier?
Unlimited (fair use), no key, no credit card
Is JSONPlaceholder currently online?
We check JSONPlaceholder every hour. The current status is shown at the top of this page. You can also see the 30-day uptime history in the chart above.
Implementation notes
When to use JSONPlaceholder
JSONPlaceholder is the default fake REST API for frontend development — when you need realistic JSON responses to build against before your real backend exists. Six interlinked resources (posts, comments, albums, photos, todos, users) with 500 total records, full support for GET/POST/PUT/PATCH/DELETE, query filtering, and nested routes. Every React, Vue, and Angular tutorial written in the last decade uses it. Use it for prototyping UI components, teaching HTTP fundamentals, writing integration test examples, and stubbing an API contract before backend work starts.
Common pitfalls
- Write operations (POST/PUT/DELETE) are simulated — the API returns a realistic response (including a new `id` for POSTs) but nothing is actually persisted. Refetching after a 'successful' create returns the original data. Tutorials often fail to mention this and beginners spend hours debugging phantom saves.
- The `/photos` resource returns URLs pointing to via.placeholder.com which has had reliability issues for years. If your prototype renders photo thumbnails, expect some broken images — or rewrite the URLs to picsum.photos in your fetch layer.
- IDs are stable and predictable (users 1-10, posts 1-100), which makes demos deterministic — but code that assumes 'create returns id 101' will break against any real backend. Don't let the simulation's determinism leak into your assumptions.
- There is no authentication simulation at all. If your app needs to prototype login flows, pair JSONPlaceholder with a fake auth layer or use a tool like json-server locally where you can add middleware.
Quick start (javascript)
const res = await fetch("https://jsonplaceholder.typicode.com/posts?userId=1");
const posts = await res.json(); // 10 posts by user 1 From our monitoring
JSONPlaceholder is one of the most reliable services we track — it's a static dataset behind Cloudflare's CDN, so there's essentially nothing to break. Response times are consistently under 150ms globally. It has survived 10+ years on donations and sponsorship without ever adding a paywall, rate limit, or signup wall.
Embed this badge
Add a live status badge to your README, docs, or website.
Markdown
[](https://freeapi.watch/jsonplaceholder) HTML
<a href="https://freeapi.watch/jsonplaceholder"><img src="https://freeapi-builder.a10ayassine.workers.dev/badge/jsonplaceholder.svg" alt="JSONPlaceholder Status"/></a>