~/lore-gen ☀ LIGHT ☕ Support me apps ← about me

🌐 Language

██╗ ██████╗ ██████╗ ███████╗ ██████╗ ███████╗ ███╗ ██╗ ██║ ██╔═══██╗ ██╔══██╗ ██╔════╝ ██╔════╝ ██╔════╝ ████╗ ██║ ██║ ██║ ██║ ██████╔╝ █████╗ ██║ ███╗ █████╗ ██╔██╗ ██║ ██║ ██║ ██║ ██╔══██╗ ██╔══╝ ██║ ██║ ██╔══╝ ██║╚██╗██║ ███████╗ ╚██████╔╝ ██║ ██║ ███████╗ ╚██████╔╝ ███████╗ ██║ ╚████║ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═══╝

Free Developer Placeholder Text Generator_

Lorem Ipsum alternative for developers · 24 themes · 480+ lines · export to Markdown, HTML, JSX, JSON, CSV, YAML, XML or SQL
words 0
characters 0
paragraphs 0
lines 0
reading time 0s
▸ Presets one click, full setup
▸ Configure Generator v3.0
Content themes 1 selected ·
Amount & structure
Generate
Unit
Lines / paragraph
Structure
Output format
Seed— same seed + same settings = identical text, every time
▸ Generated text
# Pick a theme and press Generate — or hit Ctrl/⌘ + Enter.
seed
format plain text
themes Git Commits
size 0 B
▸ Recent generationsclick to restore
Nothing generated yet in this session.

A Lorem Ipsum alternative that actually fits the screen you are designing

Latin filler was written for print. It tells you nothing about how a commit list, a log viewer, an API reference or a chat thread will behave once real content lands in it. Lore-Gen generates placeholder text that looks like the thing you are building: git commit messages with realistic length variance, terminal output with severity prefixes, JSON payloads with nested objects, error strings, legal boilerplate, product copy, changelog entries, incident notes, and — when you do want it — proper classic Lorem Ipsum.

Everything runs in your browser. No account, no request to a server, no rate limit, and nothing you generate ever leaves the tab. Set a seed and the same settings will reproduce byte-identical text on any machine, which makes it safe to use inside visual-regression tests and design handoffs.

24 content themes

From git commits and stack traces to fantasy lore, SQL snippets, security findings and UI microcopy. Mix any number of them in one run.

9 export formats

Plain text, Markdown, HTML, JSX, JSON array, JSON objects, CSV, YAML, XML and SQL inserts — paste straight into code or a fixture file.

Deterministic seeds

Type a seed once and the output never changes again. Ideal for snapshot tests, screenshots and reproducible design reviews.

Exact counts

Ask for 8 lines, 3 paragraphs, 250 words or 1,000 characters. Word and character targets are trimmed to the exact number.

Real structures

Bullet lists, numbered lists, headings with paragraphs, block quotes and table rows — the shapes that break layouts in practice.

Shareable links

The share link encodes every setting and the seed, so a teammate opens the page and sees exactly the text you saw.

How to generate placeholder text in four steps

Developer placeholder text, Lorem Ipsum and everything in between — the complete answer

Sixty-eight questions on how this generator works, which theme to reach for, what each export format is escaped against, why a seed makes placeholder text safe to put in a test, and what happens if filler ever reaches a live page.

01. Getting started

What does this placeholder text generator actually do?

It builds placeholder text that looks like the content you are designing for. Instead of Latin filler, you pick one or more themes — git commits, terminal logs, API responses, legal boilerplate, product copy, UI microcopy and 18 more — set how much you need, choose an output format, and press Generate. The result can be copied, downloaded as a file, or shared as a link that reproduces the exact same text.

How do I generate text in the fewest possible clicks?

Click a preset at the top — Blog post, Log file (60), Card grid (12), API fixtures, DB seed rows (50) and so on. Each preset sets the theme, the amount, the structure and the export format in one go and generates immediately. From there you can tweak anything.

Do I need an account, and is there a limit?

No account, no signup, no email. There is no daily quota and no cap on how many times you generate. The one practical limit is the amount field, which accepts up to 2,000 units per run — enough for roughly a hundred thousand words.

Does it work offline?

The whole generator — every theme, every format, the seeding and the export — is plain JavaScript inside the page. Once the page has loaded it keeps working with the network switched off. It is not installed as an offline app, so the first load does need a connection.

Which keyboard shortcuts are available?
  • Ctrl / + Enter — generate
  • Ctrl / + Shift + C — copy the output
  • Ctrl / + S — download the output as a file

