Skip to content

All tools (41)

JSON 6
Time & Date 4
Encoding & Decoding 4
Generators 3
Text & Data 4
Logs & Debugging 1
Config & Infra 3
Security & Hashing 4
Color & Design 5
Numbers & Bits 3
Web & Markup 4

Nothing leaves the cave.

Nothing you paste ever leaves your device. There is no server to send it to.

How you can check →
DevToolsCave

    This tool runs entirely in your browser. Nothing you paste is uploaded.

    How you can check →

    Lorem Ipsum Generator

    Generators

    Placeholder text with an exact count, a seed you can replay, and output already wrapped in HTML, Markdown or JSON — not a paragraph blob you wrap by hand.

    Output

    The same seed always produces the same text on any machine — a placeholder generator is deterministic on purpose, the opposite of the password generator, which is deliberately unpredictable because unpredictability is the entire point of a password.

    Sentence and paragraph shape

    Where this text comes from

    Every generator on this page draws from the same c. 1500s typesetter's garbled excerpt of Cicero's De Finibus Bonorum et Malorum, 1.10.32–33 (45 BC). The real passage, with the 1914 Loeb Classical Library English translation:

    "Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo…"

    Cicero, De Finibus Bonorum et Malorum, 1.10.32–33 (45 BC). Translation: H. Rackham, Loeb Classical Library, 1914 (public domain).

    The generated word pool above is not grammatical Latin — words are picked at random from the passage's vocabulary, not composed as sentences a Latin speaker would recognise. That has always been true of "lorem ipsum" text everywhere it appears.

    Where lorem ipsum actually comes from

    "Lorem ipsum" is not a made-up language — it is a corrupted fragment of a real Latin text, Cicero's De Finibus Bonorum et Malorum ("On the Ends of Good and Evil"), written in 45 BC. Somewhere in the 1500s, a typesetter scrambled a passage from Section 1.10.32–33 of that text into filler copy for a type specimen book, and the garbled result — missing words, Latin grammar broken by the cuts — is the exact scrambled pool every "lorem ipsum" generator on the web still draws from five centuries later, including this one. The tradition got a second life in the 1960s when Letraset used it on dry-transfer sheets for graphic designers, and again in the 1980s when early desktop publishing software (including early versions of Aldus PageMaker) shipped it as default placeholder text. It has been the default answer to "what goes here before the real copy is written" ever since.

    Why designers use Latin-looking nonsense instead of English

    The whole point of placeholder text is that a reviewer's eye should judge the layout — column width, line height, font size, how a heading sits above a paragraph — without getting pulled into reading and judging the words themselves. English filler text ("your content goes here") reads as a sentence with meaning, so a reviewer's attention snags on it. Latin that almost nobody reads fluently does the opposite: it has the visual rhythm and letter distribution of real prose (word lengths, punctuation frequency, capital letters at sentence starts) without offering anything to comprehend, so the eye stays on the layout. There's a real accessibility argument against ever shipping it to production, though — a screen reader will read "lorem ipsum dolor sit amet" out loud exactly as if it were real content, and a sighted user who does read Latin, or just reads carefully, will notice nonsense where real copy should be. Placeholder text belongs in a design mockup, never in a live page a real visitor might reach.

    Exact counts, not approximate ones

    Most lorem generators produce "about" the amount you asked for — five paragraphs come out as five paragraphs of whatever length sentences happened to land at, and a word-count request gets rounded to the nearest sentence boundary. That is a real gap when you need a specific number: testing how a UI handles exactly 500 words, or filling a database column with text that has to land under an exact byte limit. This generator verifies its own output after generating it and shows the achieved figure next to the requested one for every unit at once — words, characters, sentences, paragraphs and bytes — so "500 words" is visibly 500 words, and you can also see how many characters and bytes that same text turned out to be.

    Why "bytes" is the unit a developer actually wants

    Filling a VARCHAR(255) column or checking against an API payload limit is really a question about bytes, not characters — and for anything outside plain ASCII, those two numbers disagree. "café".length is 4 in JavaScript because .length counts UTF-16 code units, but new TextEncoder().encode("café").length is 5, because é takes two bytes in UTF-8. Classic lorem text is pure ASCII, so the two numbers happen to coincide here, but this tool still computes the byte count the honest way — from TextEncoder, never from .length — so the number is correct by construction rather than correct by coincidence. When a byte cap can't land exactly on a sentence boundary, the achieved-count strip says which rule was applied: cut at the nearest sentence boundary within the limit, or cut exactly at the byte limit when no earlier boundary fit.

    Reproducibility, not unpredictability

    A placeholder generator has the opposite job to a password generator. A password's entire value comes from being unguessable, which is why the password generator deliberately uses cryptographically secure randomness that can never be replayed. Placeholder text needs the exact reverse property: a designer approves a specific paragraph in a mockup, and that same paragraph needs to come back after a page reload, after sharing a link with a teammate, or a week later when the mockup is revisited. Math.random() output is lost the moment the page reloads, so this generator uses a small, fast, deterministic PRNG (mulberry32) seeded by a number you can see, edit, reroll or share — the same seed always produces the same sequence of text, on any machine, forever. Using cryptographic randomness here would be theatre: nothing about placeholder text is a security boundary, and claiming otherwise would be the same kind of dishonesty as printing a privacy number nobody measured.

    Output already wrapped, not a blob you wrap by hand

    Most lorem generators hand back one block of text and leave you to wrap it in <p> tags, Markdown bullets or a JSON array yourself. This one emits all four directly: Plain (blank-line-separated paragraphs, or one paragraph per line in single-line mode), HTML (<p> tags, or a <ul> of <li> for the "list" unit), Markdown, and a JSON array of paragraph strings — the shape a mock API response or a fixture file actually wants. Each format has its own copy button so the paste lands ready to use.

    Frequently asked questions

    Does this generator produce an exact word count?
    Yes. Ask for 500 words and you get exactly 500 — not "about 500". The achieved-count strip shows the requested and actual figure for every unit (words, characters, bytes, sentences, paragraphs) side by side, so you can see it matched rather than trust that it did.
    Why does the same seed produce the same text?
    Placeholder text needs reproducibility, not unpredictability — a designer who approves a layout with a specific paragraph needs that exact paragraph back after a reload, a re-share, or a teammate opening the same link. This tool uses a small deterministic PRNG (mulberry32), never Math.random or crypto randomness, so one seed always produces one sequence, on any machine, forever. That is the opposite bias from /tools/password-generator/, which is deliberately unpredictable because a password's whole job is not being guessable.
    What does the "bytes" unit actually measure?
    UTF-8 bytes from TextEncoder — the number that matters when you're filling a VARCHAR(255) or checking a payload against a size limit. It is not the same as JavaScript's .length (UTF-16 code units), which would quietly disagree the moment any non-ASCII character appeared. Classic lorem is plain ASCII, so the two happen to match here, but the byte cap is computed the honest way regardless.
    Is generated lorem ipsum real Latin?
    No, and this page says so rather than implying otherwise. The word pool is a scrambled fragment of Cicero's De Finibus Bonorum et Malorum (45 BC), corrupted by a 1500s typesetter into the nonsense arrangement every "lorem ipsum" generator on earth now draws words from. Sentences built from that pool are not grammatical Latin and were never meant to be read as Latin — they are meant to be ignored, which is the actual design goal of placeholder text.
    What output formats does it support?
    Plain text, HTML (wrapped in <p> tags, or a <ul> for the list unit), Markdown, and a JSON array of paragraph strings — each with its own copy button, so you can paste straight into markup instead of hand-wrapping a blob of text afterward.
    Does this tool send anything to a server?
    No. Generation runs entirely in your browser from the seed and settings you chose. Nothing is logged, stored or transmitted.