The classic free mock, fake-data and placeholder-image services that a decade of tutorials depend on — checked with a plain GET every hour, exactly what a tutorial curl or an <img> tag experiences. 30 of 71 are failing right now — 27 of those have been failing for 7+ days (dead, not a blip; marked ⚰️ below).
Last checked 2026-09-12T18:00:31Z · re-checked every hour · JSON · Atom feed of down/recovered events (subscribe in any RSS reader — single blips debounced) · README badges on every service page · what each of these is good for →
New: get a Slack/Discord/webhook ping when one of these goes down — every service page has a subscribe box (e.g. ReqRes alerts), or watch all 71 at once via the watch API. Free, no account.
Watch your own URL: the same checker can monitor your API — curl -X POST https://mockbird.mockbird.workers.dev/api/status/monitor -d '{"url":"https://api.example.com/health","notify":"https://hooks.slack.com/…"}' checks it every 30 minutes and pings your webhook once on down, once on recovery. Guide → · Monitor API →
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| JSONPlaceholder jsonplaceholder.typicode.com/posts/1 Fixed dataset; writes are faked (POST answers 201 but nothing persists). |
UP 200 · 22 ms | 100% | 100% | free alternative → |
| ReqRes (reqres.in) reqres.in/api/users?page=1 Keeps changing: required an x-api-key for part of 2026 (keyless curls 401'd), now keyless again but every response carries an injected _meta upsell object, writes are faked, and datacenter IPs (like this checker's) get 429-rate-limited. |
HTTP 429 rate-limits datacenter IPs (this checker, CI runners, cloud apps); residential browsers may still get through · failing 10 h | 14.9% | 32% | free alternative → |
| FakeStoreAPI fakestoreapi.com/products/1 Reads work; writes are faked (POST returns an id whose GET comes back empty). |
UP 200 · 309 ms | 100% | 100% | free alternative → |
| DummyJSON dummyjson.com/products/1 Reads work; writes are simulated (response-only, nothing persists). |
UP 200 · 17 ms | 100% | 100% | free alternative → |
| DummyAPI (dummyapi.io) dummyapi.io/ API requires a signed-up app-id header on every request — even reads (keyless calls answer 403 APP_ID_MISSING) — so this probe watches the site itself. Free tier is 500 requests/day. |
UP 200 · 386 ms | 100% | 100% | free alternative → |
| FakerAPI (fakerapi.it) fakerapi.it/api/v2/persons?_quantity=1 Generator only: GET-only, nothing persists, no single-record URL. Whole site (root + v1 + v2) began 502ing in Aug 2026; the linked source repo's last commit is Feb 2023. |
DOWN timeout after 8000ms · failing 14 d ⚰️ | 0% | 0% | free alternative → |
| randomuser.me randomuser.me/api/?results=1 Generator only: read-only (writes 404), no single-user URL, field filters ignored. Its sibling uinames.com is already dead. |
UP 200 · 285 ms | 100% | 100% | free alternative → |
| GoRest (gorest.co.in) gorest.co.in/public/v2/users?page=1 Reads are open; every write requires sign-in + a Bearer access token (anonymous POST answers 401), all created records are wiped and reseeded every 24 hours, and v1 URLs sunset on 2 Jun 2027. |
UP 200 · 913 ms | 100% | 98.5% | free alternative → |
| Platzi Fake Store API (api.escuelajs.co) api.escuelajs.co/api/v1/products?offset=0&limit=1 Real CRUD — into one database shared by everyone on the internet: strangers rename/delete the seed products tutorials depend on, the dataset resets without warning, PUT answers 500 unless an images array is resent, and missing ids answer 400 (not 404) with a raw ORM error. |
UP 200 · 1166 ms | 100% | 100% | free alternative → |
| restful-api.dev api.restful-api.dev/objects/1 Writes genuinely persist (rare — credit due), but created objects never appear in GET /objects (the list is frozen at 13 seed devices), seed ids 1–13 reject updates/deletes as reserved, and ?limit/?page are silently ignored without the signed-in tier. Sep 7 2026: anonymous access now capped at 50 requests/24h per IP (HTTP 405 + a sign-in prompt past it) — shared-IP callers (Workers, serverless, CI) burn through the pooled quota immediately. |
HTTP 405 anonymous cap (50 req/24h per IP, added Sep 2026): this checker's shared cloud egress IP is over it — every Workers/serverless/CI caller on a shared IP shares that fate; browsers on fresh IPs still get through · failing 14 h | 17% | 9.5% | free alternative → |
| My JSON Server (my-json-server.typicode.com) my-json-server.typicode.com/typicode/demo/posts/1 Serves a db.json from a public GitHub repo; writes are faked (POST answers 201 but the new id 404s), responses cache for a minute, and it has carried a beta may-be-down warning since 2017. |
UP 200 · 2116 ms | 100% | 100% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| httpbin.org httpbin.org/get Repeated multi-hour 503/timeout outages in 2026. |
UP 200 · 703 ms | 95.7% | 99% | free alternative → |
| Postman Echo postman-echo.com/get Sends no CORS headers at all — browser fetch() fails outright (curl works fine). |
UP 200 · 274 ms | 100% | 100% | free alternative → |
| httpstat.us httpstat.us/200 Connections fail outright (empty reply on HTTP and HTTPS) as of Aug 2026 — “is it down?” issues go back to 2020, and several OSS projects have dropped it from their test suites. |
HTTP 502 · failing 16 d ⚰️ | 0% | 0% | free alternative → |
| Mocky (run.mocky.io) run.mocky.io/v3/health Officially discontinued — serves a self-signed certificate; every saved mock URL is dead. |
HTTP 526 · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| Mockable (mockable.io) www.mockable.io/ Gone — the domain registration (created 2013) expired Aug 10, 2026 and sits on registrar clientHold; DNS records are removed, so every *.mockable.io REST/SOAP mock URL fails to resolve. |
HTTP 530 · failing 8 d ⚰️ | 0% | 0% | free alternative → |
| QuickMocker quickmocker.com/ Website gone — the domain no longer resolves (no DNS address records; only mail forwarding remains) and the Wayback Machine's last capture is Dec 2, 2024. |
HTTP 530 · failing 16 d ⚰️ | 0% | 0% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| CrudCrud crudcrud.com/ Free endpoints get 100 requests total (reads count too) and expire after 24 hours; past the cap every request answers HTTP 400. Keeping an endpoint alive is the paid product ($2+). |
UP 200 · 443 ms | 66% | 77.6% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| Mockbin (mockbin.org) mockbin.org/request Kong's classic bin+mock playground is gone — the domain has no DNS address records, and the code was repurposed as Insomnia's mock backend (source-visible, no longer open source). |
HTTP 530 · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| Mockbin by Zuplo (mockbin.io) mockbin.io/ The free successor: single fixed-response bins + request log. Bins are immutable and undeletable, and anyone holding the bin URL can read the full request log — including callers' IP addresses. |
UP 200 · 60 ms | 100% | 100% | free alternative → |
| RequestBin (requestb.in) requestb.in/1abcdef1 Shut down in 2018; the domain now redirects to Pipedream's signup-walled product — every saved requestb.in bin URL answers 403. |
HTTP 403 · failing 16 d ⚰️ | 0% | 0% | free alternative → |
| Hookbin (hookbin.com) hookbin.com/ Connections time out — the site no longer loads and saved bin URLs are dead. |
DOWN timeout after 8000ms · failing 16 d ⚰️ | 0% | 0% | free alternative → |
| Post Test Server V2 (ptsv2.com) ptsv2.com/ Shut down — TLS connections fail; every ptsv2.com/t/... toilet URL in old tutorials is dead. |
HTTP 525 · failing 16 d ⚰️ | 0% | 0% | free alternative → |
| webhook.site webhook.site/ Free bins keep only the last 100 requests and URLs expire after 7 days. |
UP 200 · 975 ms | 100% | 100% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| Apiary mock server (apiary-mock.com) private-anon-8f3c1d-polls.apiary-mock.com/questions Oracle shut Apiary down on Sep 9, 2025 — every apiary-mock.com URL answers 404 “No API found” (the homepage still says “Sign up free”). |
HTTP 404 · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| myjson.com myjson.com/ Gone since 2020 — connections hang; every hosted-JSON URL in old tutorials and Roku feeds is dead. |
DOWN timeout after 8000ms · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| jsonbin.io jsonbin.io/ Alive and solid. Every call needs an account + API key (anonymous create answers 401), the free 10,000 requests are credited once — ever, not per month — and a bin is one opaque blob: no filters, pagination, or per-record CRUD. |
UP 200 · 1321 ms | 100% | 99.5% | free alternative → |
| npoint.io api.npoint.io/features Alive — free, open-source, well-run since 2018. One-way store: API writes are private-beta (owned bins answer 401; PUT/DELETE 500), unclaimed bins are world-writable by anyone with the URL, and a bin is one blob — no filters or per-record CRUD. 100 req/min per IP. |
UP 200 · 157 ms | 97.9% | 98.1% | free alternative → |
| Pantry (getpantry.cloud) getpantry.cloud/ Free JSON storage that's perishable BY DESIGN: you create a pantry ID in the browser first (every API call embeds it), a basket is one JSON blob (POST merges into it — no filters, pagination, or per-record CRUD), and stored data is deleted after a period of inactivity. |
UP 200 · 2059 ms | 100% | 100% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| REST Countries (restcountries.com) restcountries.com/v3.1/all?fields=name,cca2 Retired every legacy version (/v1–/v4) in 2026: those URLs now answer HTTP 200 with an error envelope — res.ok passes, data is null. The current v5 requires an API key (free tier 1,000 req/month). |
HTTP 200 body is the legacy-API deprecation envelope (success:false, data:null) · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| exchangerate.host api.exchangerate.host/latest The once-keyless exchange-rates API now requires an access_key (it moved under apilayer): keyless requests answer HTTP 200 with success:false and no rates — old tutorial curls fail silently. |
HTTP 200 body is a missing_access_key error envelope — keyless access is gone · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| CoinDesk Bitcoin Price Index (api.coindesk.com) api.coindesk.com/v1/bpi/currentprice.json The classic keyless BTC-price API from a decade of crypto tutorials is gone — api.coindesk.com no longer resolves (direct curls fail DNS with NXDOMAIN; checks from Cloudflare's network get HTTP 530), so every v1/bpi/currentprice.json call in those tutorials fails. CoinDesk's current data API lives on a different host (developers.coindesk.com). |
HTTP 530 · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| Frankfurter (frankfurter.dev) api.frankfurter.dev/v1/latest Keyless, open-source ECB daily reference rates — the honest live alternative for current fiat rates. Old api.frankfurter.app URLs redirect to api.frankfurter.dev/v1. |
UP 200 · 10 ms | 100% | 99% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| Quotable (api.quotable.io) api.quotable.io/random The quotes API behind countless random-quote-generator tutorials: its TLS certificate has expired, so every default-config client (fetch, curl, Postman) fails the handshake; checks routed through Cloudflare’s network get HTTP 530 instead. Outage reports on its tracker go back to 2021. |
HTTP 530 · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| Bored API (boredapi.com) www.boredapi.com/api/activity The “I’m bored” activity API is gone — the domain no longer resolves (direct curls fail DNS; checks from Cloudflare’s network get HTTP 530). A community mirror lives at bored-api.appbrewery.com with the same response shape. |
HTTP 530 · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| SWAPI (swapi.dev) swapi.dev/api/people/1/ Community-run Star Wars API with repeated certificate-expiry outages — one took Angular’s own docs example down in April 2025. Read-only (no writes). Static mirror: swapi.info. |
UP 200 · 520 ms | 100% | 99.5% | free alternative → |
| PokéAPI (pokeapi.co) pokeapi.co/api/v2/pokemon/1 Well-run and generally reliable. Read-only (no writes) with a fair-use policy — cache aggressively if you build on it. |
UP 200 · 124 ms | 100% | 100% | free alternative → |
| Numbers API (numbersapi.com) http://numbersapi.com/42 The number-trivia API behind a decade of fact-of-the-day tutorials is gone — every fact URL answers a bare nginx 404, and the domain's TLS certificate now belongs to an unrelated site. It never had official HTTPS, so the http:// URLs in tutorials also break as mixed content when called from an HTTPS page. |
HTTP 404 · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| jService (jservice.io) jservice.io/api/random The Jeopardy!-questions API behind countless bootcamp trivia projects is dead — the domain still resolves but connections time out on both HTTP and HTTPS. |
DOWN timeout after 8000ms · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| balldontlie (NBA API) www.balldontlie.io/api/v1/players The free NBA-stats API from years of React and data-science tutorials dropped keyless access — the old /api/v1/... URLs answer 404, and the current api.balldontlie.io requires an account API key (keyless requests get 401 Unauthorized). |
HTTP 404 · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| Chuck Norris jokes API (api.icndb.com) http://api.icndb.com/jokes/random The Internet Chuck Norris Database — THE fetch/AJAX example API of countless 2013-2018 JavaScript tutorials — is gone. Worse than gone: api.icndb.com now 301-redirects to an unrelated gambling-spam site, so every /jokes/random call in those tutorials silently fetches spam HTML. |
HTTP 200 redirects to an unrelated gambling-spam site — the joke API is gone · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| SWAPI original domain (swapi.co) swapi.co/api/people/1/ The ORIGINAL Star Wars API domain (shut down around 2020, succeeded by swapi.dev). Every swapi.co URL in older tutorials now redirects to Pipedream's SWAPI integration marketing page — HTML, not JSON, so res.json() throws. |
HTTP 200 redirects to a Pipedream marketing page — no API data · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| Forismatic quotes API http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en The quotes API behind a generation of jQuery-era random-quote tutorials is dead — connections to api.forismatic.com time out on both HTTP and HTTPS (and it never had working CORS-friendly HTTPS to begin with). |
DOWN timeout after 8000ms · failing 12 d ⚰️ | 0% | 0% | free alternative → |
| type.fit quotes API type.fit/api/quotes The quotes API behind the classic freeCodeCamp-style random-quote-generator tutorials still answers — but the array now contains only FIVE quotes total, so every tutorial that picks a random index from a once-large dataset shows the same handful forever (breakage threads on the freeCodeCamp forum go back to 2023). |
UP 200 · 79 ms | 100% | 100% | free alternative → |
| Open Notify ISS API (open-notify.org) http://api.open-notify.org/astros.json The ISS-location/astronauts API from countless Python-requests tutorials still answers — but over plain HTTP only: HTTPS connections fail outright, so any fetch() from an HTTPS-served page dies as mixed content (server-side callers are fine). |
UP 200 · 7402 ms | 75% | 86.6% | free alternative → |
| Rick and Morty API (rickandmortyapi.com) rickandmortyapi.com/api/character/1 Community-run and well-kept — the fetch-and-render staple of modern React tutorials, with REST and GraphQL, keyless, CORS open. Strictly read-only though: there are no write endpoints at all (POST answers 404), so it can't back any tutorial that saves anything. |
UP 200 · 35 ms | 100% | 100% | free alternative → |
| Dog CEO API (dog.ceo) dog.ceo/api/breeds/image/random Community-run dog-photo API (Stanford Dogs dataset) — keyless, CORS open, reliable. Read-only: it hands out image URLs from a fixed pool; nothing can be created or persisted. |
UP 200 · 416 ms | 100% | 100% | free alternative → |
| catfact.ninja catfact.ninja/fact Keyless cat-facts API behind many fetch tutorials — read-only fixed dataset, CORS open, and rate-limited per IP (responses carry x-ratelimit-limit: 100). |
UP 200 · 253 ms | 100% | 99.1% | free alternative → |
| Advice Slip API (api.adviceslip.com) api.adviceslip.com/advice GET-only advice generator; responses are cached for ~2 seconds (cache-control: max-age=2), so calling it in a quick loop returns the SAME slip every time — the classic “why is my random advice not random” tutorial confusion. No writes. |
UP 200 · 711 ms | 100% | 99.2% | free alternative → |
| Deck of Cards API (deckofcardsapi.com) deckofcardsapi.com/api/deck/new/ Genuinely stateful (rare — credit due): decks persist across calls, keyless, CORS open. But by its own docs a deck untouched for two weeks is thrown away, so any deck_id saved in a tutorial or long-lived app eventually stops resolving. |
UP 200 · 714 ms | 100% | 100% | free alternative → |
| api.chucknorris.io api.chucknorris.io/jokes/random The living successor to the dead icndb.com (which now redirects to gambling spam) — keyless, CORS open, read-only random jokes. Healthy. |
UP 200 · 1249 ms | 100% | 100% | free alternative → |
| ZenQuotes (zenquotes.io) zenquotes.io/api/random The most-recommended replacement for the dead quotable.io — but keyless responses send NO CORS headers (a browser fetch() from another origin fails outright; curl and server-side calls are fine), and it rate-limits hard: a burst of ~5 quick requests already answers 429. |
UP 200 · 1881 ms | 95.7% | 95.7% | free alternative → |
| Agify (api.agify.io) api.agify.io/?name=alice The name→age API of countless intro-to-APIs lessons (with siblings genderize.io and nationalize.io). Keyless calls are tightly capped per IP — live responses carry x-rate-limit-limit: 25 — so a classroom, CI runner, or shared cloud egress burns the quota almost immediately (429 past it). |
UP 200 · 597 ms | 100% | 100% | free alternative → |
| Official Joke API (official-joke-api.appspot.com) official-joke-api.appspot.com/random_joke Community joke API on Google App Engine, big in bootcamp fetch exercises — keyless and read-only. It's a hobby deployment with no uptime commitment. |
UP 200 · 437 ms | 100% | 100% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| WorldTimeAPI (worldtimeapi.org) worldtimeapi.org/api/timezone/Etc/UTC Sunset in 2026 citing hosting costs — the origin is gone (direct curl gets a connection reset; through its CDN you get HTTP 525, no farewell page). Every /api/timezone and /api/ip URL in a decade of tutorials is dead. |
HTTP 525 · failing 15 d ⚰️ | 0% | 0% | free alternative → |
| timeapi.io timeapi.io/api/time/current/zone?timeZone=Etc/UTC Keyless live wall-clock alternative that still answers — different response shape than WorldTimeAPI (day/hour/minute fields, no unixtime). |
UP 200 · 1451 ms | 100% | 100% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| via.placeholder.com via.placeholder.com/150 Connections hang/time out — tutorial <img> tags stall silently. |
HTTP 525 · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| placehold.it placehold.it/150 Behind a bot challenge — plain GETs and <img> loads get 403. |
UP 200 · 626 ms | 95.7% | 86.8% | free alternative → |
| placekitten.com placekitten.com/200/300 Origin down (52x errors) since 2025. RIP the kittens. |
HTTP 521 · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| Unsplash Source (source.unsplash.com) source.unsplash.com/random/300x200 Unsplash's keyless hotlink endpoint — deprecated in the official changelog in 2021, now answering 503 on every URL shape (/random/WxH, /WxH/?keyword, /featured, /user, /collection, /daily). Direct images.unsplash.com CDN links and the keyed official API still work. |
HTTP 503 · failing 6 d | 0% | 0% | free alternative → |
| placeimg.com placeimg.com/240/180/any Shut down in 2022; domain no longer resolves to a working service. |
HTTP 530 · failing 17 d ⚰️ | 0% | 0% | free alternative → |
| lorempixel.com http://lorempixel.com/400/200 Every path — categories, grayscale, even the homepage — answers HTTP 429 with a hosting “Site Unavailable” page. Not a rate limit you can wait out. |
UP 202 · 384 ms | 95.7% | 94.4% | free alternative → |
| placehold.co placehold.co/150 |
UP 200 · 40 ms | 100% | 100% | free alternative → |
| dummyimage.com dummyimage.com/300 |
UP 200 · 27 ms | 100% | 100% | free alternative → |
| Lorem Picsum (picsum.photos) picsum.photos/200 |
UP 200 · 263 ms | 100% | 100% | free alternative → |
| LoremFlickr loremflickr.com/320/240 |
UP 200 · 1011 ms | 59.6% | 82.8% | free alternative → |
| Service | Now | OK 24h | OK 7d | Mockbird |
|---|---|---|---|---|
| UI Avatars (ui-avatars.com) ui-avatars.com/api/?name=John+Doe Keyless initials-avatar generator — the de-facto standard; Mockbird's /avatar endpoint accepts its exact params. |
UP 200 · 43 ms | 100% | 100% | free alternative → |
| Pravatar (i.pravatar.cc) i.pravatar.cc/150 CC0 real-photo avatars from a fixed pool of exactly 70 photos (?img=71 is a 404; max size 1000); the same ?u= id always maps to the same photo, but distinct ids beyond the pool share faces. |
UP 200 · 138 ms | 100% | 100% | free alternative → |
| DiceBear (api.dicebear.com) api.dicebear.com/9.x/initials/svg?seed=Jane Current API is healthy — but the old avatars.dicebear.com host answers HTTP 410 Gone, so every pre-2023 tutorial URL is dead (the API moved and now needs a style + version in the path). |
UP 200 · 397 ms | 100% | 100% | free alternative → |
| RoboHash (robohash.org) robohash.org/mockbird.png?size=100x100 Generated robot/monster avatars from any string — keyless and fun, though images are heavyweight PNGs rendered per request. |
UP 200 · 34 ms | 100% | 100% | free alternative → |
| Adorable Avatars (api.adorable.io) api.adorable.io/avatars/150/test.png Dead: the once-popular initials/face API shut down (2019-2020); the domain now hosts an unrelated web-design agency, and every api.adorable.io/avatars/... URL from old tutorials 301-redirects there. |
HTTP 200 the API is gone — avatar URLs redirect to an unrelated web-design agency site that now owns the domain · failing 11 d ⚰️ | 0% | 0% | free alternative → |
OK = the service answered a plain, keyless GET with HTTP 2xx/3xx within 8s, from Cloudflare's network. That is deliberately the tutorial-code experience: no API keys, no browser cookies, no retries. A service can be "up" for authenticated users while failing here (ReqRes) or serve humans while blocking scripts (placehold.it) — the notes say so. Results are logged verbatim; the OK-rates are computed from the raw checks, which you can pull from /status.json (CORS on).
Bias disclosure: this page is run by Mockbird, a free hosted mock-API service — the "free alternative" links point at our own honest migration guides, which also say when the incumbent is the better tool. If one of these services is down and you just need a working endpoint: curl https://mockbird.mockbird.workers.dev/m/demo/products works with no signup, and one click creates your own.