place.photo

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.

Example URL: place.photo/woman/20/glasses/512
AI-generated portrait of a woman around 20 with long wavy blonde hair and black glasses, smiling

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

AI-generated portrait of a woman AI-generated portrait of a woman
AI-generated portrait of a bald man around 601024 × 400
place.photo/1024x400Any width and height up to 1024, framed on the face. No gender given: men and women from 20 to 90, evenly mixed.
AI-generated portrait of a bald man around 40 with glasses and a suit jacket, smiling512 × 512
place.photo/man/bald/512Words before the size say who you get: a bald man.
AI-generated portrait of a woman around 60 with short brown hair and glasses256 × 256
place.photo/woman/60/glasses/256A woman around 60 with glasses.
AI-generated portrait of a woman around 30 with long curly red hair, glasses and a suit jacket, smiling300 × 400
place.photo/woman/red/curly/300x400Hair colour and style.
AI-generated portrait of a woman around 40 with short brown hair, smiling256 × 256
place.photo/woman/30-50/256An age range: any woman from 30 to 50.
AI-generated portrait of a bald man around 40 with a beard and a suit jacket128 × 128
place.photo/man/35/beard/128A number is the age, to the nearest ten: 35 is 40.
AI-generated portrait of a man around 70 with long blonde hair, a beard and a suit jacket320 × 240
place.photo/man/70/business/320x240Clothing: /business or /casual.
AI-generated portrait of a woman around 40 with long brown hair, smiling/48AI-generated portrait of a woman around 40 with long brown hair, smiling/96
AI-generated portrait of a woman around 40 with long brown hair, smiling/160AI-generated portrait of a woman around 40 with long brown hair, smiling/320x180
place.photo/woman/40/smiling/48The 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.
AI-generated portrait of a woman around 20 with long curly blonde hair, smiling256 × 256
place.photo/woman/transparent/256A transparent WebP, cut out around the person, ready for your own colours.
AI-generated portrait of a man around 60 with short white hair, a beard and a suit jackets1AI-generated portrait of a woman around 40 with long brown hair and a suit jackets2AI-generated portrait of a man around 50 with short curly blonde hair, glasses and a suit jackets3AI-generated portrait of a woman around 50 with long blonde hair and a suit jacket, smilings4AI-generated portrait of a man around 70 with short white hair and a suit jackets5s6 …
place.photo/business/40-70/s1/96Seeds: /s1, /s2, /s3 … give different people.
AI-generated portrait of a woman around 40 with long curly black hair and glasses, smilingaliceAI-generated portrait of a man around 40 with short curly black hair and glasses, smilingbobAI-generated portrait of a woman around 90 with short curly grey hair and a suit jacketchen
place.photo/seed-alice/64One stable person per word: an avatar for each user id.

Reference

Every tag, age and size

A URL always ends with the size, like /256 or /400x300. Every tag before it is optional and can go in any order.

Gender
man womanNone given: an even mix. The first one wins.
Age
20 30 40 50 60 70 80 90 30-50Any other number rounds to the nearest ten (ties go up), kept within 20 to 90. A range like 30-50 takes any age from 30 to 50.
Hair colour
black brown blonde red grey white
Hair
bald short long curly
Face
glasses beard smiling neutral
Clothing
business casual
Seed
s1 seed-alices1, s2 … pick different people in order; seed- plus any word (letters, digits, -, _, up to 64) gives one stable person per word.
Background
transparentA cut-out WebP with an alpha channel. Without it, the image's own studio backdrop.
Size
512 512x300Always the last part. Each side 1 to 1024.
Synonyms
male men guyman female women ladywoman graygrey blondblonde ginger redheadred smile happysmiling seriousneutral beardedbeard spectacles eyeglassesglasses formal suit officebusiness informalcasual

When nothing matches every tag

You still get the closest person. Tags are dropped one at a time in a fixed order: clothing first, then face tags (smiling, neutral, glasses, beard), 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 names what was left out, for example X-Dropped: glasses, age.

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">

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.

  1. Copy the image URL

    Right-click the image and choose Copy image address, for example https://place.photo/man/40/256.

  2. Send it to us

    Email report@place.photo with the URL and what is wrong. No account, no form.

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

A person from the pool

Tags

Open the image