The download shortcut overrides the browser's own “save page” dialog while the tool is focused.

What is the difference between the code view and the preview?

Code shows exactly what you will copy — including the <p> tags, JSON brackets or SQL statements. Preview renders the same content as it would appear on a page, so you can judge line length, paragraph rhythm and how a list or table will sit in your layout before pasting anything.

What does the wrap button do?

It toggles soft wrapping in the code view only. Long JSON or SQL lines then fold instead of scrolling sideways. It does not change the text itself — if you want real hard line breaks inside the output, use Wrap at in the advanced options, which inserts actual newlines at the column you choose.

Can I get the same text back after I close the tab?

Yes, in two ways. Set a seed and note the settings, or press Share link and keep the URL — it encodes the themes, amount, unit, structure, format, seed and every advanced option. Opening that link regenerates identical text. The Recent generations list also keeps the last six runs, but only while the tab is open.

02. Themes and content

Which content themes are included?

Twenty-four: Git Commits, Terminal Logs, Cyberpunk, API Responses, Error Messages, Code Reviews, Startup Pitch, DevOps / CI-CD, Documentation, Code Comments, Classic Lorem, Changelog, Issue Tickets, Team Chat, Fantasy Lore, Ship Log, Legal Filler, Product Copy, Security Findings, ML Training, SQL Snippets, Postmortem, Fake Profiles and UI Microcopy.

Can I mix several themes in one run?

Yes. A normal click selects a single theme; shift-click, ⌘-click or Ctrl-click adds a theme to the selection. All selected themes are merged into one pool and drawn from together, which is how you get a realistic feed that mixes, say, commits and CI logs. Select all throws every theme into the same pool.

How many lines of source text are there?

Roughly 480 distinct lines across the 24 themes, each written by hand rather than assembled from a word list. The chip for each theme shows its own line count on hover, and the counter under the theme grid shows how many lines your current selection has available.

What happens when I ask for more lines than the theme has?

The pool is exhausted and then refilled, so a request for 200 lines from a 25-line theme cycles through all 25, reshuffles, and continues. Nothing repeats until everything has been used once — that is what the No repeats until the pool runs out option guarantees. Turn it off if you want purely independent random draws, duplicates included.

Is real Lorem Ipsum available if I need it?

Yes — the Classic Lorem theme contains the traditional Cicero-derived sentences, starting with Lorem ipsum dolor sit amet, consectetur adipiscing elit…. There is also a separate advanced option, Start with the classic opener, which prepends that famous first sentence to whatever theme you are using.

Why does Lorem Ipsum exist at all?

It is scrambled Latin taken from Cicero's De finibus bonorum et malorum, written in 45 BC. Typesetters have used it since the 1500s because meaningless text stops reviewers reading the words and lets them see the layout. The same argument is why some teams still prefer it over themed placeholder text.

Which theme should I use for which job?
  • Dashboards and log viewers — Terminal Logs, DevOps / CI-CD, Postmortem
  • Developer tools and git UIs — Git Commits, Issue Tickets, Code Reviews
  • API documentation — API Responses, Documentation, SQL Snippets
  • Marketing pages and cards — Product Copy, Startup Pitch
  • Legal and compliance pages — Legal Filler
  • Design systems and empty states — UI Microcopy
  • Games and narrative work — Fantasy Lore, Ship Log, Cyberpunk
  • Tables and user lists — Fake Profiles
Are the names, emails and companies in the Fake Profiles theme real?

No. The names are invented combinations and every address uses the example.com, example.org and example.net domains, which RFC 2606 reserves permanently for documentation. They can never be delivered to a real inbox, which makes them safe for demos and test fixtures.

Do the API and SQL themes produce valid syntax?

The API lines are valid JSON documents and the SQL lines are syntactically valid statements against imaginary tables. They are written to look and parse like the real thing, but they reference tables and fields that do not exist in your database — treat them as shapes to lay out, not as runnable queries.

Is the humour a problem for client work?

It can be. Themes such as Git Commits and Team Chat are deliberately funny, which is great for internal reviews and risky in front of a client who reads every word on the mock-up. For external presentations, use Classic Lorem, Legal Filler or Product Copy, which read as neutral, plausible content.

Can I add my own lines?

Not from the interface. The generator is a single HTML file, so if you save the page you can open it in an editor and add entries to the LORE object at the bottom — each theme is just a label, an icon and an array of strings. A custom-list feature is on the list of possible additions.

03. Amounts, structure and export formats

