Developers

Placeholder service compatibility

Placeholder.photo supports verified legacy URL patterns from several placeholder services. Use direct hostname replacement only for the documented via.placeholder.com subset; use the migration CLI for provider-aware conversions.

Official migration CLI

For projects with multiple files, use the official local CLI. The default command is a dry run; --write changes only verified safe patterns and --check provides a non-writing CI gate.

npx placeholder-photo-migrate .
npx placeholder-photo-migrate . --write
npx placeholder-photo-migrate . --check

Ambiguous findings stay unchanged for manual review. Read the migration CLI guide.

Quick migration

https://placeholder.photo/600/92c952

Only the hostname changes.

Common drop-in patterns

/600Square dimensions — compatible
/300x200Width × height — compatible
/600/92c952Background colour — compatible
/600/92c952/ffffffBackground and text colour — compatible
?text=Hello+WorldCustom URL-encoded text — compatible
.png .jpg .jpeg .gif .webpExplicit raster formats — compatible when the live format is available
3- or 6-digit hexUppercase and lowercase accepted and normalized
trailing slashAccepted

Examples

OLD  https://via.placeholder.com/300x200/000000/ffffff?text=Hello+World
NEW https://placeholder.photo/300x200/000000/ffffff?text=Hello+World

OLD https://via.placeholder.com/300x150/a51c30/ffffff.png
NEW https://placeholder.photo/300x150/a51c30/ffffff.png

Intentional differences

Placeholder.photo is an independent implementation, not a copy of the former service. Exact font metrics and antialiasing may differ, and every normal public image carries the subtle placeholder.photo watermark. Invalid or unsafe values receive a bounded branded error response. GIF output is a static image rather than an animation.

Stability and storage

Legacy paths enter the same normalized, validated and versioned rendering pipeline as modern URLs. They use the same deterministic cache, security limits and long-term compatibility policy. The official API identity remains https://placeholder.photo/… regardless of the interchangeable storage backend used for generated derivatives.

placeholder.jansma.vip · 2024
Jansma VIP

Placeholder Image Generator

Create customizable placeholder images for your projects with ease.

Basic Placeholder: https://placeholder.photo/300x200 Current Placeholder.photo output in the former pixel style
Dynamic Generator
Width (px):300
Height (px):200
Custom Text:Optional
Recreated interface · current renderer and watermark rules
A little placeholder history

Same useful idea.
A much bigger toolkit.

Jansma VIP ran a compact generator at placeholder.jansma.vip from 2024. It handled the classic size, colour and text URLs that now remain supported by Placeholder.photo.

  1. 2022An unrelated earlier developer project used the Placeholder.photo domain.
  2. 2024Jansma VIP launched its own small generator at placeholder.jansma.vip.
  3. 2026The independently built Placeholder.photo platform brought Classic, procedural art, photos, logos and avatars together.

This is an independent new implementation—not a claim of ownership over the earlier 2022 project. The nostalgic panel is a faithful visual nod, rebuilt with today’s Placeholder.photo URLs.