Could have, should have, would have

Perfect English Grammar

These past modal verbs are all used hypothetically, to talk about things that didn't really happen in the past.

Could have + past participle

1: Could have + past participle means that something was possible in the past, or you had the ability to do something in the past, but that you didn't do it. (See also modals of ability.)
  • I could have stayed up late, but I decided to go to bed early.
  • They could have won the race, but they didn't try hard enough.
  • Julie could have bought the book, but she borrowed it from the library instead.
  • He could have studied harder, but he was too lazy and that's why he failed the exam.
Couldn't have + past participle means that something wasn't possible in the past, even if you had wanted to do it.
  • I couldn't have arrived any earlier. There was a terrible traffic jam (= it was impossible for me to have arrived any earlier).
  • He couldn't have passed the exam, even if he had studied harder. It's a really, really difficult exam.
2: We use could have + past participle when we want to make a guess about something that happened in the past. (See also modals of probability.) In this case, we don't know if what we're saying is true or not true. We're just talking about our opinion of what maybe happened.

Why is John late?
  • He could have got stuck in traffic.
  • He could have forgotten that we were meeting today.
  • He could have overslept.
We can also choose to use might have + past participle to mean the same thing:
  • He might have got stuck in traffic.
  • He might have forgotten that we were meeting today.
  • He might have overslept.
Should have + past participle

1: Should have + past participle can mean something that would have been a good idea, but that you didn't do it. It's like giving advice about the past when you say it to someone else, or regretting what you did or didn't do when you're talking about yourself.

Shouldn't have + past participle means that something wasn't a good idea, but you did it anyway.
  • I should have studied harder! (= I didn't study very hard and so I failed the exam. I'm sorry about this now.)
  • I should have gone to bed early (= I didn't go to bed early and now I'm tired).
  • I shouldn't have eaten so much cake! (= I did eat a lot of cake and now I don't feel good.)
  • You should have called me when you arrived (= you didn't call me and I was worried. I wish that you had called me).
  • John should have left early, then he wouldn't have missed the plane (= but he didn't leave early and so he did miss the plane).
2: We can also use should have + past participle to talk about something that, if everything is normal and okay, we think has already happened. But we're not certain that everything is fine, so we use 'should have' and not the present perfect or past simple. It's often used with 'by now'.
  • His plane should have arrived by now (= if everything is fine, the plane has arrived).
  • John should have finished work by now (= if everything is normal, John has finished work).
We can also use this to talk about something that would have happened if everything was fine, but hasn't happened.
  • Lucy should have arrived by now, but she hasn't.
Would have + past participle

1: Part of the third conditional.
  • If I had had enough money, I would have bought a car (but I didn't have enough money, so I didn't buy a car).
2: Because 'would' (and will) can also be used to show if you want to do something or not (volition), we can also use would have + past participle to talk about something you wanted to do but didn't. This is very similar to the third conditional, but we don't need an 'if clause'.
  • I would have gone to the party, but I was really busy.
    (= I wanted to go to the party, but I didn't because I was busy. If I hadn't been so busy, I would have gone to the party.)
  • I would have called you, but I didn't know your number.
    (= I wanted to call you but I didn't know your number, so I didn't call you.)
  • A: Nobody volunteered to help us with the fair
    B: I would have helped you. I didn't know you needed help.
    (= If I had known that you needed help, I would have helped you.)
Try an exercise about these past modals here.