Free placeholder photos of people, any size
place.photo is a free placeholder image service for realistic, AI-generated portraits of adults. Write what you need in the URL (gender, age, hair, glasses) and end it with the size: any width and height from 1 to 1024 pixels. No API key, no sign-up.
The URL is the API
One URL, every option
Words between slashes, then the size. That is the whole API.
Every word you add narrows the pick
1024 × 400place.photo/1024x400 Any width and height up to 1024, framed on the face. No gender given: men and women from 20 to 90, evenly mixed.
512 × 512place.photo/man/bald/512 Words before the size say who you get: a bald man.
256 × 256place.photo/woman/60/glasses/256 A woman around 60 with glasses.
300 × 400place.photo/woman/red/curly/300x400 Hair colour and style.
256 × 256place.photo/woman/30-50/256 An age range: any woman from 30 to 50.
128 × 128place.photo/man/35/beard/128 A number is the age, to the nearest ten: 35 is 40.
320 × 240place.photo/man/70/business/320x240 Clothing: /business or /casual.
/48
/96
/160
/320x180place.photo/woman/40/smiling/48 The same person at every size, from a 48 px list row to a header. Every face sits on one guide, eyes at the same height, so swapping avatars never jumps.
256 × 256place.photo/woman/transparent/256 A transparent WebP, cut out around the person, ready for your own colours.
s1
s2
s3
s4
s5s6 …place.photo/business/40-70/s1/96 Seeds: /s1, /s2, /s3 … give different people.
alice
bob
chenplace.photo/seed-alice/64 One stable person per word: an avatar for each user id.Use it
Paste it anywhere an image goes
HTML, CSS, Markdown, React, Figma, a seed file for your test data. Responses allow any origin, so canvases and scripts can read them too.
<img src="https://place.photo/woman/40/smiling/96"
width="96" height="96" alt="Avatar">.avatar {
background: url(https://place.photo/seed-bob/64) center / cover;
}{users.map((u) => (
<img key={u.id} alt=""
src={`https://place.photo/seed-${u.id}/64`} />
))}[
{ "name": "Alice", "avatar": "https://place.photo/seed-alice/64" },
{ "name": "Bob", "avatar": "https://place.photo/seed-bob/64" },
{ "name": "Chen", "avatar": "https://place.photo/seed-chen/64" }
]GET /woman/40/smiling/96 200Response headers
- Content-Type
- image/webp
- Cache-Control
- public, max-age=31536000, immutable
- Access-Control-Allow-Origin
- *
- X-Image-Id
- the picture's id
- X-AI-Generated
- true
- X-Dropped
- glasses only when tags were dropped
FAQ
Questions, answered
Is place.photo free?
Yes. place.photo is free, with no account and no sign-up. Put the URL in an img tag, a CSS background or a design tool, and the image loads.
Do I need an API key?
No. There is no key and no JSON: the URL is the whole API. Responses send Access-Control-Allow-Origin: *, so they also work from scripts and canvases.
What sizes can I get?
Any width and height from 1 to 1024 pixels, every pixel in between. The last part of the URL is the size: /512 for a square or /512x300 for width by height. Every size shows the same head-and-shoulders framing, cut to that ratio, so a 48 px avatar and a 512 px one show the same picture.
Are these real people?
No. Every person on place.photo is AI-generated and does not exist. Each response carries an X-AI-Generated: true header and an IPTC trainedAlgorithmicMedia tag. A generated face can resemble a real person by chance.
What if an image looks like me?
Every face is AI-generated, but by chance one can resemble a real person. Report it with the image URL and it is removed from place.photo.
Can I use the images in commercial projects?
Yes, in designs, prototypes, demos and products, commercial ones included. Every model used to make them is released under Apache 2.0 or MIT. Do not present a face as a real, identified person, for example in fake profiles, reviews or endorsements.
Can I ask for an age range?
Yes. Write two ages with a dash, like /woman/30-50/256, and you get anyone from 30 to 50: the pick spreads over every matching person in that range. The ends can come in either order and round to the nearest ten, kept within 20 to 90. A single age like /60 means around 60.
How do I get the same image every time?
The same URL picks the same image, and responses are cached for a year. Add a seed to choose among the matches: /s1, /s2, /s3 and so on give different people in order, and /seed-anything gives one stable person per word, such as a user id. Size and background do not change the pick, so /man/30/64 and /man/30/512 show the same person. When new images join the pool, an uncached URL can start showing someone else.
Can I get a transparent background?
Yes. Add /transparent anywhere before the size, like /woman/transparent/256, for a WebP with an alpha channel, cut out around the person. Without it, each image comes on its own soft studio backdrop colour.
What happens if no image matches all my tags?
You still get the closest image. Tags are dropped one at a time in a fixed order: clothing first, then face tags, then hair, then the age widens to the nearest band outside the one or range you asked for. Gender is never dropped. The X-Dropped response header lists what was left out, for example X-Dropped: glasses, age.
Report an image
Looks like you? We take it down.
Every face is generated, but by chance one can resemble a real person. If an image looks like you, or someone you represent, or anything else about it is wrong, tell us.
Copy the image URL
Right-click the image and choose Copy image address, for example
https://place.photo/man/40/256.Send it to us
Email report@place.photo with the URL and what is wrong. No account, no form.
It is removed for good
The image leaves place.photo and the seed that made it is never used again, so the face does not come back.
Terms of use
Free to use, with a few rules
Use them freely. Put place.photo images in designs, mockups, prototypes, demos, tests, websites and apps, commercial ones included. No sign-up, no fee, no credit needed (a link back is always welcome).
They are not real people. Every face is AI-generated. Do not present one as a real, identifiable person: no fake profiles, reviews, testimonials or endorsements, and nothing deceptive, defamatory, sexual or in sensitive contexts such as health, crime, politics or religion.
No bulk copying. Do not download the images in bulk, redistribute them as a collection, stock library or dataset, or use them to train AI models. Rate limits apply to every address.
Keep the label. Images carry an AI-generated tag in their metadata and headers. Do not strip it to make an image look like a real photo.
No guarantees. The service is provided as is. Images can change when new ones join the pool, and any image can be removed, for example after a report.