What is the difference between lines, paragraphs, words and characters?

Lines draws that many source lines. Paragraphs draws lines and groups them, using the lines per paragraph value. Words keeps drawing until the target is reached and then trims to the exact number — 250 words really is 250 words. Characters is a hard ceiling: the output is cut on a word boundary so it never exceeds your limit, usually landing within a few characters of it.

How is the word count measured?

By splitting on whitespace, the same way word processors count. Punctuation attached to a word does not count separately, and the count shown in the stats bar is measured on the raw text, before any markup such as <p> tags or JSON brackets is added.

Can I turn the exact trimming off?

Yes — uncheck Trim to the exact word / character count in the advanced options. The generator then stops at the first line that reaches or passes your target, so you get whole sentences and a count that overshoots slightly. That is usually what you want for prose and never what you want for a database column with a hard limit. Note that the target applies to the text itself: tags, brackets and quotes added by an export format such as HTML or JSON are not counted.

What do the structure options do?
  • Paragraphs — groups lines into blocks separated by a blank line
  • One per line — one source line per output line, no grouping
  • Bullet list / Numbered list — emits list markup in the chosen format
  • Headings + paragraphs — turns the first few words of each group into a heading above its paragraph
  • Block quotes — quotes each group
  • Table rows — emits a numbered row per line with a length column
Which export formats are supported?

Ten: plain text, Markdown, HTML, JSX, JSON array, JSON objects, CSV, YAML, XML and SQL INSERT. The download filename and extension follow the format automatically.

What is the difference between JSON array and JSON objects?

JSON array gives you a flat list of strings: ["first line", "second line"]. JSON objects gives you records with an id, a short title derived from the first words, and the full body — the shape you usually need for a card grid, a list view or an API mock.

Why do the structure options grey out for JSON, CSV, YAML, XML and SQL?

Because those formats describe records, not layout. A CSV row or a SQL insert is one line per record by definition, so paragraph grouping and bullet markup would produce something no parser expects. Switch back to plain text, Markdown, HTML or JSX and the structure options come back.

Is the output properly escaped for each format?

Yes, and it matters more than people expect. HTML and XML escape &, < and >; JSX additionally escapes curly braces so React does not read them as expressions; CSV doubles internal quotes and wraps every cell; YAML escapes backslashes and quotes; SQL doubles single quotes. That is why an API-response line full of braces and quotes can be pasted into a JSX component without breaking the build.

Can I use the SQL output directly?

It is a valid multi-row INSERT INTO placeholder_text (id, body) VALUES … statement. Rename the table and column to match your schema and it will run. Quotes inside the text are already doubled, so lines containing apostrophes are safe.

What does the wrap-at column setting do?

It inserts real newlines so no line exceeds the given width, breaking on spaces only. Set it to 72 or 80 when you are generating commit-message bodies, plain-text emails, terminal fixtures or anything that will be read in a fixed-width context. Zero turns it off.

What is the prefix option for?

It puts a string in front of every line — > for quoted email, // or # for code comments, - for a rough list. It is applied after wrapping, so every wrapped line gets the prefix too.

How do the letter-case options behave?

Sentence case lowercases everything and capitalises the first letter, Title Case capitalises every word, and the other two are literal. Be careful with the API, SQL and Terminal themes: forcing case will break the syntax and the log severity prefixes. Leave it on as written unless you specifically need shouting.

What does the sort option do?

It reorders the drawn lines: alphabetically, shortest first, or longest first. Sorting by length is the fastest way to stress-test a layout — put the longest lines first to find where your card titles overflow, or shortest first to see how much empty space you are designing around.

Does the reading-time figure mean anything?

It is the word count divided by 200 words per minute, the conventional silent-reading estimate for adults on screen. It is there so you can sanity-check that a block of placeholder text is roughly the length of the real content you are planning, not as a precise measure.

04. Seeds, sharing and reproducibility

What is a seed and why would I set one?

The generator uses a seeded pseudo-random number generator, so the seed is the only thing that decides which lines get drawn. Type invoice-page as your seed and that page will produce the same placeholder text today, tomorrow and on a colleague's machine. Leave the field empty and a fresh random seed is used on every run.

How do I keep a result I just liked?

Press 📌 pin last. The seed that produced the text on screen is copied into the seed field, so every subsequent Generate reproduces it. Press 🎲 roll to jump to a new random seed instead.

Does the same seed always give the same text?

