Lorem Ipsum Generator
Generate placeholder paragraphs or sentences for mockups and wireframes.
Generate 3 paragraphs of Lorem Ipsum placeholder text for your design mockups and content testing.
Limits: Up to 1000 words, 100 sentences, or 20 paragraphs
Generated Text
Generate placeholder paragraphs, sentences, or an exact word count. Lorem ipsum is a specific instrument with a specific purpose — it makes text unreadable so a layout can be judged as a layout — and it is the wrong instrument for most of what it gets used for. This page covers both halves of that.
The text is mangled Cicero, and the 1500s story has no source
The passage comes from De finibus bonorum et malorum, written by Cicero in 45 BC. The familiar opening is a fragment of section 1.10.32: "Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit" — roughly, there is no one who loves pain itself because it is pain. Lorem ipsum is what survived of dolorem ipsum after the first syllable was lost to a page break.
The attribution is not folklore. It is credited to Richard McClintock, a Latin scholar at Hampden-Sydney College, who traced the source in the 1980s by chasing down the unusual word consectetur, which barely appears outside classical Latin.
The claim that the text has been in use "since the 1500s", repeated on almost every generator including the version of this page it replaced, comes from the boilerplate description on lipsum.com and has never been given a citation. The documented trail is much shorter: the passage appears on Letraset dry-transfer lettering sheets in the 1960s and 70s, and Aldus PageMaker shipped it as sample text in the 1980s, which is how it reached desktop publishing and then the web.
The origin is worth knowing because it explains the property designers actually rely on. This is grammatically broken Latin assembled from a truncated quotation. It cannot be read, and being unreadable is the entire function — a reviewer looking at a page of it evaluates rhythm, measure and hierarchy rather than arguing about the copy.
Latin word lengths do not predict your layout
Lorem ipsum has a very particular texture: long words, few short ones, no numerals, no mid-sentence capitals, and no punctuation beyond commas and full stops. Interface copy looks nothing like that.
Real copy is bimodal. Navigation labels and buttons are one to three words; body content and error messages run to dozens or hundreds. Lorem ipsum sits in the middle and exercises neither end. A button that comfortably fits "Lorem ipsum" may not fit "Save and continue to payment", and a card designed around three lines of filler overflows at seven.
Translation pushes hardest on exactly the strings filler never produces. IBM's globalization guidance publishes an expansion table: an English source string of ten characters or fewer should be budgeted an extra 100 to 200% once translated, while text over seventy characters typically needs about 30% more. The short labels expand the most, and they are the ones sitting in fixed-width chrome.
German is the usual stress test because compounding produces long tokens with no obvious break point — Geschwindigkeitsbegrenzung is twenty-six characters in a single word. Finnish and Hungarian agglutinate similarly, and Russian and Greek run long as a matter of course. Arabic and Hebrew often run shorter, which exposes the opposite bug: a container sized to its content collapses. If you are going to use filler at all, use filler in a language you will actually ship, or pseudo-localise — swap ASCII for accented lookalikes and pad every string by 40%, which catches truncation and hardcoded strings in one pass while staying readable enough to review.
Scripts that do not break lines the way Latin does
Chinese and Japanese have no spaces. Line breaking follows Unicode UAX #14, which permits a break between almost any two ideographs, constrained by kinsoku rules that forbid a line from beginning with a closing bracket or a full stop, or ending with an opening bracket. A layout tuned entirely on Latin filler — which can only ever break at a space — has never executed that code path.
Ideographs are full-width and occupy a square em, so character count and visual width relate very differently than they do in Latin. A phrase running to forty Latin characters may be twelve Chinese ones while still being wider per character, and line-height that looks generous for Latin usually looks cramped for CJK because the glyphs fill their box edge to edge.
Right-to-left scripts change the layout, not just the text. Arabic and Hebrew need dir="rtl", which mirrors the entire flow: padding, icon placement, progress direction, and which side "next" lives on. Building with margin-left instead of margin-inline-start means every one of those has to be hunted down afterwards. Arabic is additionally cursive and contextual, with different letterforms initially, medially and finally, so it cannot be approximated by substituting glyphs into Latin filler.
Numerals are not universal either. Arabic-Indic digits render differently, and locales that use a comma as the decimal separator change the width of every column you have aligned on a decimal point. The cheap version of all of this is to put one real translated string, one CJK string and one RTL string into every component's fixture set. It costs almost nothing and finds the class of bug that filler structurally cannot.
Uniform filler hides the layout bugs worth finding
Lorem ipsum is well behaved by construction. Every word is short enough to wrap, there is always a space to break on, and there is always precisely as much text as you requested. Production data has none of those guarantees.
The inputs that actually break layouts are the extremes. A single token longer than its container — a URL, a base64 blob, a German compound, or the 58-letter Welsh village name Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch — overflows visibly unless you set overflow-wrap: anywhere. An empty string collapses a container that was getting its height implicitly from text. A single character exposes every alignment assumption. A value ten times longer than anything you designed for is the one your largest customer will paste in on day one.
Emoji deserve their own fixture. A family emoji assembled from zero-width joiners is seven code points and eleven UTF-16 code units rendered as one glyph. Truncating by code unit with s.slice(0, 20) can cut inside the sequence and turn one picture into three unrelated ones, or leave a lone surrogate that renders as a replacement character. Combining marks and skin-tone modifiers behave the same way. Use Intl.Segmenter when you need to cut at a user-perceived character.
Check the truncation mechanism itself while you are there: text-overflow: ellipsis only applies to a single line, and only when overflow: hidden and a constrained width are both set, so it silently does nothing on the wrapped multi-line block where you most wanted it. The best filler, though, is your own data. A query like SELECT title FROM articles ORDER BY LENGTH(title) DESC LIMIT 5 returns real extremes in the real script with the real punctuation, and a library such as Faker gives realistic names and addresses — short, varied, and occasionally very long — where lorem ipsum gives uniform Latin.
Placeholder text ships more often than you would think
The failure is rarely in the design phase; it is in the handoff. A section that nobody wrote copy for goes live with filler still in it, and nothing in the pipeline objects, because it is valid text inside a valid element rendering at a valid length.
It happens at a scale that is easy to underestimate. In 2014, Google Translate began returning odd English words for various capitalisations of lorem ipsum — China, NATO, Internet — which was reported widely and fixed shortly afterwards. The explanation offered at the time was that its statistical model had absorbed the sheer volume of live web pages carrying untranslated placeholder text next to real content. Whatever the mechanism, the corpus was real.
Make the check mechanical rather than a reviewer's responsibility. A CI step that greps the built output for lorem, ipsum, dolor and consectetur and fails the job is one line of shell. If the placeholder can arrive from a CMS, put a required-field validation before publish rather than a lint after deploy.
Where you can, use filler that is obviously wrong. Text reading TODO: pricing copy or a block of ████████ is impossible to mistake for finished content in a screenshot review, whereas lorem ipsum looks deliberate — which is exactly its design goal, working against you at the worst moment. The broader point is the one Jeffrey Zeldman made about design generally: content precedes design, and design in the absence of content is not design but decoration. Filler is legitimate for evaluating type, grid and rhythm in isolation, and a liability once it becomes a way to postpone deciding what the page says.
Related tools
Try these tools that work well with this one
Cron Expression Generator
Convert natural language schedules to cron expressions
QR Code Generator
Generate customizable QR codes
Text Case Converter
Convert text between different naming conventions
Password Generator
Generate secure passwords with customizable options
UUID Generator
Generate UUIDs (v1, v4, v7)
DNS & WHOIS Lookup
Query DNS records and fetch WHOIS registry data
Related guides
Tutorials and guides to get more from this tool
Lorem Ipsum Explained: Why Designers Use It (2025)
2,000 years old and still relevant! Discover why every designer uses Lorem Ipsum. The fascinating history behind placeholder text in 2025.
Mastering Text Cases: Camel, Snake, and Kebab Explained
CamelCase, snake_case, kebab-case... confusion? A comprehensive guide to programming naming conventions and when to use each one.
Regex Cheat Sheet: Patterns That Hold Up in Production
A practical regex reference with tested patterns for IDs, dates, URLs and logs, plus the mistakes that cause bugs and catastrophic backtracking.
ThenCatch is a free developer toolkit. Learn more about us.