How to Catch the Mistakes Spellcheck Misses
Read the notice below once, at normal speed, and count the mistakes. It has 29. Hunspell, the spellchecker inside LibreOffice and Firefox, found 7 of them; Aspell found 8; and between them the four dictionaries we tried let every homophone, every doubled word, every agreement slip and the “would of” through, because each of those produces a real word and a spellchecker only asks whether a word is real. What catches the other 21 is a handful of searches (each homophone pair, “of” after could/would/should, doubled words) and one slow read aloud. The rest of this page is that method, built from what the test let through.
Dear members,
Thank you for you’re patience while we recieve the the new equipment. The principle hall will be closed form Monday untill Friday, and we would of told you sooner if the dates had been definately confirmed. Please keep quite in the library, as several people has complained about noise; its a real problem and it effects everyone. Volunteers who loose there badge should collect a replacement at the front desk, then walk passed the office to seperate the recycling. The trip to london is to far for the casual link between weather and attendance to be tested, but the organisers recognized that the colour of the posters and the color of the badges should match. Lunch will be served in the refractory, and the english class was lead by more then twenty volunteers. Their will be a meeting at 6pm; these meeting is informal and it’s outcomes will go on the notice bored.
The notice was written for this test and salted with mistakes of eleven kinds: wrong homophones (their for there, its for it’s), wrong words that happen to be real words (form for from, quite for quiet), “would of”, a doubled “the the”, two agreement errors, two lower-case proper nouns, four genuine misspellings, British and American spellings mixed in one text, and a rare real word used in place of another (refractory for refectory, the dining hall). The full key is at the end of the next section, for anyone who counted.
Twenty-one errors, four dictionaries, no flags
The passage went through four spellcheckers from the command line: Hunspell 1.7.2 with its American (en_US) and British (en_GB) dictionaries, and Aspell 0.60.8 with the same two. Each was asked to list the words it did not recognise, and the lists are short enough to print in full.
| Checker | Words flagged | Errors caught | False alarms |
|---|---|---|---|
| Hunspell en_US | recieve, untill, definately, seperate, london, organisers, colour, 6pm | 7 of 29 | 1 (6pm) |
| Hunspell en_GB | recieve, untill, definately, seperate, london, color, english, 6pm | 7 of 29 | 1 (6pm) |
| Aspell en_US | recieve, untill, definately, seperate, london, organisers, colour, english | 8 of 29 | 0 |
| Aspell en_GB | recieve, untill, definately, seperate, london, recognized, color, english | 8 of 29 | 0 |
hunspell -d en_US -l, hunspell -d en_GB -l, aspell list -l en_US and aspell list -l en_GB on the passage above. “Caught” counts the mixed British and American spellings as one error each, because each dictionary flagged the half spelled in the other variety.All four agreed on the four genuine misspellings and on lower-case london, and after that they diverge only in small ways. Hunspell’s American dictionary accepted lower-case english while the British one and both Aspell dictionaries rejected it, and Hunspell alone objected to “6pm”, which was not a mistake. The variety flags need a word of caution: the American dictionaries flagged organisers and colour, the British ones flagged color and, in Aspell’s case, recognized (Hunspell’s British dictionary accepts both -ise and -ize), and none of them said “this document mixes two varieties”. They flagged the words as if they were misspelled, and a writer who did not know which dictionary was loaded could easily “correct” the wrong half.
The other side of the ledger is the point of the exercise. Twenty-one of the 29 errors sailed through every checker, and they were the ones that change meaning: every one of the twelve homophones, all four real-word slips, both agreement errors, the doubled word, “would of” and the misused rare word.
| Kind of error | Planted | Caught by Hunspell en_US | Examples in the passage |
|---|---|---|---|
| Wrong homophone | 12 | 0 | you’re, principle, its, effects, loose, there, passed, to, lead, Their, it’s, bored |
| Real-word slip (one letter out) | 4 | 0 | form, quite, casual, then |
| Genuine misspelling | 4 | 4 | recieve, untill, definately, seperate |
| Agreement | 2 | 0 | several people has; these meeting is |
| Lower-case proper noun | 2 | 1 | london (caught), english (missed) |
| British and American mixed | 2 | 2 | organisers / recognized; colour / color |
| Doubled word | 1 | 0 | the the |
| “Would of” | 1 | 0 | would of told you |
| Rare real word misused | 1 | 0 | refractory (for refectory) |
The full answer key (29 errors)
you’re (your), recieve (receive), the the (the), principle (principal), form (from), untill (until), would of (would have), definately (definitely), quite (quiet), several people has (have), its (it’s), effects (affects), loose (lose), there (their), passed (past), seperate (separate), london (London), to (too), casual (causal), organisers with recognized (one variety), colour with color (one variety), refractory (refectory), english (English), lead (led), then (than), Their (There), these meeting (this meeting), it’s (its), bored (board).
The reason is mechanical. A spellchecker splits the text into words and, for each one, asks whether the dictionary contains it, either directly or as a listed base word plus an allowed ending (walk + -ed). Hunspell also knows about capitals, which is why lower-case london was caught, and the two programs split words and numbers slightly differently, which is presumably why “6pm” bothered Hunspell and not Aspell. What neither of them does is read the sentence. Form is in every dictionary, so “closed form Monday” is fine by it; their, there and they’re are all real, so any of the three in any position passes. “People”, “has”, “these” and “meeting” are all good words too; the mistake lives in the relationship between them, and a lookup has no idea what a relationship is. “Would of” is the purest case: of is one of the commonest words in the language, and nothing in a dictionary says that after would it is almost always a mishearing of have.
Grammar checkers built into word processors and browser add-ons do attempt some of this. We did not test them here, and they work from patterns rather than meaning, so the passes below are still worth doing after one has run. Homophones exist in such numbers because English spelling froze while pronunciation kept moving (why English spelling is so weird tells that story), and the more common a word, the more likely it has a sound-alike and the less likely any tool will catch the swap.
Spellcheck twice, once in each variety
The first pass is the spellchecker, and it is worth doing properly, because it is cheap and it clears the noise before the slower passes. Set the document language to British or American English before you start; in LibreOffice and most editors the language sits in the status bar or under a Tools or Language menu. If you prefer the command line, save the text as a plain file and run hunspell -d en_GB -l notice.txt (or en_US): it prints only the words it does not know, which is exactly the list in our table. Fix every flag, and look at every capitalised word and every lower-case name while you are there, since the test showed that a lower-case english is not something every dictionary will catch for you.
Then run it a second time in the other variety. The new flags are the words spelled in the wrong variety for your document: in our test the American dictionary surfaced organisers and colour, the British one surfaced color. Whichever run produces the shorter list tells you which variety the text mostly uses; make the rest match. If the choice itself is open, colour or color sets out when each is expected, and a list of the main British and American spelling differences covers the main families beyond -our and -ize.
Search for the words you cannot see
The twelve homophones and four real-word slips were the largest group in the test and no tool touched them, so they get the most mechanical treatment: you search for them rather than read for them, because your eye reads the word you meant. Open Find (Ctrl+F or Cmd+F), tick “whole words” if there is such an option, and type each word from the table below in turn. At every hit, apply the substitution test: if “it is” fits, the word is it’s; if “they are” fits, they’re; if “belonging to them” fits, their. It takes about a minute per pair.
| Search for | Confused with | Test at each hit |
|---|---|---|
| their, there, they’re | each other | “belonging to them” / “in that place” / “they are” |
| its, it’s | each other | if “it is” or “it has” fits, it’s; otherwise its |
| your, you’re | each other | if “you are” fits, you’re |
| to, too, two | each other | too means also or excessively; two is the number |
| then, than | each other | than compares; then is time or consequence |
| lose, loose | each other | loose rhymes with goose and describes a fit or a knot |
| affect, effect | each other | affect is almost always the verb, effect the noun |
| principle, principal | each other | a principle is a rule; principal means main, or the head of a school |
| passed, past | each other | passed is the verb; walk past, in the past |
| lead, led | each other | led is the past tense; lead as a verb rhymes with need |
| form, from | each other | one-letter slip; search for the one you did not mean |
| quite, quiet | each other | quiet is silence; quite is a degree |
| casual, causal | each other | causal is cause and effect; casual is relaxed |
| accept, except | each other | accept is to receive; except is apart from |
| advice, advise | each other | advise is the verb; advice the noun |
| whose, who’s | each other | if “who is” fits, who’s |
| were, where, we’re | each other | “we are” / a place / the past of are |
| weather, whether | each other | whether introduces a choice |
| bored, board | each other | a board is a plank or a committee |
| brake, break | each other | a brake stops a vehicle |
| complement, compliment | each other | a complement completes; a compliment praises |
| stationary, stationery | each other | stationery with an e is envelopes |
| discreet, discrete | each other | discrete means separate; discreet means tactful |
The list is deliberately short. A page of two hundred homophones is accurate, but nobody searches for two hundred words, and searching for these twenty or so is a realistic five minutes. Two more searches belong in the same pass because they are just as mechanical. First, “of” after a modal verb: five searches, “could of”, “would of”, “should of”, “must of”, “might of”, and each hit becomes have (if it is dialogue and the speaker is meant to sound that way, leave it, but know you left it). Second, doubled words: “the the”, “and and”, “to to”, “a a”, “is is”, “of of”, “in in”, “that that” (the last is sometimes correct: “the fact that that happened”). In an editor with regular-expression search, the pattern \b(\w+) \1\b finds every doubled word in one go; LibreOffice’s Find & Replace has a “Regular expressions” checkbox for this.
Listen for the rest
Three kinds of error in the test cannot be searched for, because there is no wrong word to type into the box: the two agreement errors, the misused rare word, and anything missing altogether. These need a person, and the order below is the one that worked on the notice.
- Find each verb’s subject. Go sentence by sentence, put a finger on the verb and ask “who or what does this?” The traps are nouns that look singular but are plural (people, children, staff in British usage), a plural noun sitting between a singular subject and its verb (“the box of badges are”), and this/these and that/those in front of a noun of the wrong number.
- Look up every rare word you used. If you use a word less than once a month, check it in a dictionary before it goes out. Refractory means stubborn or heat-resistant; it is a perfectly good word, which is why nothing flagged it, and it is not where lunch is served.
- Read the whole text aloud, slowly. Or have the computer read it: most operating systems and browsers have a “read aloud” or “speak selection” feature, and the flat mechanical voice is an advantage, because it reads what is there rather than what you meant. Missing words, extra words, wrong plurals and clumsy sentences are heard far more easily than they are seen. Reading aloud comes last because by then the text is clean enough for your ear to concentrate, and because it is weakest on precisely the homophones, which sound identical; that is why the searches come first.
Four sentences from the notice, corrected
“The principle hall will be closed form Monday untill Friday.” The spellchecker catches untill and nothing else. The homophone search for principle produces one hit; the test asks whether “rule” fits (“the rule hall”), and it does not, so the word is principal, main. The search for form produces a hit that reading aloud would also catch: “closed form Monday” does not sound like English.
“We would of told you sooner.” Nothing here is misspelled and nothing is out of any dictionary. The modal search finds “would of” and it becomes “would have”. This is the error most people are surest they never make, and it is also the one that survives spellcheck most reliably, because of is never wrong on its own.
“Several people has complained about noise; its a real problem and it effects everyone.” Three errors, zero flags. The agreement pass puts a finger on has and asks who complained: people, plural, so have. The its search finds a hit; “it is a real problem” fits, so it’s. The effect search finds effects used as a verb; the verb is affects.
“Lunch will be served in the refractory.” Every pass lets this through except the rare-word lookup. Refractory is a real word, spelled correctly, in every dictionary, and no search for common confusions includes it. A refectory is a dining hall; refractory is an adjective for a stubborn child or a heat-resistant brick.
What a word-game list makes of the same errors
There is a second kind of dictionary check that many readers meet without noticing: the word list behind a word game, which accepts or rejects a word on the same is-it-in-the-list principle, with no sense of capitals, apostrophes or context. We ran the 29 wrong words against our own list, a 172,446-word list built from the public-domain ENABLE word list with offensive words removed (how we check words describes it), and it accepted 20 of them. Every homophone and every real-word slip is in there, as are refractory, both halves of colour and color, and english, which the list holds in lower case because it holds everything in lower case.
The nine it rejected are instructive for a different reason. Four are the genuine misspellings, which is the one thing every dictionary agrees on. The other five are rejected for reasons that have nothing to do with being wrong: london because the list has no proper nouns, you’re and it’s because it has no apostrophes, to because it has nothing under three letters, and “would of” only because a two-word phrase is not a word. A game list, in other words, is a slightly narrower spellchecker with the same blind spot.
When a search list is not enough
The searches find only what you search for. Our table has about twenty pairs; a writer who habitually confuses ensure and insure, or precede and proceed, needs to add them, and the honest way to build the list is to keep the corrections other people make to your writing. The two-variety spellcheck tells you that a text is mixed but not which half is wrong; you have to know what the document is for. Reading aloud takes as long as the text takes to read, which for a long report is real time. And the spellchecker itself produces false alarms (Hunspell on “6pm”); after a few of those a writer starts clicking “ignore” reflexively, which is how seperate survives.
Three results in the test were not what we expected, and each changed the method a little. The first was how uniform the failures were: it seemed likely that one of the four dictionaries would catch at least one homophone by accident, perhaps a rare form, and none did; apart from the variety words, lower-case english and one false alarm, the four lists of flags were identical. The second was that “english” split the checkers, which is why the capitals check now sits inside the spellcheck pass rather than being left to the tool. The third was that the British and American flags looked exactly like misspellings, with nothing in the output to say “this is a variety issue”, which is why the second run in the other variety became a step of its own.
If a reader is only going to do three things after spellcheck, this is the order we would keep them in, based on what the test let through. First, the homophone search from the table, because twelve of the 29 errors were homophones and no other check reliably finds them. Second, the modal and doubled-word searches, which together take a minute and catch two errors that everyone makes and nobody sees. Third, reading aloud, for the agreement errors and the missing or extra words that no search can be written for. The rare-word lookup is the check we would add fourth, since it found the one error in the passage that nothing else could.
The checklist and the script
The checklist below is one A4 page: the three passes, the search list with substitution tests, and the doubled-word pattern, with a tick box beside each line. It is meant to sit beside the keyboard until the passes become habit. Download the proofreading checklist (PDF).
For anyone comfortable with a terminal, the script below does the searches from the middle pass on a plain-text file in one go. It prints how many times each watched word appears so that you can check the hits by eye, and it prints every doubled word and every “would of” outright. Save it as proof.py and run python3 proof.py notice.txt; on our test passage it reported eleven words to check, the doubled “the the” and the “would of”.
import re, sys
text = open(sys.argv[1]).read()
watch = ["their", "there", "they're", "its", "it's", "to", "too", "your", "you're",
"then", "than", "lose", "loose", "affect", "effect", "form", "quite", "passed"]
for w in watch:
n = len(re.findall(r"\b" + re.escape(w) + r"\b", text, flags=re.I))
if n:
print(f"{w}: {n} to check by eye")
for m in re.finditer(r"\b(\w+)\s+\1\b", text, flags=re.I):
print("doubled word:", m.group(0))
for m in re.finditer(r"\b(could|would|should|must|might) of\b", text, flags=re.I):
print("probably 'have':", m.group(0))
The wrong words that pass are common words, and common words are the ones a proofreader’s eye skips most easily. The same list that accepted form and quite is the one behind our sixty-second word game, if you want to sharpen that eye; for a document that has to go out today, do the searches.
New to The Verbarium? Follow the reading path, with tools and printables


