could have, should have, would have

Introduction

Should have, could have, and would have are sometimes called “modals of lost opportunity” because they describe situations when we are imagining that the past was different.

Before we study those terms in the past, let’s review the difference between should, could, and would. The general rule is:

  • Should for recommendation / advice
    “If you want to lose weight, you should eat healthy food.”
  • Could for possibilities
    “I have the day off tomorrow.”
    “Great! We could spend the day at the beach. Or we could go shopping.”
  • Would for imagining results
    “If I were rich, I would buy a boat.”

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. 

  • 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.

Could'n 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.  
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 got stuck in traffic.

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.

  • 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).
  • 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).


Shouldn't have + past participle means that something wasn't a good idea, but you did it anyway.

  • I shouldn't have eaten so much cake! (= I did eat a lot of cake and now I don't feel good.)


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.)