placekitten is down โ€” alternatives for every placekitten URL (actual cats included)

For over a decade, placekitten.com/300/200 was the charming way to fill a layout: a kitten photo at any size you asked for. It's baked into CSS course exercises, README screenshots, Stack Overflow answers, and thousands of starter templates. And it's gone:

curl -si https://placekitten.com/300/200 | head -1
# HTTP/2 521          โ† Cloudflare: "origin web server is down"

curl -si https://placekitten.com/g/300/200 | head -1
# HTTP/2 521          โ† grayscale endpoint, same story

Verified by direct request on September 6, 2026 โ€” and Mockbird checks it every hour on the placekitten live-status page, so if it ever comes back, that page will say so before this one does. Every <img src="https://placekitten.com/โ€ฆ"> in your codebase currently renders a broken-image icon.

If you want actual cat photos

Being honest first: Mockbird does not serve kittens. If the whole point was the cat, use one of these โ€” all verified alive September 6, 2026 (a plain GET answers 2xx/3xx with a real JPEG):

ServiceURL shapeNotes
placecats.complacecats.com/300/200The spiritual successor โ€” same path shape as placekitten, including /g/300/200 for grayscale. Drop-in: replace the hostname, done.
loremflickr.comloremflickr.com/300/200/kittenReal Flickr photos by tag โ€” kitten, cat, or anything else. Redirects (302) to a cached JPEG.
placebear.complacebear.com/300/200Bears. Same path shape. Still up.
place.dogplace.dog/300/200Dogs. Same path shape. Still up.
<!-- the one-word fix if you just want your kittens back -->
<img src="https://placecats.com/300/200">

If what you actually needed was "an image at that size, reliably"

Most placekitten URLs weren't really about cats โ€” they were about filling an image slot while building a UI. For that job, a random photo host is the wrong tool twice over: it's a third-party dependency that can die (exhibit A: this page), and the bytes change between requests, which makes screenshot tests flake.

Mockbird serves deterministic SVG placeholders with the same slash-path shape placekitten used, so the swap is mechanical:

<img src="https://mockbird.mockbird.workers.dev/m/demo/img/300/200">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/300/200?text=meow&seed=kitten">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/128?round=1&text=๐Ÿฑ">

Rendered live from the API as you read this: 300ร—200 placeholder placeholder labeled meow round cat-emoji avatar

No signup, no key, CORS *, cached a day, any size 1โ€“2000 px. Translation table:

placekitten URLMockbird equivalent
placekitten.com/300/200โ€ฆ/m/demo/img/300/200 โ€” identical path shape; /img/300x200 and square /img/300 work too
placekitten.com/g/300/200 (grayscale)โ€ฆ/m/demo/img/300/200?bg=9ca3af&fg=1f2937 โ€” pick your own grays
cache-busting "different kitten each time"?seed=anything โ€” each seed picks a different (stable) palette color; same seed = same bytes forever
(no equivalent)?text=, ?bg=/?fg= hex colors, ?round=1 circle avatars

The reason it lives under /m/demo/

Mockbird is a hosted mock REST API โ€” you describe resources (or import an OpenAPI spec / db.json / CSV) and get a live fake backend at a URL. The placeholder endpoint exists so that seeded fake data ships with images that render: every seeded image and avatar field already points at the project's own /img:

curl -s -X POST https://mockbird.mockbird.workers.dev/api/projects \
  -H 'content-type: application/json' -d '{"preset":"ecommerce"}'
# โ†’ 30 fake products whose image URLs work, users with initial-avatars,
#   full CRUD, filters, OpenAPI export โ€” one origin, one curl, no signup

Prefer clicking: create the same project in one click. So if you reached this page because a mock product grid full of placekitten URLs went blank โ€” the fix isn't just swapping the image host, it's letting the fake backend and its fake images live at the same base URL, where an image-host obituary can never take out your demo again.

Honest comparison

placecats / placebear / place.dogLoremFlickrMockbird /img
Actual animal photosโœ… (the point)โœ… any tagโ€” (SVG rectangles/circles)
Deterministic bytes (same URL โ†’ same image)variesโŒ random per cacheโœ… always
Custom text / colors / avatarsโ€”โ€”โœ…
Same origin as your mock API dataโ€”โ€”โœ… seeded data pre-wired
FormatsJPEGJPEGSVG + PNG (.png/.jpg suffix or ?format=png)

Written by the Mockbird maker โ€” bias disclosed. If you want the cat, use placecats.com โ€” it exists precisely to be the placekitten drop-in and does that one job well. Use Mockbird's /img when the image is standing in for real product photos or avatars in a UI you're building against mock data โ€” deterministic bytes, no third-party host, and the rest of the fake backend lives at the same URL. Statuses above verified by direct request on September 6, 2026; placekitten itself is tracked hourly.

FAQ

Is placekitten.com coming back? Unknown. Its DNS still resolves and Cloudflare still fronts it, but the origin has been answering 521 (origin down) on every path we check. The live status page re-checks every hour.

My tests assert on image bytes/snapshots โ€” what should I use? Exactly the case for deterministic placeholders: a Mockbird /img URL always returns identical bytes, so screenshot diffs can't flake because a different kitten loaded. See deterministic test data.

Do I need an account? No โ€” /m/demo/img/โ€ฆ works bare (shared demo project, 50,000 req/day quota). One curl creates your own anonymous project with its own /img and a 10,000/day quota.

Full parameter reference in the docs. Related: free placeholder image API (all the dead classics) ยท picsum.photos alternative ยท lorempixel / placeimg alternative ยท source.unsplash.com alternative ยท avatar placeholder API ยท fake ecommerce API. Create your API โ†’