How to Pluralize English Words Correctly (and Singularize Them Back)
English plural rules made simple: regular -s and -es, consonant plus y to -ies, irregulars like child and mouse, and why pluralize matters in code.
How to Pluralize English Words Correctly (and Singularize Them Back)
English plurals look easy until you actually count the exceptions. Add an -s and you are right most of the time, but "city" does not become "citys," "box" does not become "boxs," and "child" refuses every rule you can think of. I have watched senior engineers argue for ten minutes over whether a database table should be analyses or analysises, so the messiness is real and it costs time. This post walks through the rules that govern English plurals, the irregulars that ignore those rules, and why getting plurals right matters as much in code as it does in prose.
The regular rules: -s, -es, and the y trap
Most nouns just take an -s: cat → cats, book → books, idea → ideas. The first exception is sound-based. When a word already ends in a hissing or hushing sound, a bare -s would be unpronounceable, so English inserts an -e. Any noun ending in s, x, z, ch, or sh takes -es:
- box → boxes
- bus → buses
- buzz → buzzes
- church → churches
- dish → dishes
The single most useful rule to memorize is the y rule, because it is the one people get wrong constantly. The deciding factor is the letter directly before the y. A consonant plus y becomes -ies, while a vowel plus y just takes a plain -s. That one distinction settles a huge share of spelling mistakes:
- city → cities (consonant before y)
- baby → babies
- country → countries
- but: boy → boys (vowel before y)
- day → days
- key → keys
So "citys" and "babys" are wrong, and "boies" or "daies" would be wrong too. Same letter, opposite treatment, decided entirely by what sits in front of it.
The -f and -fe words that switch to -ves
A cluster of words ending in -f or -fe drop that ending and take -ves instead:
- leaf → leaves
- knife → knives
- wolf → wolves
- life → lives
- half → halves
The catch is that this is not a universal rule, and pretending it is gives you nonsense like "rooves" or "chefs" spelled "cheves." Plenty of -f words keep the f and add a plain -s: roof → roofs, belief → beliefs, chef → chefs, cliff → cliffs. There is no reliable phonetic test that tells you which group a word belongs to, so the honest approach is a whitelist of the words that change and a plain -s for everything else. That is exactly how a good converter handles it rather than guessing.
Irregulars: the words that ignore every rule
Then there are the nouns that follow no suffix logic at all. These are simply memorized, because they descend from older grammar that the regular system never absorbed. The native English oddities are the famous ones:
- child → children
- man → men
- woman → women
- foot → feet
- tooth → teeth
- mouse → mice
- goose → geese
- person → people
On top of those sit the Latin and Greek loanwords that trip up even confident writers:
- datum → data
- cactus → cacti
- analysis → analyses
- criterion → criteria
- phenomenon → phenomena
And a third group does not change at all. Zero-plural nouns keep one form for both numbers: sheep, fish, deer, moose, series, species, aircraft. Beside them are true uncountables like information, equipment, furniture, and advice, which have no normal plural in the first place. "Sheeps" and "informations" are not words. A converter that knows these groups leaves them untouched instead of inventing a plural that does not exist.
If you want to see the rules and irregulars applied to your own words side by side, the Pluralizer runs every case above in your browser, both directions, and keeps your capitalization so Child comes back as Children and BOX comes back as BOXES.
Why programmers care about plurals
Plurals are not just a grammar-class problem. They are baked into how software gets named, and inconsistency there causes real friction. A few examples from everyday backend work:
Database tables. Many teams pluralize table names (users, orders, categories) while singularizing the model that maps to them (User, Order, Category). The convention only helps if it is applied consistently, and the tricky cases break naive logic: a person model usually maps to a people table, not persons, and analysis should map to analyses, not analysises.
ORM and framework conventions. Rails, Laravel, and Django all infer plural table names from singular class names automatically. They each ship an inflector library precisely because trailing-s concatenation is wrong so often. When you fight the convention by hand, you reintroduce the bugs the framework was trying to remove.
API routes and collections. REST conventions favor plural collection paths (/api/products, /api/categories). A route generated by gluing an "s" onto the model name will happily produce /api/categorys or /api/childs, and now your client code and your server disagree.
The failure mode is always the same: someone strips or appends a literal "s" and the irregulars slip through. That turns analyses into analyse, people into peopl, and data into datum in the wrong direction. A converter with a real irregular table and a proper singularize mode catches these, which is why pasting a column of model names through one beats hand-editing them.
A worked example you can copy
Here is a single pass through a mixed list, the kind you might paste from a schema or a vocabulary sheet, with the correct plural beside each word:
| Singular | Plural | Rule | | --- | --- | --- | | product | products | plain -s | | box | boxes | -es after x | | category | categories | consonant + y to -ies | | leaf | leaves | -f to -ves | | roof | roofs | -f keeps f | | person | people | irregular | | analysis | analyses | Greek loanword | | sheep | sheep | zero-plural | | information | information | uncountable |
Read down that column and you can feel why one blanket rule never works: nine words, six different behaviors. Once you have a clean column like this, the Word Counter is handy for confirming your list length matches between input and output, so you know nothing dropped out during the conversion.
Wrapping up
The whole of English pluralization comes down to a short hierarchy: check the irregular table first, then check for zero-plurals and uncountables, then apply the y rule and the -f rule, and finally fall back to -es or plain -s. Hold that order in your head and you will spell almost any plural correctly, whether you are writing a sentence or naming a table. And when you have a whole list to handle at once, let a converter run the hierarchy for you instead of doing it word by word in your head.
Made by Toolora · Updated 2026-06-13