Free developer tools from placeholder.com
Placeholder everything.
Ship none of it.
Images, avatars, photos, QR codes, barcodes and brand kits. People, a mock REST API, a whole fictional company and AI test fixtures with answer keys. Filler text, safe test values, dummy files and HTTP test endpoints. Free, no sign-up, no API key. The same URL always gives the same result. And a CI check that stops any of it reaching production.
/240x160/ecf34d/1c1d19?text=… 
/avatar/Anna%20Svensson.png /photo/coffee/240x160 /qr/https%3A%2F%2Ftools…
The tools
-
via.placeholder.com
Images
Grey boxes with size, colours and text. The old placehold.it syntax, in png, jpg, gif, webp, avif or svg, with retina
@2x.https://via.placeholder.com/600x400 -
via.placeholder.com/avatar
Avatars
Initials, abstract shapes or identicons from a name or seed. Never a human face.
https://via.placeholder.com/avatar/Anna%20Svensson.png -
via.placeholder.com/photo
Photos
Describe the subject in the URL, get a fitting CC0 photo cropped to size.
https://via.placeholder.com/photo/coffee/1200x800 -
via.placeholder.com/qr · /barcode
QR codes & barcodes
QR codes for any text. EAN-13, UPC-A, EAN-8, ITF-14 and GS1-128 from GS1 test ranges, so they never match a real product.
https://via.placeholder.com/barcode/ean13 -
data.placeholder.com/brands
Brand kits
A fictional brand from any name: palette with WCAG contrast, fonts, CSS tokens, logo, favicon and social card.
https://via.placeholder.com/brand/brightfjord/logo.svg -
data.placeholder.com/people
People & datasets
Synthetic personas for SE, NO, GB and US with test-range IDs, phones and IBANs. JSON, NDJSON, CSV or SQL, up to 10,000 rows per request.
https://data.placeholder.com/people/se/1 -
data.placeholder.com/api
Mock REST API
Users, posts, comments, albums, photos, todos, products and orders. Filters, sorting, paging, relations, simulated writes.
https://data.placeholder.com/api/posts?userId=1 -
data.placeholder.com/company
Company in a box
Brightfjord, Inc.: employees, CRM, tickets, incidents, email, chat, wiki. With evaluation questions and an answer key.
https://data.placeholder.com/company/brightfjord/v1 -
data.placeholder.com/fixtures
Fixtures with answer keys
Invoices and receipts as PDFs and photos, long-context haystacks, RAG corpora, buggy repos and spreadsheets. Every answer with its evidence.
https://data.placeholder.com/fixtures -
data.placeholder.com/text
Text
Lorem ipsum, realistic copy in 17 languages, stress-test strings and pseudo-localization.
https://data.placeholder.com/text/lorem?paragraphs=3 -
data.placeholder.com/safe-values
Safe test values
Reserved domains, documentation IPs, fictional phone ranges, test cards, IBANs and ID numbers. Every value has a source.
https://data.placeholder.com/safe-values/phone?country=SE -
files.placeholder.com
Dummy files
PDF, Office, CSV, archives, images, audio and video. Exact sizes up to 100 MB, broken files and odd encodings.
https://files.placeholder.com/documents/sample.pdf -
http.placeholder.com
HTTP test endpoints
Echo, status codes, redirects, auth, cookies, caching, delays, streams and ranges. httpbin-style.
https://http.placeholder.com/status/503 -
mcp.placeholder.com
MCP server
All of the above as 24 tools for AI agents. Remote, read-only, no sign-up. Works with Claude, Cursor and VS Code.
https://mcp.placeholder.com/mcp -
tools.placeholder.com/check
CI check
One Python file, no dependencies. Fails the build when placeholder URLs or images would ship.
curl -fsSL https://tools.placeholder.com/check/placeholder-check | python3 - dist
Copy and paste
<!-- A hero image, sharp on retina screens -->
<img src="https://via.placeholder.com/1200x600.webp"
srcset="https://via.placeholder.com/[email protected] 2x" width="1200" height="600" alt="">
<!-- A product photo and an avatar -->
<img src="https://via.placeholder.com/photo/coffee/600x400.webp" width="600" height="400" alt="Coffee">
<img src="https://via.placeholder.com/avatar/Anna%20Svensson.png?size=48&dpr=2" width="48" height="48" alt="Anna Svensson">
<!-- A whole fictional brand -->
<link rel="stylesheet" href="https://data.placeholder.com/brands/brightfjord/tokens.css">
<img src="https://via.placeholder.com/brand/brightfjord/logo.svg" height="32" alt="Brightfjord">
<!-- A barcode that can't ring up a real product -->
<img src="https://via.placeholder.com/barcode/ean13.svg" alt="Test barcode">
# 100 synthetic Swedish people as CSV
curl -o people.csv "https://data.placeholder.com/people/se.csv?count=100"
# Mock REST API
curl "https://data.placeholder.com/api/posts?userId=1"
# An invoice PDF and the answers an extraction model should find
curl -O https://data.placeholder.com/fixtures/documents/invoice-0007/invoice-0007.pdf
curl https://data.placeholder.com/fixtures/documents/invoice-0007/answers
# A 10 MB upload test file, and a server that answers 503
curl -O https://files.placeholder.com/sizes/10mb.bin
curl -i https://http.placeholder.com/status/503
How it works
- Deterministic
- The same URL gives the same bytes, forever. Datasets, fixtures, brand kits, avatars and photos are versioned (
v1) and changes ship as a new version, never inside an old one; the classic images are pinned to the same renderer build. Successful responses are cached for a year, and your snapshot tests stay green. Two exceptions: safe test values are reference data, cached for a day so corrections can reach you, and the HTTP test endpoints answer live, by design. - Coherent
- Data hangs together. A persona's avatar URL is built from their name, mock API users are personas, every record in the Brightfjord company refers to the same people, customers, deals and incidents, and Brightfjord's brand kit, invoices and RAG corpus are built from those same records.
- Verifiable
- The company dataset and every fixture ship with questions, exact answers and the evidence that proves them (record IDs, pages and bounding boxes, lines, cells), so you can score an agent, an extraction model or a RAG pipeline against them.
- Detectable
- Every image from via and every response from data, files and http carries an
X-Placeholderheader. Avatar, photo, QR, barcode and brand images, and classic images in AVIF, carry an embedded marker that survives being downloaded into your repo. placeholder-check finds both, so placeholders can't ship by accident. - Synthetic and safe
- No real people. Identifiers come from officially reserved test ranges where they exist (Skatteverket test personnummer, Ofcom drama numbers, NANP 555-01xx, RFC 2606 domains, PSP test IBANs). Each value says whether it is in such a range.
- Free and private
- No sign-up, no API key, no cookies, no analytics scripts. We don't use visitor data for anything but keeping the service running (see below).
For AI coding tools
Each host publishes an llms.txt with the URL grammar, defaults and limits, written for code assistants and agents:
- via.placeholder.com/llms.txt: images, avatars, photos, QR codes, barcodes, brand images
- data.placeholder.com/llms.txt: people, mock API, company, brand kits, fixtures, text, safe values
- tools.placeholder.com/llms.txt and llms-full.txt: everything in one file, including dummy files, HTTP test endpoints and the MCP server
Never use these in production. They are for mockups, prototypes, tests, demos and evals. Add placeholder-check to CI so nothing slips through.
Privacy and fair use
- No cookies, no tracking pixels, no analytics scripts, no third-party requests on these pages.
- Access logs leave out IP addresses, cookies and authorization headers, and cut the referrer down to its host name. They are kept for 7 days to count requests per path.
- Use
data.placeholder.com/api, notplaceholder.com/api, for the mock API. - Writes to the mock API (
POST,PUT,PATCH,DELETEondata.placeholder.com/api) are validated and echoed back, never stored. http.placeholder.comechoes your request back to you, and only to you: it stores nothing and doesn't log request contents.- Fair use: very high-volume production traffic may be rate-limited or blocked.