Lorem Picsum Generator
Note: These URLs point at a third-party server and are for prototyping only. Replace them with your own assets before a page goes live — a production layout that depends on picsum.photos breaks the moment that host is unreachable.
The part that catches people out is the seed. A plain size URL returns a different random photo on every request, including every reload during development, so a component that renders three of them will shuffle on each refresh and screenshots will never match. Adding a seed makes the choice deterministic — the same seed always resolves to the same photo — which is what you want in a demo, a Storybook entry or anything you intend to screenshot. Use a specific photo ID instead when you have found an image that works and want exactly that one.
The generator also writes a responsive srcset, because the placeholder stage is the right time to get that markup correct rather than adding it later. The widths it emits are the ones the service will actually deliver, so the browser's selection logic behaves the same as it will with your production images.
One thing to be clear about: these URLs point at someone else's server. They are a development convenience, not something to ship. A production page pointing at picsum.photos is one outage away from a broken layout, and the images are not licensed for you to present as your own content.
Frequently Asked Questions
Why does the image change every time I reload?
Because a URL with only dimensions requests a random photo, and random means per request. Add a seed or a specific image ID and the same photo comes back every time — that is the difference between a placeholder and a stable one.
Can I use these images on a live site?
No. The service is intended for prototyping, the photos are hosted by a third party you have no agreement with, and a page depending on them breaks entirely if that host goes down or rate-limits your visitors. Swap them for your own assets before launch.
What is the difference between the seed and the ID?
The ID selects one specific photo from the collection — the same picture at any size you request. The seed is hashed into a photo choice, so it also returns a consistent image, but which one is not something you choose. Use an ID when you have found the right photo, and a seed when you just need consistency.
Do the blur and grayscale options cost anything in load time?
They are applied server-side, so the transformed image arrives already processed and there is no client work. A heavily blurred image also compresses far better, which is why a blurred placeholder is a reasonable stand-in for a low-quality image placeholder while you are building out a lazy-loading pattern.

