"Should have" expresses an OBLIGATION or EXPECTATION not fulfilled in the past (criticism or regret); "could have" = past capacity or possibility not acted upon; "would have" = hypothetical result of a past conditional.
SHOULD HAVE + past participle: expresses (1) UNFULFILLED OBLIGATION OR EXPECTATION: something that WAS THE RIGHT THING to do in the past, but was NOT done. "You should have told me earlier" = (it was your obligation / the right thing) to tell me earlier, but you did not. Implies criticism or regret. (2) REASONABLE EXPECTATION (deduction): "The package should have arrived by now" = it is reasonable to expect the package has already arrived (based on evidence). SHOULD HAVE = "the right/expected thing was X, but X did not happen (or we do not know if it did)." Directly contrasts with SHOULDN'T HAVE: "You shouldn't have said that" = you should not have said that (you said it and it was a mistake).
The project manager should have flagged the dependency risk in the initial scoping document — catching it at this stage is significantly more costly.
They should have conducted a thorough market validation study before committing the full development budget to a product with so many unverified assumptions.
The audit report should have been shared with the executive committee at least two weeks before the regulatory submission deadline.
COULD HAVE + past participle: expresses past CAPACITY OR POSSIBILITY not acted upon. "She could have applied for the position" = she could have applied (she had the capacity/opportunity), but she did NOT. Unlike SHOULD HAVE, it does not imply it was HER OBLIGATION — only that it was POSSIBLE. "The system could have crashed" = the system could have collapsed (but it did not). WOULD HAVE + past participle: expresses the HYPOTHETICAL RESULT of an unfulfilled past condition (third conditional). "If you had told me, I would have helped" = if you had told me (you did not), I would have helped (I did not because you did not tell me). WOULD HAVE = hypothetical past consequence. Does not imply criticism — it is a hypothetical deduction about what would have happened.
With a more agile development approach, the team could have delivered the initial prototype in half the time without sacrificing the core functionality.
If the due diligence findings had been shared earlier in the process, the investment committee would have structured the deal terms very differently.
The partnership would have been highly strategic for both parties, but the negotiations broke down over disagreements about revenue-sharing structure.
Common mistake
Three classic errors: (1) "I should of done it" = INCORRECT. The error comes from pronouncing the contraction "should've" (should have) as "should of." The correct spelling is always: SHOULD HAVE or SHOULD'VE (never "should of"). Same: "could of" = INCORRECT, correct "could have." "Would of" = INCORRECT, correct "would have." (2) Confusing SHOULD HAVE (criticism) with COULD HAVE (possibility): "She should have applied" = it was the right thing / her obligation to apply (criticism implies she did not and it was a mistake). "She could have applied" = she had the possibility of applying (neutral, does not imply it was her obligation). (3) WOULD HAVE without a conditional clause: "It would have been great" = grammatically correct if an implied conditional exists. In absolute isolation it can sound incomplete.
Trick to remember it
The SEMANTIC KEY for each perfect modal: SHOULD HAVE = "it was the CORRECT decision/action, but it did not happen." (obligation or expectation not met + criticism/regret). COULD HAVE = "it was POSSIBLE, but it did not happen." (past capacity or possibility not acted upon, neutral). WOULD HAVE = "it WOULD HAVE BEEN the result, under a condition that was not met." (past hypothesis, part of the third conditional). Substitution test: "It was the right thing to do, but it did not happen" = SHOULD HAVE. "It was possible but it did not happen" = COULD HAVE. "It would have been the result IF the condition had been met" = WOULD HAVE.
Quick rule
Should have = obligation or expectation NOT met (criticism/regret). Could have = possibility NOT realized (neutral). Would have = hypothetical result of a past conditional. All three: NEVER "should of / could of / would of" — always HAVE.
Did you know?
The error of writing "should of" instead of "should have" is one of the most frequent spelling errors in native English — especially in informal written English (texts, social media, informal emails). The reason is strictly phonetic: when English speakers pronounce "should have" quickly, the contraction "should've" sounds exactly like "should of" (the "v" of "'ve" assimilates to the "f" of "of" in fluent speech). The result is that native English speakers, who pronounce it perfectly, misspell it because their spelling memory is mapped onto their phonetic representation. This phenomenon — spelling error caused by phonetic identity — is called "functional homophones" or "homophonic merger error." Other classic examples: "your/you're," "there/their/they're."
Exercise 1 · Pick the right one
The client presentation _____ been scheduled for a later date — the team clearly had insufficient time to prepare a compelling pitch at the level the account required.
Exercise 2 · Pick the right one
If the early-warning data had been shared transparently across departments, the leadership team _____ avoided the costly operational disruption that occurred in Q2.
Exercise 3 · Form the word
Should have = obligation or expectation NOT met (criticism/regret). Could have = possibility NOT realized (neutral). Would have = hypothetical result of a past conditional. All three: NEVER "should of / could of / would of" — always HAVE.
Three classic errors: (1) "I should of done it" = INCORRECT. The error comes from pronouncing the contraction "should've" (should have) as "should of." The correct spelling is always: SHOULD HAVE or SHOULD'VE (never "should of"). Same: "could of" = INCORRECT, correct "could have." "Would of" = INCORRECT, correct "would have." (2) Confusing SHOULD HAVE (criticism) with COULD HAVE (possibility): "She should have applied" = it was the right thing / her obligation to apply (criticism implies she did not and it was a mistake). "She could have applied" = she had the possibility of applying (neutral, does not imply it was her obligation). (3) WOULD HAVE without a conditional clause: "It would have been great" = grammatically correct if an implied conditional exists. In absolute isolation it can sound incomplete.
The SEMANTIC KEY for each perfect modal: SHOULD HAVE = "it was the CORRECT decision/action, but it did not happen." (obligation or expectation not met + criticism/regret). COULD HAVE = "it was POSSIBLE, but it did not happen." (past capacity or possibility not acted upon, neutral). WOULD HAVE = "it WOULD HAVE BEEN the result, under a condition that was not met." (past hypothesis, part of the third conditional). Substitution test: "It was the right thing to do, but it did not happen" = SHOULD HAVE. "It was possible but it did not happen" = COULD HAVE. "It would have been the result IF the condition had been met" = WOULD HAVE.
Bryan López
Founder of SpeakUP Academy