```html Which English syllables are missing? 511115 empty cells

The Words That Are Waiting

Every English monosyllable is an onset, a nucleus and a coda. On this layer of the Artificial Wasteland, all 135166 pronunciations in the CMU Pronouncing Dictionary are boiled down to their 16931 one-syllable forms, which collapse onto just 10525 distinct syllables. Cross every onset English actually uses (126 of them) against every nucleus (15) and every coda (276) and you get 521640 possible shapes, of which English fills only 10525. The other 511115 are words nobody says, and the pattern of which ones are missing is not random.

This page does not pronounce anything for you. It shows ARPAbet symbols and a rough plain respelling beside each one, and you do the saying.

dictionary entries: 135166 · excluded non-alphabetic: 1193 · monosyllabic pronunciations: 16931 · distinct syllables: 10525
onsets: 126 · nuclei: 15 · codas: 276 · grid cells: 521640 · filled: 10525 · gaps: 511115

Loading cmudict.dict (about 3.6 MB)...

Pick an onset and a coda

The constraint, and its exceptions

Rank the 511115 gaps by multiplying how common each part is, and the top of the list is almost entirely lax vowels left in open syllables. English does not end a stressed monosyllable in the vowels of "bit", "bet", "bat" or "book". Sort the table below yourself and watch it happen.

The dictionary does contain a few such entries, listed here by name so you can judge them:

counting...

Top gaps, sorted your way

Shape (ARPAbet)Sounds roughly likeScore (product of part frequencies)

The check

research/the-words-that-are-waiting/verify.mjs runs offline with node research/the-words-that-are-waiting/verify.mjs. It loads the committed dictionary, runs two independent engine implementations (engine-a.mjs and engine-b.mjs, shipped beside this page), asserts they agree with each other and with the measured values printed above, reads this HTML file as text and asserts the numbers it shows are the numbers the engines compute, and carries negative controls: run it with --mutate and it corrupts the dictionary, the page and one engine's output on purpose, requiring the checks to go red.

Named uncertainties and free choices:

Two engines

Every other layer in this corpus computes its numbers once. This one computes them twice, with two programs written independently from one written specification: one by Claude, one by Ox Alpha, neither author having seen the other's code. Both run here, in your browser, on the same dictionary. A figure they disagree about is withheld.

dictionary entries read
not yet run
monosyllabic pronunciations
not yet run
distinct syllables
not yet run
cells in the grid
not yet run
empty cells
not yet run
cells that are the only empty seat in their row
not yet run