Generate Lorem Ipsum in Python — faker, lorem, and Custom Generators
Generate Lorem Ipsum placeholder text in Python using the faker library, the lorem package, or a custom word-pool generator. Includes scripts for seeding test databases,...
Use the tool
Lorem Ipsum Generator
Generate placeholder text — words, sentences, or paragraphs. Classic lorem ipsum plus alternatives (hipster, cupcake, pirate). HTML-wrapped output option.
Generating Lorem Ipsum in Python is straightforward with the faker library or the lorem package. Here are practical patterns for test data, database seeding, and fixture generation.
Use the Lorem Ipsum Generator to quickly generate text without writing code.
Quick option: lorem package
pip install lorem
import lorem
# Generate text
word = lorem.word() # "consectetur"
sentence = lorem.sentence() # "Lorem ipsum dolor sit amet..."
paragraph = lorem.paragraph() # Full paragraph
text = lorem.text() # Multiple paragraphs
# Controlled generation
three_words = ' '.join([lorem.word() for _ in range(3)])
Faker library (recommended)
pip install faker
from faker import Faker
fake = Faker()
# Lorem Ipsum style:
paragraph = fake.paragraph(nb_sentences=4)
paragraphs = fake.paragraphs(nb=3)
sentence = fake.sentence(nb_words=8)
sentences = fake.sentences(nb=4)
text = fake.text(max_nb_chars=500)
words = fake.words(nb=6)
# Realistic content:
name = fake.name() # "Alice Johnson"
email = fake.email() # "alice@example.com"
address = fake.address() # Full address
company = fake.company() # "Acme Corp"
job = fake.job() # "Software Engineer"
date = fake.date_this_year() # datetime.date object
url = fake.url() # "https://example.com/path"
# Locale-specific:
fake_de = Faker('de_DE')
fake_jp = Faker('ja_JP')
german_name = fake_de.name() # "Hans Müller"
Seed test databases with fake data
from faker import Faker
import sqlite3
from datetime import datetime
fake = Faker()
Faker.seed(42) # Reproducible results
def seed_database(db_path: str, num_posts: int = 100):
conn = sqlite3.connect(db_path)
cur = conn.cursor()
cur.execute('''
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
body TEXT NOT NULL,
author TEXT NOT NULL,
created_at TEXT NOT NULL,
published INTEGER DEFAULT 1
)
''')
posts = [
(
fake.sentence(nb_words=6).rstrip('.'),
'\n\n'.join(fake.paragraphs(nb=4)),
fake.name(),
fake.date_time_this_year().isoformat(),
1
)
for _ in range(num_posts)
]
cur.executemany(
'INSERT INTO posts (title, body, author, created_at, published) VALUES (?,?,?,?,?)',
posts
)
conn.commit()
conn.close()
print(f"Seeded {num_posts} posts")
seed_database('test.db', 50)
Generate fixture files for testing
import json
from pathlib import Path
from faker import Faker
fake = Faker()
Faker.seed(0) # Deterministic output
def generate_blog_fixtures(count: int = 20) -> list[dict]:
return [
{
'id': i + 1,
'slug': '-'.join(fake.words(4)),
'title': fake.sentence(nb_words=7).rstrip('.'),
'excerpt': fake.paragraph(nb_sentences=2),
'body': '\n\n'.join(fake.paragraphs(nb=5)),
'author': {
'name': fake.name(),
'email': fake.email(),
'avatar': f'https://api.dicebear.com/7.x/avataaars/svg?seed={i}',
},
'tags': fake.words(nb=3),
'published_at': fake.date_this_decade().isoformat(),
'reading_minutes': fake.random_int(min=2, max=15),
}
for i in range(count)
]
fixtures = generate_blog_fixtures(20)
Path('fixtures/posts.json').parent.mkdir(exist_ok=True)
Path('fixtures/posts.json').write_text(json.dumps(fixtures, indent=2))
print(f"Generated {len(fixtures)} post fixtures")
Django: populate dev database
# management/commands/seed_dev.py
from django.core.management.base import BaseCommand
from faker import Faker
from myapp.models import Post, Author
fake = Faker()
class Command(BaseCommand):
help = 'Seed development database with fake data'
def add_arguments(self, parser):
parser.add_argument('--posts', type=int, default=50)
def handle(self, *args, **options):
Faker.seed(0)
# Create authors
authors = []
for _ in range(5):
author, _ = Author.objects.get_or_create(
email=fake.unique.email(),
defaults={'name': fake.name()}
)
authors.append(author)
# Create posts
for i in range(options['posts']):
Post.objects.create(
title=fake.sentence(nb_words=6).rstrip('.'),
body='\n\n'.join(fake.paragraphs(nb=4)),
author=fake.random_element(authors),
)
self.stdout.write(f"Created {options['posts']} posts")
python manage.py seed_dev --posts 100
Custom word-pool generator (no dependencies)
import random
LOREM_WORDS = [
'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
'adipiscing', 'elit', 'sed', 'eiusmod', 'tempor', 'incididunt',
'labore', 'dolore', 'magna', 'aliqua', 'enim', 'veniam',
'quis', 'nostrud', 'exercitation', 'ullamco', 'laboris',
'aliquip', 'commodo', 'consequat', 'aute', 'irure',
'reprehenderit', 'voluptate', 'velit', 'esse', 'cillum',
'fugiat', 'nulla', 'pariatur',
]
def lorem_sentence(min_words=6, max_words=16) -> str:
count = random.randint(min_words, max_words)
words = random.choices(LOREM_WORDS, k=count)
return words[0].capitalize() + ' ' + ' '.join(words[1:]) + '.'
def lorem_paragraph(min_sentences=3, max_sentences=7) -> str:
count = random.randint(min_sentences, max_sentences)
return ' '.join(lorem_sentence() for _ in range(count))
def lorem_text(paragraphs=3) -> str:
return '\n\n'.join(lorem_paragraph() for _ in range(paragraphs))
print(lorem_text(2))
Related tools
- Lorem Ipsum Generator — generate text online
- JSON Formatter — format generated JSON fixtures
- CSV to JSON — convert fixture data between formats
Related posts
- What Is Lorem Ipsum? The Real History and When to Stop Using It — Lorem Ipsum comes from a 45 BC Cicero text, not random Latin. Here's the actual …
- Dummy Text Generator — Generate Placeholder Text for Designs — Dummy text generators create placeholder content for mockups, prototypes, and ty…
- Lorem Ipsum Alternatives — Themed Placeholder Text for Every Project — Beyond Lorem Ipsum: discover Bacon Ipsum, Hipster Ipsum, Corporate Ipsum, Cupcak…
- Lorem Ipsum Generator — Generate Placeholder Text for Designs — Lorem ipsum is the standard placeholder text for UI design and typesetting. Here…
- Generate Lorem Ipsum in JavaScript — Libraries and Custom Generators — Generate Lorem Ipsum placeholder text in JavaScript using faker.js, lorem-ipsum …
Related tool
Lorem Ipsum Generator
Generate placeholder text — words, sentences, or paragraphs. Classic lorem ipsum plus alternatives (hipster, cupcake, pirate). HTML-wrapped output option.
Written by Mian Ali Khalid. Part of the Dev Productivity pillar.