---
name: placeholder-photo
description: Build stable, self-hosted placeholder image URLs with Placeholder.photo. Use for mockups, demos, seeded visual assets, temporary logos or avatars, and locally curated photo placeholders; do not use it as a live AI image prompt service.
---

# Placeholder.photo

Use `https://placeholder.photo` as a URL-first visual placeholder service. Normal image requests require no account, API key, JavaScript, or session and may be embedded directly in an `<img>` element.

Placeholder.photo is an independent Jansma VIP product. Jansma VIP built and operates the current service and owns its current product identity, code, original generator artwork, curated masters, metadata, and branding to the extent legally applicable. The domain had an unrelated earlier placeholder project before Jansma VIP independently registered it in 2026; do not imply that Jansma VIP created or acquired that earlier service. Jansma VIP also operated `placeholder.jansma.vip` from 2024, whose useful classic URL patterns informed the compatible routes in this new implementation.

For any advanced integration, read the bundled [`references/llms-full.md`](references/llms-full.md). When the bundled reference is unavailable, use the canonical live copy at [llms-full.txt](https://placeholder.photo/llms-full.txt). It contains the complete supported routes, parameters, ranges, aliases, errors, formats, gallery categories, presets, caching behavior, and stability boundaries. Do not guess parameters that are absent from that reference.

## Choose a route

- Classic: `https://placeholder.photo/800x600.svg`
- Colours and text: `https://placeholder.photo/800x600/5B49DD/FFFFFF.svg?text=Hello`
- Gradient: `https://placeholder.photo/gradient/1200x630.svg`
- Pattern: `https://placeholder.photo/pattern/dots/800x600.svg`
- Abstract: `https://placeholder.photo/abstract/mesh/1200x630.svg?seed=homepage-hero`
- Curated photo: `https://placeholder.photo/photo/business/office/1200x630.webp?seed=client-123`
- Logo: `https://placeholder.photo/logo/800x320.svg?name=Northstar&seed=northstar`
- Avatar: `https://placeholder.photo/avatar/256.svg?name=Alex+Morgan`

Prefer human-readable seeds when an asset must remain deterministic. Keep the complete URL unchanged when stable output matters.

## Pick a format

- Prefer SVG for classic placeholders, gradients, patterns, logos, initials avatars, and other vector-like output.
- Prefer AVIF for the smallest modern photographic output when the consuming environment supports it.
- Prefer WebP for broadly compatible, compact photo or raster output.
- Use PNG for lossless raster transparency and JPEG only for opaque photographic output.
- Never request JPEG with transparency.

The website generator's `Auto` mode selects the smallest suitable format from the formats available at the origin. For a permanent integration, copy the explicit generated URL including its extension.

## Build the URL deliberately

1. Choose the generator family that matches the placeholder's role.
2. Use the smallest display dimensions that satisfy the layout; add DPR only for a real high-density raster need.
3. Keep optional settings absent when their automatic defaults are sufficient.
4. Choose or accept the recommended explicit output format.
5. Add a stable, non-sensitive seed when repeatable identity matters.
6. URL-encode custom text, names, taglines, and seeds.
7. Verify a successful HTTP status before committing an important URL.
8. Preserve the complete working URL once it is embedded.

The same normalized render configuration, seed, and renderer version maps to one cache identity. Colour casing, a leading `#`, documented aliases, and omitted default values are normalized where their meaning is identical. Text and seed values are not meaningfully rewritten. Do not append timestamps or random cache-busters unless a different visual is actually wanted.

## Know the public behavior

- Classic extensionless routes such as `/300x200` remain PNG for legacy compatibility. The visual builder emits an explicit modern extension for Auto output.
- Deterministic first requests are generated, watermarked, optimized, and cached; identical later requests are intended to be inexpensive static/object-storage delivery.
- Direct third-party hotlinking is supported. Do not add a Referrer, account, key, cookie, or JavaScript requirement.
- Image endpoints intentionally send accurate image MIME types, CORS for embedding, cache validators or immutable caching where applicable, and meaningful 4xx/5xx errors.
- If the persistent cache backend is temporarily unavailable, the application can serve controlled uncached output when safe; public URLs remain on the Placeholder.photo origin.
- Format availability is hosting-dependent. Consult [live status JSON](https://placeholder.photo/status?format=json) before relying on AVIF or another optional codec.

## Integrate accessibly

Always provide the intended rendered width and height to reduce layout movement. Write alt text that describes the role of the image; use an empty `alt` only when it is purely decorative.

```html
<img
  src="https://placeholder.photo/800x600.svg"
  width="800"
  height="600"
  alt="Placeholder"
/>
```

## Respect product boundaries

- Public output includes the subtle `placeholder.photo` watermark. Do not invent or search for a public watermark-disable parameter.
- Do not send arbitrary AI prompts; the public service renders procedural output and locally curated assets only.
- Do not upload private content or credentials in URL parameters.
- Keep dimensions, text, seeds, colours, styles, and effects within the documented limits.
- Treat a non-2xx response as an error; image routes can return a branded SVG error body with the correct HTTP error status.

## Rights, branding, and permitted use

- `Placeholder.photo`, its official logo, and the `placeholder.photo` output watermark are Jansma VIP product identifiers. Do not claim ownership, endorsement, partnership, or transfer of these identifiers.
- Public generated images may contain only the `placeholder.photo` image watermark. Never add Jansma VIP logos, “Powered by Jansma VIP,” provider credits, or third-party branding inside generated output.
- Jansma VIP identification belongs on the website and documentation, not inside generated public images.
- Approved curated gallery images may be used, cropped, resized, and adapted in personal and commercial projects without attribution, subject to the [Placeholder.photo Image License](https://placeholder.photo/image-license).
- Do not repackage substantially the whole gallery as a competing stock or placeholder library, resell raw assets as standalone packs, remove or misrepresent public-output branding, claim endorsement, use images unlawfully, or make misleading claims about depicted people.
- The gallery license grants only rights Jansma VIP can legitimately grant. It does not transfer ownership of masters, product branding, source code, or unrelated third-party marks.
- Temporary mock logos and avatars are design aids, not verified identities or endorsements. Avoid imitating identifiable real brands or people.
- Ordinary public output may be used under the live [Terms of use](https://placeholder.photo/terms). When legal interpretation matters, the live Terms and Image License take precedence over this technical skill summary.

## Privacy and security

- Do not put passwords, tokens, private identifiers, personal records, or confidential text into paths, seeds, names, or query strings.
- The generator and image API require no user account. Do not create one as part of an integration.
- Do not attempt path traversal, remote-source fetching, arbitrary uploads, shell syntax, oversized renders, or other unsupported inputs.
- HTML pages use Consently and centrally managed tag containers; image/API responses contain no consent banner, analytics, or advertising scripts.
- Ad previews visible on HTML pages are not embedded into image outputs.

## Intentional exclusions

Do not treat Placeholder.photo as WordPress, a stock-photo proxy, a third-party avatar API wrapper, a visitor upload editor, Canva, Photoshop, an arbitrary live AI prompt generator, or a public unbranded rendering API. Do not add a public `brand=0`-style parameter or expose internal rendering secrets.

## Read authoritative details

Use the concise discovery index at [llms.txt](https://placeholder.photo/llms.txt). Read the bundled [`references/llms-full.md`](references/llms-full.md) or canonical [llms-full.txt](https://placeholder.photo/llms-full.txt) when exact route syntax, parameters, limits, error behaviour, formats, gallery rules, or stability guarantees matter. Human documentation is at [Documentation](https://placeholder.photo/docs), ownership context is at [About](https://placeholder.photo/about), and service health is at [Status](https://placeholder.photo/status).