Yes, provided the themes, unit, amount and lines-per-paragraph are also the same — those values are folded into the generator's initial state, so changing them intentionally changes the draw. Formatting choices such as export format, structure, case, wrap and prefix do not re-roll the text; they only change how the same lines are rendered.

Why does reproducible placeholder text matter?

Because random text breaks automated tests. A visual-regression suite that screenshots a component filled with fresh random content fails on every run for no reason. A fixed seed makes the fixture stable, so the only diffs you see are the ones you caused. The same argument applies to design screenshots that need to match between two branches.

What exactly is in the share link?

Everything: the selected themes, the amount, the unit, the lines per paragraph, the structure, the export format, the seed and every advanced option. It is all in the URL fragment after the #, which browsers never send to a server — so the link works, and nobody logs its contents.

Can I bookmark a configuration?

Yes. Press Share link once and the address bar is updated to that URL; bookmark it and the tool will restore that configuration and regenerate the text on every visit. It is a practical way to keep one fixed configuration per project.

What is the Recent generations list?

The last six runs of the current session, each labelled with its themes, amount, format and seed. Restore puts a run's settings and its exact lines back on screen. The list lives in memory only — it is gone when you close or reload the tab, which is deliberate: nothing about your session is stored anywhere.

Which random number generator is used?

A small, fast integer generator (mulberry32) seeded by an FNV-1a hash of your seed string. It is deterministic across browsers and platforms, which is the whole point. It is not cryptographically secure and must never be used to generate passwords, tokens or keys — the only secure randomness on the page is crypto.getRandomValues, used to invent new seed strings.

05. Placeholder text, design practice and SEO

Is themed placeholder text better than Lorem Ipsum?

It depends on what you are testing. Latin is better for judging pure layout, because nobody reads it — the argument typographers have made for four centuries. Themed text is better for judging fit: real commit messages vary from six characters to a hundred and twenty, and that variance is exactly what breaks a card grid. Many teams use both: Latin for the first grey-box pass, themed content once the layout holds.

Will placeholder text hurt my SEO if it reaches production?

Yes, in several ways at once. Search engines index whatever is published, so a live page of filler can rank for nonsense, dilute the page's topic, look like thin or auto-generated content, and — if the same Latin block appears on dozens of your URLs — create genuine internal duplicate content. Google's guidance on helpful content is explicit that pages should be written for people.

What should I do if placeholder text has already been published?

Replace it with real content, then request re-indexing of those URLs in Search Console. If a page is not ready, it is better to noindex it or leave it unpublished than to ship filler. Searching your own site for site:example.com "lorem ipsum" is a fast way to find what escaped.

Does placeholder text affect accessibility testing?

It affects it more than most teams expect. Screen-reader testing with meaningless text tells you nothing about whether headings make sense in isolation, and Latin has no diacritics, no long compound words and no right-to-left characters. Themed English text is closer, but the honest answer is that accessibility review needs representative content, not filler.

How much placeholder text should I use?

Bracket the real range rather than picking a comfortable middle. Fill the component once with the shortest plausible content and once with roughly twice the expected maximum. Use longest first sorting to find overflow instantly. A layout that survives both ends will survive whatever the content team writes.

Does Lorem Ipsum change how a design is judged?

It changes what reviewers can comment on. Stakeholders looking at Latin talk about spacing and hierarchy; stakeholders looking at readable text talk about the words. Both conversations are useful — the mistake is having the wrong one at the wrong stage. Themed placeholder text tends to pull the discussion toward tone and meaning earlier than Latin does.

Is placeholder text the same as dummy data?

Not quite. Placeholder text fills a text slot in a mock-up. Dummy or synthetic data fills a database with structurally valid records — types, relations, constraints. This tool sits between the two: the JSON-objects, CSV, YAML and SQL formats produce structured records, but they are still text fixtures, not a full data generator with foreign keys.

Why not just use real content?

Use it whenever you have it — real content always beats a placeholder. The reason placeholders exist is sequencing: design usually starts before copy is written, and a component library has to work for content that does not exist yet. The failure mode is treating filler as a permanent substitute rather than a temporary stand-in.

06. Using the output in real tools

How do I get this into Figma?

Generate in plain text, copy, and paste into a text layer. For many layers at once, generate with one per line structure and paste into a plugin that distributes lines across a selection — most content-population plugins accept a pasted list. Sketch, Adobe XD, Penpot and Framer all behave the same way.

How do I use it in a React or Vue component?

Pick JSX and paste the result straight into your component — the braces and quotes are already escaped and the output is wrapped in a fragment. For Vue, Svelte or plain templates, use HTML. If you would rather keep content out of markup, use JSON array and map over it.

