npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@v0idd0/randumb

v2.0.2

Published

randumb — locale-consistent random test data. 58 locales, 5000+ real names, coupled to country + phone prefix + currency + city → no Russian Johns, no Moldovan shekels, no John Smiths in Kazan. Seeded RNG, Luhn-valid credit cards, gender-inflected Slavic

Readme

randumb

npm version npm downloads License: MIT Node ≥14

Locale-consistent random test data. 58 locales, 5000+ real names. Country ⟺ phone prefix ⟺ currency ⟺ city are coupled: Russia → Ivan Petrov / +7 / RUB / Moscow. Moldova → Tudor Popa / +373 / MDL / Chișinău. No Russian Johns. No Moldovan shekels. No "San Jose, Arizona". Slavic female surnames are properly inflected. Credit cards are Luhn-valid. Everything is English-Latin, seeded for reproducibility.

Free forever gift from vøiddo.

$ randumb user --locale ru
{
  "id": "a7e1...",
  "locale": "ru",
  "gender": "female",
  "name": "Sofya Novikova",
  "email": "[email protected]",
  "phone": "+7 (961) 300-98-38",
  "address": "705 Kirova St, Kazan 852984",
  "country": "Russia",
  "currency": "RUB9024.75",
  "currencyCode": "RUB",
  "jobTitle": "Senior Product Manager",
  "company": "Helix Dynamics"
}

Why randumb

Most faker libraries give you a Jane Smith living at 123 Main Street in Moscow, paying in USD, with an @bezeqint.net email. That's not a test fixture — that's a bug report waiting to happen. Your validation code will pass on data that could never occur in production, and fail on real users when you ship.

randumb guarantees coherent identities:

  • 58 locales — US, UK, DE, FR, ES, IT, NL, SE, NO, DK, FI, IS, PL, CZ, HU, RO, BG, GR, TR, RU, UA, BY, MD, IL, SA, AE, EG, MA, NG, KE, ZA, JP, KR, CN, HK, SG, MY, ID, PH, TH, VN, IN, PK, BD, BR, AR, MX, CO, CL, PE, CA, AU, NZ, IE, AT, CH, BE, PT.
  • 5000+ real names — US alone has 1700+ first names and 800+ last names from SSA + diaspora pools. Every locale has a properly-sized pool for its population.
  • Country-coupled output — picking locale ru gives you a Russian name, a +7 phone, RUB currency, and a city that actually exists in Russia.
  • Slavic surname gender inflectionIvanov (male) → Ivanova (female), MorozovMorozova, MoskovskiyMoskovskaya. Because Valeria Morozov is wrong; Valeria Morozova is right.
  • Luhn-valid test credit cards — 6 brands (Visa, MC, Amex, Discover, JCB, Diners). Perfect for Stripe test-mode flows.
  • Deterministic seeding--seed 42 gives you the same 100 users every run. Fixtures stay stable; tests don't flake.
  • Latin-ASCII only — no Cyrillic, no Hebrew, no Arabic, no Kanji. Your logs, BI dashboards, and DB indexes stay clean.

Install

npm install -g @v0idd0/randumb

Or one-shot with npx:

npx -y @v0idd0/randumb user --locale jp --json

Quickstart

# Realistic user object, random locale
randumb user

# Forced locale — Russian user with correct phone/currency/address
randumb user --locale ru

# 5 Brazilian users as a JSON array
randumb user --locale br -n 5 --json

# 1000 deterministic fixtures (same output every run)
randumb user --seed 42 -n 1000 --json > fixtures.json

# Individual fields
randumb name --locale de              # German name
randumb email --locale in             # Indian-ish email
randumb phone --locale il             # +972 Israeli mobile
randumb address --locale fr           # Paris / Lyon / ... address
randumb creditcard --brand visa -n 3  # 3 Luhn-valid Visa numbers

# IDs and primitives
randumb uuid -n 100
randumb ipv4
randumb mac
randumb color --format hex            # "#a3b7c9"
randumb latlng --json                 # {"lat": -17.5, "lng": 42.9}

# Content
randumb lorem --type paragraph
randumb company                       # "Nimbus Labs"
randumb jobtitle                      # "Principal Engineer"
randumb slug --words 4                # "refactor-panda-violet-merge-a1f2"
randumb hashtag                       # "#ipsumDolorAmet"
randumb useragent                     # realistic UA string
randumb status                        # common HTTP status code

# Cursed mode (for when you need a dash of chaos)
randumb user --cursed --json          # Ligma Balls, Chief Yeet Officer

# Discover locales
randumb locales                       # 58-row table
randumb locales --json                # JSON catalog

Locale coupling in action

$ randumb user --locale md    # Moldova (NOT Russian, NOT shekel)
{
  "name": "Andrei Munteanu",
  "phone": "+373 73 230 278",
  "address": "878 Mihai Eminescu, Orhei MD-4128",
  "currencyCode": "MDL"
}

