Package Name Generator
Short, available-sounding names for npm, PyPI and crates
Tap a name to copy itPress Space for a new batch500 names in this generator
Generate package names for libraries, CLIs and modules you plan to publish to npm, PyPI, crates.io, RubyGems or Go: lowercase one-word coinages like hashslinger and lintroller, hyphenated idioms like shelf-life and rubber-duck, scoped names like @hearth/router, and short invented words in the tokio and serde mold.
About package names
A package name has to survive three places at once: the registry search box, the import line, and a sentence said out loud in code review. That is why the names that stick are lowercase, one or two syllables, and easy to type without looking. The classic shapes are all here: a plain compound that says what the thing does (warmcache, editdistance, formcheck), a pun on the job (lintroller for a linter, shelf-life for a TTL cache, stunt-double for test doubles), an ordinary word borrowed from a workshop or river (mortise, trellis, oxbow), a hyphenated idiom in the left-pad tradition (rubber-duck, ground-truth, tight-loop), and a short invented word with no baggage, the way tokio, serde and nom are named.
Every registry has its own rules. npm names are lowercase, may contain hyphens, and can live under a scope like @hearth/router, the easiest way to rescue a taken name. PyPI treats hyphens, underscores and dots as the same character, so parsely and parse-ly collide. crates.io is first come, first served with no scopes, and Go modules are just the repository path, so only the last segment matters.
The list mixes names by domain: networking, parsing, logging, caching, queues, text, testing, build tools, CLIs, math, databases, security, media, files, config, front-end and machine learning, plus invented brandables and scoped examples.
Tips for choosing a name
- Search the exact name on the registry you will publish to before you grow attached to it; on npm also check the scoped form, and on PyPI remember that my-pkg, my_pkg and my.pkg are treated as the same name.
- Type it as an import line and say it in a sentence: 'import hashslinger' and 'just use hashslinger for that' should both feel natural, with no letters people will guess wrong after hearing it once.
- Avoid names that are one edit away from a popular package in the same ecosystem; typosquat filters may reject them, and even if they pass, users will install the wrong one.
- Pick a name that describes the job, not the implementation: a package called fastparse has nowhere to go if it stops being the fastest, while pegboard or chompy can survive a rewrite.
- If the unscoped name is gone, claim a scope or organization name for your whole family of packages (@kiln/build, @kiln/cli) rather than adding a digit or the suffix -js to the end.
Frequently asked questions
What are the naming rules for npm, PyPI and crates.io packages?
npm names must be lowercase, URL-safe, under 214 characters, and may be scoped as @scope/name; hyphens are fine, spaces and capitals are not. PyPI names may use letters, digits, hyphens, underscores and dots, but hyphens, underscores and dots are normalized to the same thing, so choose one spelling and use it everywhere. crates.io allows letters, digits, hyphens and underscores, is case-insensitive and has no namespaces, so short unscoped names go fast. Go has no registry names at all; the module path is the import path, and convention is a short, all-lowercase final segment with no underscores.
Should a package name describe what it does or be a made-up word?
Both work, and the ecosystem tends to decide. Utility libraries with one clear job benefit from a descriptive compound (editdistance, formcheck, geocodex) because people find them by searching for the job. Frameworks, runtimes and anything that will grow beyond its first feature do better with an invented or borrowed word (tokio, serde, orbo, trellis) that does not promise a single feature. A pun on the job (lintroller, leafblower for tree shaking, picklejar for Gherkin fixtures) gives you the memorability of a brand with a hint of the function.
How do I pick a Java or Android package name?
Java and Kotlin package names follow the reverse-domain convention: take a domain you control, reverse it, and append the project, so a team at hearth.dev shipping a router would use dev.hearth.router. Keep every segment lowercase, avoid hyphens (use nothing or an underscore), and do not start a segment with a digit. The names on this page work as the final segment; pair one with your reversed domain and you have a valid, unique package name.
Are these package names free to use?
They are original suggestions, but registries are enormous, so a few will already be taken by the time you read this, and some short words are bound to exist somewhere. Treat each one as a starting point: check the registry, check GitHub for an active project with the same name, and run a quick trademark search if you plan to build a company or product around it. If the plain name is gone, the scoped or hyphenated form is usually still available.
All 500 package names
Browse the full list
- fetchling
- sampler
- stringbean
- flagpole
- snapshooter
- byteslicer
- ferrik
- bouncehouse
- wirefly
- heapwatch
- slugline
- clikit
- keysmith
- bufferfish
- bruma
- hookline
- memwatcher
- kebabify
- prompter
- lockpick
- bincraft
- sylvo
- waxseal
- relayer
- leakhound
- casefold
- inquisitor
- passkeeper
- hexdumpling
- quade
- pipewright
- perfsnoop
- wordwrap
- pinwheel
- tokenvault
- endways
- velt
- statehouse
- quickwire
- benchpress
- trimmings
- meterstick
- jwtlocker
- bitfield
- nilo
- stockroom
- socketeer
- lapcounter
- unquote
- chalkboard
- saltshaker
- bitbasket
- brix
- distillery
- portcullis
- flight-recorder
- ellipsize
- ansiwrap
- checksummer
- zephra
- smokesignal
- gatekeep
- inkblot
- glyphjar
- termite
- hashslinger
- mimeartist
- tokka
- atomizer
- tunnelvision
- stenographer
- runeset
- ttyrant
- cipherwheel
- filewatch
- ombra
- observatory
- netweave
- logjam
- typeset
- concierge
- cryptkeeper
- shortcutter
- lumo
- omnibus
- packetry
- ticker-tape
- letterbox
- keypress
- sealant
- vexil
- loudspeaker
- routewise
- periscope
- wordmill
- linereader
- signet
- globetrotter
- halcy
- switchyard
- courier-pigeon
- dashcam
- textsmith
- shellac
- signatory
- mirrorball
- murrow
- signalbox
- pulsecheck
- pluralizer
- bashful
- confab
- ondo
- automaton
- mailwright
- canary-cage
- lexicon
- commandeer
- envelope
- pavo
- flowsheet
- restwell
- crowsnest
- diacritica
- flagbearer
- doorman
- solum
- aqueduct
- graphqlite
- stashpile
- deaccent
- subcommando
- bouncer
- configlet
- @hearth/router
- stepflow
- endpointer
- cachecow
- transliterator
- usagebook
- runcom
- @tidepool/auth
- dagwood
- backoff-buddy
- warmcache
- fuzzymatch
- completionist
- foldable
- @kiln/build
- retry-after
- hoard
- editdistance
- pageboy
- wordlock
- @lantern/log
- bandleader
- tollbooth
- coldstore
- soundalike
- columnize
- six-digits
- dials
- @orchard/orm
- timetable
- bulkhead
- kvstash
- stemmer
- boxcar
- timecode
- toggles
- @saltmarsh/crypto
- shelfspace
- bannerman
- credlocker
- flagday
- @harbor/queue
- retrial
- heartbeatd
- icebox
- ngrams
- bigletters
- strongbox
- flagship
- @quarry/db
- onceover
- pingpong
- squirrel-away
- stepwise
- csrfguard
- switchboard
- @almanac/dates
- outtray
- latencyd
- stowaway
- hyphenate
- wizardry
- xssafe
- @loom/templates
- eventhorizon
- webhookd
- strongroom
- titlecase
- numerist
- sanitizr
- optionally
- @foundry/cli
- freezeframe
- fanout
- bytevault
- camelsnake
- matrixmint
- escapist
- tunables
- @bramble/parse
- cqrsish
- sockpuppet
- memoizr
- textdiff
- tensorette
- nonceworks
- manifesto
- demesne
- longpoll
- lru-pocket
- spellbound
- statwise
- proofkey
- secretsauce
- tagsoup
- satchel
- shelf-life
- anagrammar
- quartile
- oauthority
- dotmatrix
- domino
- remapper
- inbound-lane
- evictor
- palindromeda
- histogrammer
- identicard
- domicile
- reshaper
- wire-tap
- blobshelf
- alphabetize
- binbag
- scopecreep
- envswitch
- templar
- pipeworks
- dead-drop
- objectstash
- typosquash
- bigmath
- rolecall
- letterpress
- lenscap
- knock-knock
- root-cellar
- mockingbird
- exactmath
- guestlist
- polyenv
- mustachio
- monocle
- telegraph
- cubbyhole
- policywonk
- twelvefactor
- hydrant
- permafrost
- carrier-wave
- taskforge
- fakery
- gotcha
- kitchensink
- archipelago
- amberize
- pneumatic
- cronwright
- mannequin
- kalmanac
- overrider
- routemaster
- postmaster
- conveyor
- fixturekit
- descender
- tarpit
- by-default
- linkage
- dispatch-rider
- bucket-brigade
- snapshotter
- shuffler
- drawbridge
- hotconfig
- relay-race
- drumline
- greenlight
- dicebag
- watchword
- configwatch
- fieldnotes
- cuckoo-nest
- dialtone
- smoketest
- randomwalk
- countersign
- masquerade
- headcount
- party-line
- jobber
- cassette
- entropix
- secrethandshake
- formcheck
- sketchbook
- trunkline
- taskmill
- seedling
- deadbolt
- mortise
- gridwork
- ringside
- uplink
- metronome
- mocktail
- primesieve
- tumbler
- dovetail
- doubledeck
- backhaul
- workerbee
- spyglass
- factorize
- hasp
- sprocket
- heapster
- crosstalk
- hivemind
- euclidean
- pixelpress
- tooltippet
- hopscotch
- swarmlet
- checklist
- imagemill
- trellis
- hoverboard
- beetree
- hairpin
- threadbare
- coverall
- thumbnailer
- warpweft
- nodelink
- parsewell
- asyncwell
- testbed
- curveball
- downsizer
- sidedrawer
- beeline
- tokenstream
- awaitable
- fuzzball
- geometrix
- cropcircle
- plumbline
- breadbox
- heuristica
- lexling
- promiseland
- propcheck
- polygonal
- colormix
- trowel
- topsoil
- astwalk
- futuresmith
- goldenfile
- raycaster
- palettekit
- gimlet
- focuspocus
- syntaxe
- deferral
- matchmaker
- collider
- hexpaint
- mallet
- bitroar
- yamlette
- parallelogram
- picklejar
- quadrant
- glyphcutter
- spokeshave
- localehero
- paper-trail
- tomlbrew
- screengrab
- octant
- typefoundry
- burnish
- pluralis
- ground-truth
- jsonette
- visualdiff
- kdtreehouse
- vectorium
- lapidary
- localist
- blind-spot
- xmlpickle
- channelsurf
- a11ycheck
- voronoid
- bitmapper
- phrasebook
- soft-landing
- markdownish
- troupe
- crashdummy
- triangulate
- wavelet
- hailstone
- coinpurse
- fast-lane
- inkparse
- postbox
- sandbag
- soundbed
- yardstick
- warm-start
- treesaw
- ticketbooth
- sandcastle
- white-noise
- tuneup
- sirocco
- tapemeasure
- cold-start
- shuntyard
- waitlist
- testpilot
- noisemaker
- lintroller
- leafblower
- rubber-duck
- stunt-double
- tight-loop
- oxbow
- pegboard
- chompy
- geocodex
- orbo
- parsely
- @tidepool/session
- left-shift
- quillet
- snapcrate
- ratelimbo
- brokerage
- retrograph
- cachet
- mergemaid
- diffwit
- skeletonkey
- loglodyte
- tarbell
- streamliner
- ferrule
- threadneedle
- zipwire
- @almanac/tz
- semverly
- cronwheel
- enumwise
- tidewatch
- bytebarn
- vowelshift
- idempotato
- schemaplane
- mockturtle
- epochal
- argparsley
- pathwright
- hexerei
- interlude
- quorumate
- notarium
- kiloquery
- throttlebody
- signpost
- bundlesmith
- pixelsieve
Related generators
Software Name Generator
Brandable names for apps, tools and platforms
App Name Generator
Short, brandable names for mobile and web apps
AI Agent Name Generator
Memorable names for assistants, bots and autonomous agents
Chatbot Name Generator
Names for AI assistants, support bots and virtual agents
Hacker Name Generator
Handles, aliases and cyberpunk hacker names
Device Name Generator
Names for Phones, Laptops, Gadgets, and Hardware Products
More in Technology & Internet
5 Letter Name Generator
Short five-letter names for usernames, brands and characters
Groupchat Name Generator
Cool, Aesthetic, and Short Groupchat Names
Fashion Blog Name Generator
Brandable Names for Style Blogs and Fashion Sites
TikTok Name Generator
Cute, aesthetic and funny TikTok usernames that fit
YouTube Group Name Generator
Channel Names for Friend Groups, Squads and Collabs
Streamer Name Generator
Persona Names Built to Become a Streaming Brand