Intermediate grammar exercise: should vs. should have

English grammar practice exercise, intermediate level.

In this exercise you will practise the difference between should and should have.

Exercise instructions

Fill in the gaps in the sentences below using the verb in brackets with either should or should have.

There is a grammar explanation at the bottom of the page.

questions go herescore goes here

expressing obligation
Structure: should + infinitive form of a verb
should be, should go, should do, etc.
We use should for the present and the future.

We use should to give advice to someone and to say that something is a good idea.
Should is weaker than have to and must.
You should tell them the truth.

You shouldn't smoke; it's bad for you.

I don't think you should do it.
Should have:
expressing unfulfilled obligation in the past
should + (not) have + past participle of verb
We use should have to say that someone didn't do something, but it would have been the correct thing to do it. You should have told them the truth.
You shouldn't have gone there – it was a mistake.
I don't think you should have done it.
We often use should have to express regret about the past, or to say that we made a mistake. I’m sorry for shouting at you – I shouldn’t have raised my voice.


  1. ennio - July 3, 2016, 7:02 am

    the sentences 5 and 7 mark you wrong always no matters if your answer is correct.

    • Stuart Cook - July 19, 2016, 8:41 pm

      Make sure you’re using the correct character as an apostrophe.

      • UNKNOWN - April 16, 2017, 6:16 pm

        they are true but 5 can be ”shouldn’t lend”. Because it can be general. This sentence like an advice. I hope ı can express myself.

        • Stuart Cook - May 2, 2017, 12:53 pm

          Yes, you’re correct. I’ve now changed the context to highlight its past tense meaning. Thanks for the feedback.

Comments are now closed on this post.