An uncomfortable number of the placeholder-image URLs baked into a decade of tutorials, starter templates, and Stack Overflow answers no longer work. Checked live, July 2026:
| Host | Status today |
|---|---|
via.placeholder.com | โ dead โ connection accepted, request hangs, no response |
placehold.it | โ dead for images โ serves a Cloudflare human-verification challenge; an <img> tag can't solve one |
placekitten.com | โ dead โ HTTP 521 (origin down) |
placeimg.com | โ dead โ shut down, connection fails |
placehold.co, dummyimage.com, picsum.photos, loremflickr.com, dicebear, ui-avatars | โ alive and fine โ see the honest comparison below |
If a grey rectangle in your project stopped rendering, that's why. Here's a replacement URL that takes ten seconds โ and if you're mocking an API anyway, a reason the placeholder should live next to your mock data.
<img src="https://HOST/m/demo/img/300x200">
<img src="https://HOST/m/demo/img/128?round=1&text=AL&seed=ada"> <!-- avatar -->
<img src="https://HOST/m/demo/img/640x360?text=Hero+banner&bg=1e3a8a">
No signup, no key. demo is Mockbird's shared public playground project; every Mockbird project (including ones you create anonymously with one curl) gets the same /img endpoint under its own URL. Output is a crisp SVG at any size from 1 to 2000 px, served with Cache-Control: public, max-age=86400 and CORS *.
| Param | Does | Example |
|---|---|---|
/img/WxH | size (1โ2000). /img/300 = square shorthand | /img/640x480, /img/300 |
?text= | label, โค64 chars (default "WรH"). Font auto-scales to fit | ?text=Product+7 |
?bg= / ?fg= | 3- or 6-digit hex, no #. Custom bg alone auto-picks a readable text color | ?bg=1e3a8a&fg=fff |
?seed= | any string โ deterministic palette color (same seed, same color, forever) | ?seed=ada |
?round=1 | circle instead of rectangle โ avatars | ?round=1&text=AL |
Everything is deterministic: the same URL always renders the exact same bytes. That matters for visual-regression tests โ no cache-busting randomness, no flaky screenshot diffs.
Placeholder images are rarely the whole job โ usually you're building a UI against an API that doesn't exist yet, and the fake product objects need fake photos and the fake users need fake avatars. Mockbird is a hosted mock REST API, and its seeded image and avatar fields point at the project's own /img endpoint automatically:
curl 'https://HOST/m/demo/products/1?select=name,image'
# {
# "id": 1,
# "name": "Thing City Time",
# "image": "https://HOST/m/demo/img/640x480?seed=6534"
# }
So one curl creates a project with 30 products whose image URLs already work, and user-type resources seed circular avatars with the person's initials. Your product grid, your account dropdown, your review list โ everything renders on first load, and none of it makes a request to a third-party image service that might be the next via.placeholder.com:
curl -s -X POST https://HOST/api/projects \
-H 'content-type: application/json' -d '{"preset":"ecommerce"}'
# โ { "id": "abc123xyz0", ... } โ full fake store: data + images, one origin
Prefer clicking: create the same project in one click.
/img deliberately stays open, because <img> tags can't send Authorization headers.| placehold.co | dummyimage | picsum / loremflickr | dicebear / ui-avatars | Mockbird /img | |
|---|---|---|---|---|---|
| Alive (July 2026) | โ | โ | โ | โ | โ |
| Formats | SVG, PNG, JPEG, WebP, AVIF | PNG, GIF, JPG | JPEG/WebP real photos | SVG/PNG avatars | SVG only |
| Custom text / colors | โ + custom fonts | โ | โ | initials/art styles | โ text, colors, seed palette |
| Avatars (initials, circle) | โ | โ | โ | โ (their specialty) | โ |
| Real photos | โ | โ | โ | โ | โ |
| Same origin as your mock API | โ | โ | โ | โ | โ โ seeded data pre-wired |
Written by the Mockbird maker โ bias disclosed. Where the survivors genuinely win: placehold.co does raster formats (PNG/JPEG/WebP/AVIF), retina variants, and custom fonts โ if you need a PNG placeholder, use it, it's excellent. picsum.photos and loremflickr serve real photographs, which look far better in a read-only portfolio grid. DiceBear has genuinely charming avatar art styles; ours are plain initials-on-a-circle. Mockbird's /img is SVG-only and capped at 2000 px. Use it when the placeholder should live at the same base URL as the rest of your fake backend โ which, if you're mocking an API at all, is most of the time. Dead-host statuses verified by direct request on July 28, 2026.
Is via.placeholder.com coming back? Unknown โ it has been intermittently down for long stretches and currently doesn't answer requests at all. Treat URLs pointing at it as broken and swap the host.
Do I need to create anything to use the images? No โ /m/demo/img/โฆ works bare. Create your own project (one curl, no signup) if you want your own namespace, your own quota, and seeded data around it.
SVG in an <img> tag โ anything to watch for? It renders in every modern browser exactly like a PNG would. The response carries X-Content-Type-Options: nosniff and a restrictive Content-Security-Policy, and text is XML-escaped โ it's an image, not an injection vector.
Full parameter reference in the docs. More guides: fake ecommerce API ยท mock API for React ยท free mock API tools compared. Create your API โ