How do I create test fixtures with it?

Choose JSON objects or CSV, set a seed so the fixture never changes, and save the file into your repository. Because the seed is written into the share link, you can put that link in a comment above the fixture so anyone can regenerate or extend it identically.

Can I use it to seed a database?

Yes — SQL insert emits a multi-row statement, and the DB seed rows preset generates fifty fake profile rows in one click. Rename the table and columns to match your schema. For anything larger than a few thousand rows, a dedicated data-generation library in your own language will be faster.

What is the best format for Markdown documentation?

Markdown with the headings + paragraphs structure produces a realistic documentation page: ## headings followed by body copy. Add the Documentation and Changelog themes to the pool and it reads like a real release-notes page, which is useful for checking a docs theme end to end.

Can I use it for CMS or WordPress content?

Yes. Paste HTML into the code block of a page builder, or plain text into the visual editor. Remember that anything you publish becomes indexable — keep placeholder pages in draft, or set them to noindex until real copy replaces them.

Does it help with email templates?

It does, with two settings: set wrap at 72 for the plain-text part of a multipart email, and use the Product Copy or UI Microcopy themes, whose line lengths resemble real marketing and transactional copy. Paste the HTML output into your template's content block for the rich part.

Can I generate content for a specific character limit?

That is exactly what the characters unit with exact trimming is for. Set 160 for a meta description, 280 for a social post, or whatever your database column allows: the text is cut on a word boundary and never exceeds the limit. Keep the export format on plain text for this — markup added by HTML, JSX or JSON is not counted toward the limit.

Is there a command-line or API version?

No. This is a browser tool with no back end, so there is nothing to call from a script. If you need generation inside a build, the page is a single self-contained HTML file — the LORE data object and the picking logic can be lifted into a Node script in a few minutes.

07. Privacy, licensing and troubleshooting

Is anything I generate sent to a server?

No. Generation, formatting, copying and downloading all happen in the page. There is no back end, no API call and no upload. The site uses privacy-first analytics that count page views without cookies or personal data, and the share link keeps your settings in the URL fragment, which browsers never transmit.

Can I use the generated text commercially?

Yes — the output is placeholder text and there is no licence attached to it, no attribution requirement and no watermark. It is meant to be thrown away and replaced with your own content before anything is published.

Is any of the content copied from real projects or people?

No. Every line was written for this tool. The names and email addresses in the Fake Profiles theme are invented and use reserved documentation domains, the ticket numbers are fictional, and the log lines describe imaginary systems. The Classic Lorem theme uses the traditional Latin passage, which has been in the public domain for two thousand years.

Nothing happens when I press Generate — what is wrong?

Almost always one of three things: JavaScript is blocked for the page, an extension has broken the script, or every theme has somehow been deselected. Check that at least one theme chip is highlighted, then reload the page. The counter under the theme grid tells you how many lines the current selection has available — if it says zero, the selection is the problem.

Copy does not work in my browser.

The clipboard API needs a secure context and, in some browsers, a direct user gesture. If it fails the tool falls back to an older copy method automatically; if that also fails you will see a message telling you to select the text manually. Copying from the code view with Ctrl/ + A then C always works.

The download does nothing.

Downloads are created as an in-memory blob, which some strict privacy extensions and locked-down corporate profiles block. Copying the text and pasting it into a new file achieves the same thing. On iOS, the file may open in a viewer instead of saving — use the share sheet from there.

Why does my output look different after I changed one setting?

Changing the themes, amount, unit or lines-per-paragraph re-rolls the draw, because those values feed the generator's initial state. Changing only the presentation — format, structure, case, wrap, prefix, sort — re-renders the same lines. If you want a different set of lines with identical settings, press 🎲 roll or clear the seed field.

Does it work on a phone?

Yes. The layout collapses to a single column, the theme chips wrap, and copy and download both work on modern mobile browsers. Long JSON and SQL output is easier to read with the wrap tab enabled.

Which browsers are supported?

Any current version of Chrome, Edge, Firefox, Safari, Brave, Opera or Vivaldi, on desktop or mobile. The tool uses standard JavaScript with no external libraries or frameworks, so there is nothing to load from a CDN and nothing to go out of date.

Is the tool free, and will it stay free?

It is free, with no account and no paid tier. It is one of a set of small browser tools at jasperbernaers.com/apps, all of which run entirely client-side for the same reason: no server means no cost, no sign-up and nothing to leak.