A local, self-hosted placeholder image service compatible with placehold.co URL patterns.
Specify width x height — height is optional (defaults to square).
Min: 10x10 — Max: 4000x4000
Append a format as a path segment or file extension. Default is SVG.
Supported: svg png jpeg gif webp avif
Set background and text colours using hex values or CSS colour names.
Use the ?text= query param. Spaces: +, newlines: \n.
Use ?font=roboto. Available: lato, lora, montserrat, noto-sans, open-sans, oswald, playfair-display, poppins, pt-sans, raleway, roboto, source-sans-pro.
Append @2x or @3x for higher-density raster images.
| URL | Description |
|---|---|
| /600x400 | 600×400 SVG |
| /250 | 250×250 square SVG |
| /600x400.png | 600×400 PNG |
| /600x400/EEE/31343C | Custom colours |
| /600x400/orange/white/png | CSS colours + PNG |
| /600x400?text=Hello+World | Custom text |
| /600x400?text=Line+1\nLine+2 | Multi-line text |
| /800@2x.png | Retina 2x PNG |
Prefix any size URL with /video/ to get a placeholder video instead of an image. Requires ffmpeg installed on the server.
The same size, colour, text, and font parameters apply. Videos loop a single still frame for the specified duration.
Supported formats: mp4 (default) webm
| Parameter | Default | Description |
|---|---|---|
?duration= | 3 | Length in seconds (1–30) |
?text= | width × height | Label text |
?font= | lato | Same font keys as images |
| URL | Description |
|---|---|
| /video/640x360 | 640×360 MP4, 3 s |
| /video/640x360.webm | 640×360 WebM, 3 s |
| /video/640x360/1a1a2e/e94560 | Custom colours |
| /video/640x360?duration=5&text=Loading... | 5 s, custom text |
| /video/400x400/steelblue/white/webm | CSS colours, WebM |