$ randumb user --locale il    # Israel
{
  "name": "Yoav Gabay",
  "phone": "+972 58-209-5687",
  "address": "205 Ibn Gabirol, Rehovot 1287589",
  "currencyCode": "ILS"
}

$ randumb user --locale jp    # Japan
{
  "name": "Daiki Saito",
  "phone": "+81 88-3559-8793",
  "address": "481 Roppongi, Chiba 601-9872",
  "currencyCode": "JPY"
}

$ randumb user --locale us    # United States (state matches city)
{
  "name": "Michelle Orr",
  "address": "323 Spring St, Jacksonville, FL 76827",
  "currencyCode": "USD"
}

Commands

Identity

| Command | Output | |---------|--------| | name | First + last name | | firstname / first | First name | | lastname / last | Last name (feminized for Slavic-female) | | email | Coherent address derived from name + locale domain | | username | Handle like wolf_violet42 | | user | Full record with id/name/email/phone/address/country/currency/jobTitle/company |

Contact

| Command | Output | |---------|--------| | address | Locale-appropriate postal address | | phone | Phone in locale format (+972 5X-XXX-XXXX, +7 (9XX) XXX-XX-XX, etc.) | | country | Country name |

IDs & primitives

| Command | Output | |---------|--------| | uuid | v4 UUID | | ipv4 / ip | IPv4 address | | ipv6 | IPv6 address | | mac | MAC address | | creditcard / cc | Luhn-valid card (--brand visa\|mastercard\|amex\|discover\|jcb\|diners) | | number / float / bool / string | Primitives with --min/--max/-l/--charset |

Time & geo

| Command | Output | |---------|--------| | date / timestamp | ISO dates (--after/--before) | | duration | Short duration like 23m, 7h, 12d | | timezone / tz | IANA timezone | | color | hex (default) / rgb / rgba / hsl / name | | latlng / coord | {lat, lng} object |

Business & web

| Command | Output | |---------|--------| | company / jobtitle / currency | Corporate data | | url / slug / hashtag | Web identifiers | | useragent / ua | Realistic browser/CLI UA | | method / status | HTTP method + common status codes |

Content

| Command | Output | |---------|--------| | lorem --type words\|sentence\|sentences\|paragraph\|paragraphs | Lorem ipsum | | animal / food / tech / emoji | Single items |

Meta

| Command | Output | |---------|--------| | locales | List all 58 locales with name counts |

Global options

| Flag | Description | |------|-------------| | -n, --count <n> | Generate N items | | --seed <int> | Deterministic output (same seed → same data, every run) | | --locale <code> | Force a specific locale (see randumb locales) | | --cursed | Meme mode (Ligma Balls, Chief Yeet Officer, @fr-fr-no-cap.io) | | --json | JSON array output | | --csv | CSV output (for object-returning commands) |

Programmatic use

const r = require('@v0idd0/randumb/src/generator');

// Reproducible fixtures
r.seed(42);
const users = Array.from({ length: 1000 }, () => r.user({ locale: 'de' }));

// Mixed locales for realistic prod-shaped data
const countries = ['us', 'gb', 'de', 'fr', 'jp', 'br', 'in'];
const mixed = countries.flatMap((l) => Array.from({ length: 100 }, () => r.user({ locale: l })));

// Validate a credit-card generator
const cc = r.creditCard('amex');       // → "378282..."
r.isValidLuhn(cc);                      // → true

// Weighted picking
const plan = r.weighted([['free', 80], ['starter', 15], ['pro', 5]]);

// Introspect
r.LOCALES.ru.firstNamesMale;            // ['Alexander', 'Dmitry', ...]
r.LOCALES.ru.feminizeSurname('Ivanov'); // 'Ivanova'

Locales

58 countries, ~5200 total names:

| Region | Locales | |--------|---------| | Americas | us ca mx br ar co cl pe | | Western Europe | gb ie de at ch fr be nl es pt it | | Nordic | se no dk fi is | | Central/Eastern Europe | pl cz hu ro bg gr tr | | Eastern Slavic | ru ua by md | | Middle East & Africa | il sa ae eg ma ng ke za | | East Asia | jp kr cn hk | | SE Asia & Oceania | sg my id ph th vn au nz | | South Asia | in pk bd |

From the same studio

vøiddo builds sharp, free-forever CLIs for devs who are tired of paywalls:

Full catalog: voiddo.com/tools.

License

MIT © vøiddo — free forever, no asterisks.

Links

  • Docs: https://voiddo.com/tools/randumb/
  • Source: https://github.com/voidd0/randumb
  • npm: https://npmjs.com/package/@v0idd0/randumb
  • Studio: https://voiddo.com
  • Issues: https://github.com/voidd0/randumb/issues
  • Support: [email protected]

Built by vøiddo — a small studio shipping AI-flavoured products, free dev tools, Chrome extensions and weird browser games.