rstr
Generate random strings in Python
Decision gist · record as of 2026-08-14
Yes, if you need lightweight random string generation for testing or dummy data without external dependencies. The aging maintenance status is not a blocker for stable use, but verify compatibility with your Python version. Avoid for cryptographic applications unless you explicitly configure SystemRandom().AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- For cryptographic use (passwords, tokens), you must instantiate with SystemRandom(); default random module is not cryptographically secure.
- Low friction: pure Python with no external dependencies, distributed as a wheel.
- Maintenance is aging—last release was 2023-10-11 and the repository shows no recent activity, though it remains archived=false and supports current Python versions.
License · maintenance · safety
permissive license (permissive) — Permissive BSD license places no restrictions on use, modification, or distribution in commercial or proprietary contexts.
last release 2023-10-11 (1038 days) · last repo commit 2025-02-20 · 98 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 3,294,521 downloads/mo, #2,669 on PyPI
Alternatives
Verify before relying
pip install rstr
import rstr
# Generate random string from custom alphabet
rstr.rstr('ABC', 5, 10)
# Generate from predefined set
rstr.digits()
# Generate from regex pattern
rstr.xeger(r'[A-Z]\d[A-Z]')- Whether xeger() supports all modern Python regex features or has known limitations beyond those mentioned.
- Likelihood of future updates for Python versions beyond 3.11.
What it is and what it does
rstr is a lightweight utility for generating random strings in Python, useful for test data, fuzzing, and validation scenarios. It offers both low-level control—specifying custom alphabets and length ranges—and convenience methods for common character sets like digits, letters, URLs, and domain names. It can also generate strings matching regular expression patterns via its xeger() method.
The package has no external dependencies and runs on Python 3.7 through 3.11. However, it uses Python's standard random module by default, which is not cryptographically secure; for password generation or other security-sensitive applications, you must explicitly configure it to use SystemRandom(). Maintenance is aging, with the last release in October 2023 and no recent commits, though the codebase remains stable and production-ready.
Use it for
- Generate test fixtures and dummy data for unit tests without external dependencies.
- Create fuzz-testing payloads with controlled character sets to probe input validation.
- Build random email addresses, URLs, or domain names matching specific format constraints.
- Generate random strings matching a regex pattern for testing regex-based parsers or validators.
- Produce test data for postal addresses or other domain-specific formats with predefined alphabets.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need lightweight random string generation for testing or dummy data without external dependencies.
The aging maintenance status is not a blocker for stable use, but verify compatibility with your Python version. Avoid for cryptographic applications unless you explicitly configure SystemRandom().
Install
rstr on PyPI
Before you install
Low friction: pure Python with no external dependencies, distributed as a wheel. Maintenance is aging—last release was 2023-10-11 and the repository shows no recent activity, though it remains archived=false and supports current Python versions.
For cryptographic use (passwords, tokens), you must instantiate with SystemRandom(); default random module is not cryptographically secure.
License in practice
Permissive BSD license places no restrictions on use, modification, or distribution in commercial or proprietary contexts.
Quickstart
pip install rstr
import rstr
# Generate random string from custom alphabet
rstr.rstr('ABC', 5, 10)
# Generate from predefined set
rstr.digits()
# Generate from regex pattern
rstr.xeger(r'[A-Z]\d[A-Z]')
Verify before relying
- Whether xeger() supports all modern Python regex features or has known limitations beyond those mentioned.
- Likelihood of future updates for Python versions beyond 3.11.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Aging 1,038 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,294,521 / month, #2,669 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Testing |
Evidence: rstr-3.2.2-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “dummy data generation”
- rstrGenerates random strings from custom alphabets, predefined character…
- mimesisMimesis generates realistic fake data across 47 locales—names,…
- lorem-textGenerates dummy lorem ipsum text (sentences, paragraphs, and words)…
Give your agent the search over MCP, or paste the wish link into any chat.
More Testing packages
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
virtualenv creates isolated Python environments where packages can be installed independently without affecting the system Python or other projects.
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
pytest-asyncio is a pytest plugin that enables writing and running async test functions using the asyncio library, allowing developers to await code directly within test cases.
Install it if you write tests for any asyncio-based code.
A pytest plugin that generates test reports in Common Test Report Format (CTRF) as JSON, compatible with pytest-xdist and pytest-playwright for distributed and browser-based testing.
Install it if you need CTRF-formatted test output for CI/CD integration or cross-tool reporting.
See also exrex · inventree-ipn-generator · random-password-generator · xkcdpass · RapidFuzz · random-address · wonderwords · boofuzz · iregexp-check · petname