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

wordloom

v0.3.2

Published

Find short, pronounceable names for brands, products, and projects.

Readme

wordloom

Find short, pronounceable names for brands, products, and projects.

Twitter npm downloads stars license

wordloom is a CLI for exploring names that feel like they could be real words. It follows letter patterns learned from 100k+ English words, then checks generated candidates against WordNet so real dictionary words can show their meanings inline.

npx wordloom --length 5 --prefix no
npx wordloom --length 5 --prefix re --suffix t
npx wordloom --contains bel

Use a sound, fragment, beginning, or ending you already like and keep narrowing until the results fit.

Use it to name anything

  • Startups and brands — explore memorable names around a sound you like
  • Apps and products — discover short names that feel intentional
  • CLI tools and libraries — find names developers can remember and type
  • Side projects — brainstorm without starting from a blank page
  • Creative writing — generate fictional places, companies, or technologies

Quick start

Run without installing:

npx wordloom

Or install globally:

npm install -g wordloom
wordloom --help

Default length is 5. Supported lengths are 2 through 8.

Examples

wordloom --prefix no                       # names starting with "no"
wordloom --suffix ut                       # names ending in "ut"
wordloom --contains bel                    # names containing "bel"
wordloom --length 5 --prefix z --suffix da # combine length, prefix, and suffix
wordloom --length 5 --prefix no --suffix el
wordloom --length 6 --prefix absent        # dictionary match with a meaning

For example, the exact absent match includes its WordNet meaning:

┌───┬────────┬──────────────────────────────────────────────┐
│   │ name   │ meaning                                      │
├───┼────────┼──────────────────────────────────────────────┤
│ 1 │ absent │ verb: go away or leave; adjective: not      │
│   │        │ being in a specified place                   │
└───┴────────┴──────────────────────────────────────────────┘

Broad queries can return a lot of results because wordloom enumerates every matching candidate. Add more constraints to narrow the output, or pipe it through standard shell tools such as less.

Why wordloom?

  • Pronounceable, not random — names follow real English letter transitions derived from CMUdict
  • Built-in meaning check — dictionary matches show their WordNet definitions inline
  • Precise filtering — combine exact length, prefix, suffix, and substring constraints
  • Fast and offline — the language model ships with the package, with no API calls or API keys
  • Terminal-native — clean table output with dictionary matches highlighted in interactive terminals

Options

-l, --length <number>         Exact name length to generate (2-8, default: 5)
-c, --contains <text>         Literal substring to require anywhere in the name
-p, --prefix <prefix>         Literal starting prefix to validate and continue from
-s, --suffix <suffix>         Literal ending suffix to require
-h, --help                    Show help
-v, --version                 Show version

All text filters accept letters only and can be combined. If no candidate satisfies the constraints, wordloom prints No results found.

How it works

wordloom learns which letters naturally follow each other in English by analyzing 100k+ words from CMUdict. Generation follows observed letter transitions rather than choosing characters independently, which is why candidates feel more word-like than random strings.

Each result is checked against WordNet. If a candidate is also a dictionary word, its meaning is shown inline.

The pre-built model and dictionary data ship with the package, so everything runs locally.

A note on naming

wordloom generates naming candidates. It does not check domains, trademarks, company registrations, usernames, or package-name availability. Do the appropriate availability and trademark checks before choosing a name for a real product or business.

For maintainers

Regenerating the model is only needed when refreshing the checked-in data sources:

bun install
bun run derive:model
bun run build
bun test
bun run lint
bun run format:check

Generated data lives in bin/cmudict-model.ts and bin/wordnet-definitions.ts.

License

MIT