โ† All guides

๐Ÿ“ก Is picsum.photos down right now? We check it (and 37 other classic public mock/placeholder APIs) with a plain GET every 30 minutes โ€” see the live status page or subscribe to its outage Atom feed. This guide was written during a real picsum outage; the status page always shows current reality.

picsum.photos is down โ€” placeholder images that still work

Lorem Picsum is the placeholder service everyone actually likes: real photographs, a lovely URL API (picsum.photos/200/300), seeded determinism, grayscale and blur. It's wired into countless portfolio sites, demo apps, design mockups, tutorials and test fixtures.

Prefer clicking to reading? Build your URL in the live playground โ†’ (every param below, with instant preview).

And right now it's hard down. Starting 21:30 UTC on August 30, 2026 (confirmed by our tracker's consecutive 30-minute checks), every URL pattern fails โ€” verified live while writing this:

curl -s -o /dev/null -w "%{http_code} in %{time_total}s\n" --max-time 12 https://picsum.photos/200/300
# โ†’ 000 in 12.0s        (connection hangs until timeout)

curl -s -o /dev/null -w "%{http_code}\n" https://picsum.photos/seed/abc/200
# โ†’ 503

# /id/237/200/300 โ†’ timeout ยท /v2/list โ†’ timeout
# even the CDN host fastly.picsum.photos โ†’ 503

When a placeholder host dies, the failure is ugly: broken-image icons across your demo, hanging requests that slow the whole page load (a 12-second stall per <img> in this outage), and CI screenshots full of alt text. Here are replacements that work today โ€” including the one this site runs itself.

The 10-second replacement

Mockbird serves deterministic SVG placeholders from its shared demo project โ€” no signup, no key, CORS on. Picsum's URL shapes work as-is (/200/300, /seed/abc/200/300), so the swap is a prefix replace:

# drop-in: replace the picsum host with the demo /img base โ€” paths unchanged
grep -rl 'picsum.photos' src/ | xargs sed -i \
  's#https://picsum.photos#https://mockbird.mockbird.workers.dev/m/demo/img#g'

Or write the URLs directly:

<img src="https://mockbird.mockbird.workers.dev/m/demo/img/200x300">
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/200x300?seed=abc">      <!-- seeded, like /seed/abc/ -->
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/128?round=1&text=AL">   <!-- avatar -->
<img src="https://mockbird.mockbird.workers.dev/m/demo/img/640x360?text=Hero&bg=1e3a8a">

Live, rendered right here: 120x80 placeholder seeded placeholder avatar placeholder custom background placeholder

Any size from 1 to 2000 px, square shorthand (/img/300), served with Cache-Control: public, max-age=86400. And it's genuinely deterministic โ€” the same URL yields byte-identical output, which your snapshot tests will appreciate:

curl -s "https://mockbird.mockbird.workers.dev/m/demo/img/200x300?seed=abc" | md5sum
curl -s "https://mockbird.mockbird.workers.dev/m/demo/img/200x300?seed=abc" | md5sum
# โ†’ identical hashes

Lorem Picsum URL โ†’ Mockbird translation

On picsum.photosOn Mockbird
/200/300 โ€” width/height/m/demo/img/200/300 โ€” same path; /m/demo/img/200x300 works too
/200 โ€” square/m/demo/img/200 โ€” same path
/seed/foo/200/300 โ€” deterministic per seed/m/demo/img/seed/foo/200/300 โ€” same path, deterministic palette pick per seed (?seed=foo also works)
/id/237/200/300 โ€” a specific photono equivalent โ€” there is no photo catalogue here (see below)
?grayscale, ?blur=5same params โ€” ?grayscale (bare flag) and ?blur=1-10 (bare ?blur = 5), on SVG and PNG output alike, deterministic like everything else. Handy for testing blur-up lazy-load placeholders
.jpg / .webp raster output.png and .jpg path suffixes (or ?format=png) return PNG bytes โ€” same layout and determinism as the SVG. No JPEG/WebP encoding; if you specifically need those, placehold.co does JPEG/WebP/AVIF
/v2/list โ€” catalogue JSONthe whole rest of Mockbird โ€” a mock REST API whose seeded records come with image URLs attached
โ€”?text=Hello, ?round=1 avatars, ?bg=/&fg= hex colors โ€” things picsum doesn't do

Why placeholders at your mock API's base URL

Placeholder images are rarely the whole job. Usually you're building a UI against a backend that doesn't exist yet โ€” and the fake products need fake photos, the fake users need fake avatars. Every Mockbird project (created anonymously with one curl) gets its own /img endpoint, and seeded image/avatar fields point at it automatically:

curl -s https://mockbird.mockbird.workers.dev/m/demo/products/1 | python3 -m json.tool
# "image": "https://mockbird.mockbird.workers.dev/m/demo/img/640x480?seed=โ€ฆ"

One base URL for data and images means one thing to swap when the real backend lands, no third-party host in your CI's critical path, and no 12-second image stalls when someone else's service has a bad night. The full placeholder-image guide covers every parameter; this link creates a seeded e-commerce backend โ€” products with working image URLs โ€” in one click, no signup.

Honest comparison โ€” including where picsum wins

picsum.photosloremflickrplacehold.coMockbird /img
Real photographsโœ” (its whole charm)โœ”โœ˜โœ˜ โ€” flat SVG + text
Up right now (verified Aug 31, 2026)โœ˜ โ€” 503/timeoutsโœ”โœ”โœ” (we track them all live)
Deterministic by URLโœ” via /seed/โœ˜ (random per request)โœ”โœ” (byte-identical)
Grayscale / blurโœ”โœ˜โœ˜โœ” โ€” same ?grayscale/?blur params
Raster formatsโœ” jpg/webpโœ”โœ” PNG/JPEG/WebP/AVIFโœ” PNG (.png/.jpg suffix or ?format=png); SVG default
Avatars / initialsโœ˜โœ˜partial (text)โœ” ?round=1&text=AL
Comes with a mock data APIโœ˜โœ˜โœ˜โœ” โ€” same base URL
Signupnonenonenonenone

Written by the Mockbird maker โ€” bias disclosed. When picsum is up, its real photographs look far better than our flat SVGs in any read-only photo grid โ€” use it there, it's a genuinely great service, and it's open source (DMarby/picsum-photos on GitHub) so you can self-host it if your build must never depend on someone else's uptime. LoremFlickr also serves real photos and answered today. DiceBear has far prettier avatar art than our initials-on-a-circle. Outage facts above verified by direct request on August 31, 2026 during the incident; the live status page (checked every 30 minutes) always shows whether they still hold.

Full API reference in the docs. More guides: free placeholder image API ยท lorempixel / placeimg alternative ยท fake e-commerce API ยท testing loading & error states. Create your API โ†’

โšก Skip the terminal: this link creates a live, seeded e-commerce backend (products, orders, customers, reviews) in the dashboard โ€” every product record ships with a working image URL. Real URL, data browser already open, no signup.