data.placeholder.com/text
Placeholder text
Classic lorem ipsum, realistic filler copy in 17 languages, strings that break layouts on purpose, and pseudo-localization for your own UI text. All seeded: the same URL returns the same text forever.
Lorem ipsum
https://data.placeholder.com/text/lorem[?paragraphs=N | sentences=N | words=N | headlines=N][&format=][&start=][&seed=]
https://data.placeholder.com/text/lorem3 paragraphs, plain text, starting "Lorem ipsum dolor sit amet"https://data.placeholder.com/text/lorem?paragraphs=5&format=html5<p>elementshttps://data.placeholder.com/text/lorem?words=20&start=random&seed=4220 words, not starting with "Lorem ipsum"https://data.placeholder.com/text/lorem?sentences=3&format=jsonJSON with anitemsarray and joinedtexthttps://data.placeholder.com/text/lorem?headlines=4&format=markdown4 Markdown headings
| Parameter | Values | Default |
|---|---|---|
paragraphs / sentences / words / headlines | Pick one. Max 100 / 500 / 10,000 / 100. Same as type=paragraph&count=N. | 3 paragraphs |
format | plain, html, markdown, json | plain |
start | classic (begins "Lorem ipsum dolor sit amet") or random | classic |
seed | Any string up to 128 characters. Change it for different text. | 0 |
Realistic copy in 17 languages
Neutral website and product copy that reads like the real thing, so you can judge typography, line length and layout in each locale. It is a parallel corpus: the same seed gives the same content in every language, so you can compare one layout across locales.
https://data.placeholder.com/text/<lang>[?type=paragraph|sentence|headline|product|ui][&count=N][&format=][&seed=]
| Code | Language | Code | Language |
|---|---|---|---|
en | English | pt | Portuguese (Brazil, pt-BR) |
sv | Swedish | pl | Polish |
no | Norwegian (Bokmål, nb) | ar | Arabic (right-to-left) |
da | Danish | he | Hebrew (right-to-left) |
fi | Finnish | ja | Japanese |
de | German | zh | Chinese (Simplified, zh-Hans) |
nl | Dutch | ko | Korean |
fr | French | it | Italian |
es | Spanish |
Aliases: nb, pt-br, zh-hans, zh-cn, iw. Responses carry Content-Language, and HTML output is wrapped in <div lang="…" dir="…">.
https://data.placeholder.com/text/sv3 Swedish paragraphshttps://data.placeholder.com/text/de?type=headline&count=55 German headlineshttps://data.placeholder.com/text/ja?type=product&format=jsonJapanese product names and descriptionshttps://data.placeholder.com/text/ar?paragraphs=2&format=htmlArabic, withdir="rtl"https://data.placeholder.com/text/fi?type=ui&count=1010 Finnish button and label strings
Types: paragraph (default 3), sentence (5), headline (5), product (3), ui (5); max 100 each, 500 for sentences. Shortcuts paragraphs=, sentences=, headlines= and products= work here too.
Stress-test strings
Hand-picked strings that break layouts, encodings and i18n: each with a note, a language tag, its length in code points, UTF-16 units and UTF-8 bytes, and the exact code points.
| Kind | What it tests |
|---|---|
long-words | Long compound words, unbroken strings, long URLs, e-mails and paths |
rtl | Right-to-left scripts, mixed bidirectional text and bidi controls |
cjk | Chinese, Japanese and Korean, full-width forms, astral ideographs |
emoji | ZWJ sequences, skin tones, flags, keycaps, presentation selectors |
names | Person names from 1 to 100+ characters: apostrophes, hyphens, particles, diacritics, scripts |
combining | Combining marks, NFC vs NFD, stacked diacritics, Zalgo-style overflow, Indic and Thai |
whitespace | Zero-width characters, no-break and fixed-width spaces, line separators, control characters |
numbers | Locale number, currency, date and time formats, plus floating-point traps |
casing | Case-mapping traps: Turkish I, sharp s, final sigma, digraphs, ligatures |
confusables | Look-alike characters: homograph domains, styled letters, dashes and quotes |
scripts | Language names in 30 scripts, for font fallback and line height |
pseudo | Pseudo-localized UI strings |
https://data.placeholder.com/text/stressevery kind, JSONhttps://data.placeholder.com/text/stress/names?format=plainone name per linehttps://data.placeholder.com/text/stress/rtl?count=5&seed=15 entries, shuffled by seed 1
format=plain puts one entry per line; some whitespace entries contain line breaks themselves, so prefer JSON for exact tests.
Pseudo-localization
Turn your own strings into accented look-alikes that are about 30 to 40 % longer and wrapped in brackets. You'll see at a glance which strings aren't translatable, which get cut off and which are glued together. Placeholders ({name}, {{count}}, %s, ${x}), HTML tags, entities, URLs and e-mail addresses are left intact.
https://data.placeholder.com/text/pseudo?text=Add%20to%20cart→[ȦȦḓḓ ŧǿǿ ƈȧȧřŧ~]https://data.placeholder.com/text/pseudo?text=Welcome%20back%2C%20%7Bname%7D!&format=json→[Ẇḗḗŀƈǿǿḿḗḗ ƀȧȧƈķ, {name}!~]with lengths and expansion ratio
curl --data-binary @messages.txt "https://data.placeholder.com/text/pseudo"
?text= takes up to 4,000 characters; POST the raw UTF-8 text as the body for up to 64 KB (not cached). Options: expand=false, brackets=false, format=plain|json.
Notes
- Everything is seeded and frozen (v1): same URL, same bytes, cached for a year.
- The original copy is released as CC0; lorem ipsum is public domain.
/textreturns a JSON index with every parameter, limit and language.- The old placeholder.com lorem ipsum tool at
placeholder.com/text/lorem-ipsumredirects here.