pluralize
Pluralize and singularize any English word based on a count, with customizable rules.
Repository Health
Technical Analysis
pluralize is a zero-dependency JavaScript library that converts words between singular and plural form using an ordered list of regex-based rules layered with explicit irregular-word and uncountable-word overrides (“person” → “people”, “sheep” stays “sheep”). A single pluralize(word, count, inclusive) call handles the common case of formatting a count alongside a word.
Because the rule set is exposed and mutable (addPluralRule, addSingularRule, addIrregularRule, addUncountableRule), consumers can extend or override the built-in English rules for domain-specific vocabulary without forking the library, which is why it’s a common dependency inside larger NLP, ORM, and code-generation tools.
What You Get
pluralize(word, count?, inclusive?)to pluralize or singularize based on a count, optionally prefixing the count itselfpluralize.plural(word)/pluralize.singular(word)for direct, count-independent conversionpluralize.isPlural(word)/pluralize.isSingular(word)for detection without conversionpluralize.addPluralRule(rule, replacement)/addSingularRuleto register custom regex-based conversion rulespluralize.addIrregularRule(single, plural)for exception pairs that don’t follow any regular patternpluralize.addUncountableRule(word)to mark a word as invariant between singular and plural
Common Use Cases
- Generating human-readable counts in UI copy (e.g. “1 comment” vs “3 comments”) without hardcoding plural forms
- Deriving table/model names from singular class names in ORMs and code generators
- Normalizing user search terms to a canonical singular or plural form before matching
- Building domain-specific vocabularies (medical, legal, gaming terms) by registering custom irregular/uncountable rules on top of the English defaults
Under The Hood
Architecture The entire library is a single UMD-wrapped file (pluralize.js, ~500 lines) exposing a function object. Internally it keeps four ordered collections — pluralRules, singularRules, uncountables, and irregularPlurals/irregularSingles — and a replaceWord/checkWord pair of higher-order functions that apply them in the correct precedence (irregular and uncountable lookups first, then the most-recently-added regex rule that matches). The bundled English rule set (addPluralRule/addSingularRule/addIrregularRule calls at the bottom of the file) is itself just data fed through the same public API consumers use to extend it, so there’s no special-cased internal path.
Tech Stack Zero runtime dependencies — the entire implementation is vanilla JavaScript wrapped in a UMD shim supporting CommonJS, AMD, and browser globals simultaneously. Tests use Mocha/Chai with Istanbul for coverage, and linting is done via semistandard. No build step is required since the published file is the source file.
Code Quality test.js runs a large table-driven suite of singular/plural word pairs alongside edge cases (case restoration, custom rule registration, uncountables), giving broad regression coverage for a rule-based system where a single regex change can silently break unrelated words. The rule precedence logic (restoreCase, sanitizeRule) is compact but has been stable since the last major version; the project has seen no commits in the last year, so any newly discovered English edge cases won’t be fixed upstream.
API Design The core function overloads pluralization and singularization based on the count argument’s relationship to 1, which keeps call sites terse (pluralize('item', n)) but means the same function name does two conceptually different things depending on the second argument — the explicit .plural()/.singular() methods exist specifically to avoid that ambiguity when the caller already knows the direction. The rule-registration functions accept both string and RegExp rules, letting simple cases stay declarative while power users get full regex control.
Used by 24 apps in this directory
Plasmic
CMS · Design Tools · Low Code Platforms
The open-source visual builder that lets teams design React apps and websites with drag-and-drop while integrating seamlessly with your codebase.
Sink
Analytics · Bookmarks Archiving
Serverless link shortener with real-time analytics, powered by Cloudflare
strapi
CMS
Open-source headless CMS that auto-generates REST and GraphQL APIs from your content models, with a fully customizable admin panel you control.
Trieve
AI Development · Developer Tools · Search
All-in-one self-hostable platform for hybrid search, RAG, recommendations, and analytics built on Rust and Qdrant.
twenty
CRM
The open-source CRM you build, ship, and version like the rest of your stack — with customizable objects, AI agents, and a TypeScript SDK.
Webiny JS
Blogging · CMS · Ecommerce
Open-source, self-hosted CMS on AWS serverless — a TypeScript framework you extend with code, not a product you configure through a UI.