The Lorem Ipsum Generator builds placeholder text by sampling from curated word banks (classic Latin lorem, plain English, tech jargon, marketing copy, and headline words) and assembling them into sentences and paragraphs. The randomness comes from Math.random(); seeded reproducibility is not provided because the goal is throwaway filler, not deterministic test fixtures.
Sentence assembly picks a target word count (drawn from a configurable min and max), then concatenates random tokens, capitalizes the first letter, and appends a period or other terminal punctuation. Paragraphs are built by stringing several sentences together and joining with a space. Word count caps are soft — the generator does not crash on ten-thousand-word requests, but very large outputs will block the main thread briefly while the strings are concatenated.
Lorem ipsum exists because, since the 1500s, typesetters and designers have needed text that fills a layout without distracting reviewers with readable meaning. The classic Latin words are nonsense fragments derived from Cicero's De Finibus Bonorum et Malorum (45 BC), which is why the cadence and letter distribution roughly match real Latin and end up looking like reasonable Western European text in most fonts.
HTML wrapping is implemented as plain string templating. Choose a tag (p, h1 through h6, li, div) and the generator wraps each paragraph in opening and closing tags. List mode emits a parent ul or ol with li children. There is no DOM parsing — the output is a single string ready to paste into a template, so it cannot inject XSS into your own page when you render it as text.
Mockup templates ship a preset structure (hero, paragraphs, list, headings) and run the generator multiple times with different parameters per section. This is faster than copying multiple separate generations together and matches how component libraries often need a heading plus body plus a bullet list in one call.
Output is exposed via three actions: Copy uses the navigator.clipboard API, Download builds a Blob and triggers a synthetic anchor click for plain text or HTML, and Refresh rerolls every random pick. Because all randomness is local, the same configuration plus a refresh always yields different text — useful when comparing how a layout reads with several different filler runs.
One caveat: classic lorem ipsum is intentionally nonsensical, which can confuse non-designers reviewing a mockup. Some clients reject Latin filler as 'broken text.' For those reviews, switch to the Plain English or Marketing word banks — the output reads as ordinary if-meaningless prose rather than visible Latin gibberish.