# Placeholder
> A placeholder image generator. Put a size in the URL and get an image back.
> No account, no upload, no tracking. MIT licensed.
Base URL: https://placeholder.fugte.com
Source: https://github.com/Made4Uo/placeholder
## The one thing to know
https://placeholder.fugte.com/600x400
That returns a 600 by 400 placeholder image, as SVG. Use it directly in an
`
` tag. Everything else on this page is optional.
## Sizes
https://placeholder.fugte.com/600x400 an explicit size
https://placeholder.fugte.com/600 a square
https://placeholder.fugte.com/16:9?w=800 a ratio, scaled to a width (returns 800x450)
https://placeholder.fugte.com/16:9?h=450 a ratio, scaled from a height
https://placeholder.fugte.com/16:9 a ratio with no width given, defaults to 1200 wide
https://placeholder.fugte.com/600x400.png the format as a file extension
Sizes are capped at 5000px per side. Raster output is capped at 4 million
pixels after any scaling. PNG and WebP renders are rate limited per address
(HTTP 429 with Retry-After); SVG, the default, is not.
## Parameters
All optional, all query parameters.
text, t The caption. Default is the size, e.g. "600x400".
\n starts a new line, up to 8. text= on its own is blank.
bg Background. Hex with or without the #, a colour name, or
"transparent". Two to six comma-separated colours make a
gradient. Default e2e8f0.
gradient Gradient direction: degrees (90), a keyword (to-right,
to-bottom-left), or "radial". Default to-bottom. Needs two
or more colours in bg.
color, fg Text and icon colour. Default is chosen automatically to
clear WCAG AA against the background.
icon Any Lucide icon name, e.g. shopping-cart. 2077 available,
listed at https://placeholder.fugte.com/icons.json
iconsize, is Icon size in pixels, or a percentage of the shorter side
(40%). Capped at the shorter side. Default is 30% of it.
type A preset: image, avatar, card, product, video, text.
An icon plus behaviour, e.g. avatar rounds itself.
radius, r Corner radius in pixels, a percentage (50%), or "full".
border, b "2", "2,cbd5e1", or a bare colour for a 1px rule.
opacity, o 0 to 100.
blur 0 to 100. Applies to the caption and icon, not the plate.
font sans, serif, mono, or a bundled family:
inter, lato, montserrat, noto-sans, open-sans, oswald, poppins, pt-sans, raleway, roboto, source-sans, lora, playfair, jetbrains-mono.
Any other family works in SVG if the viewer has it.
fs, fontsize Caption size in pixels. Default is fitted to the box.
fw, weight 100 to 900. Default 600.
format, f svg, png or webp. Default svg.
scale, dpr 1 to 4. Raster output only.
q, quality 1 to 100. WebP only.
Colour names use the Tailwind 500 scale rather than the CSS one, because CSS
"red" is #ff0000 and that is not a colour anyone wants behind a caption:
transparent, white, black, slate, gray, grey, zinc, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, navy, brown, silver, light, dark.
## Worked examples
https://placeholder.fugte.com/600x400
https://placeholder.fugte.com/600x400?text=Hero+image
https://placeholder.fugte.com/600x400?bg=0c6fd0&color=ffffff
https://placeholder.fugte.com/600x400?bg=0c6fd0,6c5ce7&gradient=to-right
https://placeholder.fugte.com/600x400?bg=6c5ce7,0f172a&gradient=radial
https://placeholder.fugte.com/600x400?bg=0c6fd0,transparent
https://placeholder.fugte.com/16:9?w=800&bg=0f172a&type=video
https://placeholder.fugte.com/160?type=avatar&bg=6c5ce7
https://placeholder.fugte.com/400x400?icon=shopping-cart&bg=0c6fd0
https://placeholder.fugte.com/400x400?icon=shopping-cart&iconsize=70%
https://placeholder.fugte.com/600x400?radius=24&border=2,cbd5e1
https://placeholder.fugte.com/600x400?bg=0c6fd0&blur=6&text=Loading
https://placeholder.fugte.com/600x400?format=png&scale=2
## Other endpoints
https://placeholder.fugte.com/ the playground: every parameter, wired up live
https://placeholder.fugte.com/icons.json every icon name, as JSON
https://placeholder.fugte.com/?u= opens the playground with that URL loaded
## Notes
SVG is the default. It is a few hundred bytes, stays sharp at any zoom, and
needs no pixel work. Ask for PNG or WebP when you need real pixels.
Every URL is immutable: the same URL returns the same bytes and is cached for
a year. Change a parameter to get a different image.
CORS is open and Cross-Origin-Resource-Policy is set, so these can be drawn
into a