Mixed conditionals

B2 44 / 50

In short

A mixed conditional joins two different times: the if-clause and the result clause point to different moments. You take the matching half of the second and third conditionals and combine them - one clause about the past, the other about now.

The rule

The “pure” conditionals keep both clauses in the same time frame:

  • Third conditional = past condition -> past result (an imagined past): If I had studied, I would have passed.
  • Second conditional = present/unreal condition -> present result: If I knew the answer, I would tell you.

A mixed conditional crosses these wires when cause and effect happen at different times. There are two common types.

Type A - Past condition -> Present result. Something (un)real in the past still shapes the situation now.

If-clause (past)Result clause (present)
if + past perfectwould / could / might + base verb

If I had taken that job, I would be richer now. (I didn’t take it, so I’m not richer today.)

Type B - Present/general condition -> Past result. A permanent fact or general truth about now explains an imagined past outcome.

If-clause (present/general)Result clause (past)
if + past simplewould / could / might + have + past participle

If I weren’t so shy, I would have spoken to her at the party. (I am a shy person - that’s why I stayed silent back then.)

The trick is always the same: decide which clause is past and which is present, then pick the form that matches each one.

Forms & patterns

TypeIf-clauseResult clauseMeaning
A: past -> presentif + had + past participlewould + basepast cause, present effect
B: present -> pastif + past simplewould have + past participlepresent cause, past effect

You can swap would for could (ability/possibility) or might (uncertainty), and the clause order is free - just add a comma when the if-clause comes first:

  • I would be fluent now if I had kept practising. (no comma, result first)
  • If I had kept practising, I would be fluent now. (comma, if first)

Swap if for even if when the condition would not have changed anything - the result holds despite it, often with still: Even if I had apologised, she would still be angry with me.

With be in a Type B present clause, formal English prefers were for all persons: If he were more careful, he wouldn’t have lost it.

could is allowed in the Type B if-clause too - it is the past simple of can, not a would-form: If I could drive, I would have taken you to the station.

Examples

EnglishNote
If she had set an alarm, she wouldn’t be late right now.Type A: past omission -> present consequence.
If we had booked earlier, we would be on the beach today.Type A: missed past action, present regret.
If I hadn’t missed the train, I would be at the office by now.Type A: hadn’t + present would be.
If they weren’t vegetarians, they would have ordered the steak.Type B: permanent fact -> past choice.
If he spoke Italian, he would have understood the menu.Type B: general ability now -> past result.
If I were a morning person, I would have come to the early class.Type B: were for all persons in formal use.
You could be a doctor now if you had finished medical school.Type A with could for ability.
If she didn’t hate flying, she might have joined us in Rome.Type B with might for an uncertain past outcome.

Common mistakes

  • If I had taken that job, I would have been richer now. -> …I would be richer now. - the result is present (now), so use would + base, not would have.
  • If I am not so shy, I would have spoken to her. -> If I weren’t so shy… - a present/general condition takes the past simple (formal were), not the present.
  • If I would have known, I would be upset. -> If I had known… - never put would in the if-clause.
  • If she had been taller, she would have been a model now. -> …she would be a model now. - mixing past if with present now needs would be, not would have been.
  • If he weren’t lazy, he would finish it yesterday. -> …he would have finished it yesterday. - a past result needs would have + past participle.

Tips

  • Look for time markers: words like now, today, currently in the result point to a present result (Type A); yesterday, last week, at the party point to a past result (Type B).
  • Build it from the two conditionals you already know: take the if-half of the third conditional and the result-half of the second (Type A), or vice versa (Type B).
  • Decide the time of each clause first, then choose the form - don’t let the two halves “agree” with each other out of habit.
  • Would have + been = a past state; would be = a present state. Pick by asking “when is the result true - then or now?”