lorempixel.com/400/200/sports was the original category placeholder: a real photo, any size, thirteen themed categories, even a text overlay if you asked. It's still pasted all over Bootstrap-era templates, jQuery course exercises, and old Stack Overflow answers. And it has stopped serving images:
curl -si http://lorempixel.com/400/200 | head -1
# HTTP/1.1 429 Too Many Requests โ an HTML "Site Unavailable" page, for everyone
curl -si http://lorempixel.com/400/200/sports | head -1
# HTTP/1.1 429 โ categories too
curl -si http://lorempixel.com/g/400/200 | head -1
# HTTP/1.1 429 โ grayscale too โ even the homepage answers 429
That's not a rate limit you can wait out โ every path, on HTTP and HTTPS, answers the same hosting "Site Unavailable" page. Verified by direct request on September 10, 2026, and Mockbird re-checks it hourly on the lorempixel live-status page. Its sibling placeimg.com is further gone: the domain no longer resolves at all (curl: Could not resolve host โ tracked here). Every <img> pointing at either renders a broken-image icon.
Being honest first: Mockbird does not serve photos. If the point was a real picture of food/sports/cats, these work today โ all verified alive September 10, 2026 with a plain GET returning a real image:
| Service | URL shape | Notes |
|---|---|---|
loremflickr.com | loremflickr.com/400/200/sports | The closest drop-in โ same /W/H/category path shape, but the "category" is any Flickr tag, not a fixed list of 13. Grayscale works too: /g/400/200/sports. |
picsum.photos | picsum.photos/400/200 | Random high-quality photos (no categories). ?grayscale, and /seed/3/400/200 for a photo that never changes โ the job lorempixel's numbered /400/200/cats/3 URLs did. |
placehold.co / dummyimage.com | placehold.co/400x200?text=Hello | Not photos โ generated rectangles with text, like lorempixel's text overlay. Both alive. |
<!-- the smallest fix for category URLs: swap the hostname -->
<img src="https://loremflickr.com/400/200/sports">
| Old URL | Working replacement |
|---|---|
lorempixel.com/400/200 | picsum.photos/400/200 (random photo) ยท โฆ/m/demo/img/400/200 (deterministic SVG) |
lorempixel.com/400/200/sports | loremflickr.com/400/200/sports โ same path shape, tag-based |
lorempixel.com/g/400/200 (grayscale) | picsum.photos/400/200?grayscale ยท loremflickr.com/g/400/200/sports |
lorempixel.com/400/200/cats/3 (image #3, stable) | picsum.photos/seed/3/400/200 โ deterministic photo per seed ยท โฆ/m/demo/img/400/200?seed=3 |
lorempixel.com/400/200/sports/Dummy-Text (text overlay) | โฆ/m/demo/img/400x200?text=Dummy+Text ยท placehold.co/400x200?text=Dummy+Text |
placeimg.com/640/480/any | picsum.photos/640/480 |
placeimg.com/640/480/animals (categories: animals/arch/nature/people/tech) | loremflickr.com/640/480/animals โ richer tags than placeimg's five |
placeimg.com/640/480/nature/grayscale (also /sepia) | picsum.photos/640/480?grayscale; no mainstream host does sepia โ use CSS filter: sepia(1) |
Most lorempixel URLs weren't really about the sports photo โ they were about filling an image slot while building a UI. For that job a random photo host is the wrong tool twice: it's a third-party dependency that can die (this page is exhibit A and B), and the bytes change between requests, which makes screenshot tests flake.
Mockbird serves deterministic SVG placeholders with the same slash-path shape lorempixel used:
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/400/200">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/400/200?text=sports&seed=sports">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/128?round=1&text=PA">
Rendered live from the API as you read this:
No signup, no key, CORS *, cached a day, any size 1โ2000 px, same URL โ same bytes forever. ?text=, ?bg=/?fg= hex colors, ?seed= stable palette pick, ?round=1 circle avatars. Full reference in the docs.
/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. If you reached this page because an old template's product grid went blank โ the durable 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.
| LoremFlickr | Picsum | Mockbird /img | |
|---|---|---|---|
| Real photos | โ any tag | โ (no categories) | โ (SVG rectangles/circles) |
| Deterministic bytes (same URL โ same image) | โ random per cache | โ
with /seed/โฆ (JPEG re-encode may vary) | โ always |
| Custom text / colors / round avatars | โ | โ | โ |
| Same origin as your mock API data | โ | โ | โ seeded data pre-wired |
| Formats | JPEG | JPEG/WebP | SVG + PNG (.png/.jpg suffix or ?format=png) |
Written by the Mockbird maker โ bias disclosed. If you want the photo, use LoremFlickr for categories or Picsum for pretty randoms โ both do that 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 10, 2026; lorempixel and placeimg are tracked hourly.
Is lorempixel.com coming back? Unknown. The 429 comes with a hosting-provider "Site Unavailable" page rather than the app itself, on every path including the homepage โ it looks suspended, not overloaded. The live status page re-checks every hour and will show a recovery before this page does.
What happened to placeimg.com? It announced its shutdown and went dark in 2022; today the domain doesn't even resolve to a website. Any placeimg.com/W/H/category URL in a tutorial is unfixable except by pointing elsewhere โ see the translation table above.
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 sports photo 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.
Related: free placeholder image API (all the dead classics) ยท picsum.photos alternative ยท placekitten alternative ยท source.unsplash.com alternative ยท avatar placeholder API ยท fake ecommerce API. Create your API โ