Free placeholder image API โ€” the classic hosts are dead, here's one that isn't

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:

HostStatus 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) โ€” dedicated placekitten guide (incl. where to get actual cats)
placeimg.comโŒ dead โ€” shut down, domain no longer resolves โ€” replacement table
lorempixel.comโŒ dead โ€” HTTP 429 "Site Unavailable" on every path (verified Sep 2026) โ€” dedicated lorempixel guide (category-photo replacements incl.)
picsum.photosusually up, but has real outages (hard down Aug 30โ€“31, 2026 โ€” see the picsum-alternative guide) โ€” live status
placehold.co, dummyimage.com, loremflickr.comusually up โ€” live status: placehold.co ยท dummyimage ยท loremflickr
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.

The 10-second fix

<img src="https://mockbird.mockbird.workers.dev/m/demo/img/300x200">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/128?round=1&text=AL&seed=ada">   <!-- avatar -->
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/640x360?text=Hero+banner&bg=1e3a8a">

Those three, rendered live right here (fetched from the API as you read this): 300ร—200 placeholder Round avatar with initials AL Hero banner placeholder

Build your URL โ€” live playground

Live placeholder preview

The preview above is the real API โ€” every keystroke re-renders from /m/demo/img. Paste the URL into an <img src> and you're done. Want the full builder with ?grayscale, ?blur, PNG output and avatar styles? Open the standalone playground โ†’

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 *.

Parameters

ParamDoesExample
/img/WxHsize (1โ€“2000). /img/300 = square shorthand; picsum.photos-shaped paths work as-is: /img/300/200, /img/seed/abc/300/200/img/640x480, /img/300, /img/300/200
?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=1circle instead of rectangle โ€” avatars?round=1&text=AL
?grayscaledesaturate (picsum-compatible bare flag; ?greyscale works too)/img/400x300?grayscale
?blur=1-10gaussian blur, picsum-compatible (bare ?blur = 5) โ€” test blur-up lazy-load placeholders. Works on SVG and PNG output (PNG capped at 512ร—512)/img/40x30.png?blur=5

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.

The actual point: your mock data ships with images that render

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://mockbird.mockbird.workers.dev/m/demo/products/1?select=name,image'
# {
#   "id": 1,
#   "name": "Thing City Time",
#   "image": "https://mockbird.mockbird.workers.dev/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://mockbird.mockbird.workers.dev/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.

Why same-origin placeholders are worth caring about

Honest comparison

placehold.codummyimagepicsum / loremflickrdicebear / ui-avatarsMockbird /img
Alive (July 2026)โœ…โœ…โœ…โœ…โœ…
FormatsSVG, PNG, JPEG, WebP, AVIFPNG, GIF, JPGJPEG/WebP real photosSVG/PNG avatarsSVG + PNG (.png suffix / ?format=png)
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 more raster formats (JPEG/WebP/AVIF), retina variants, and custom fonts โ€” if you need those, use it, it's excellent (Mockbird covers PNG, at up to 1000ร—1000). 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 (any size up to 2000 px) or PNG (up to 1,000,000 pixels โ€” PNG guide). 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, and the surviving hosts are tracked live (checked every 30 minutes) โ€” the links in the table above always show current reality.

FAQ

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 user API with avatars ยท fake ecommerce API ยท mock API for React ยท free mock API tools compared. Create your API โ†’