To say that something must have happened, keep _moeten_ in the present and end with a past participle (the form like _gemist_ or _vergeten_) plus _hebben_ or _zijn_: _Hij moet het vergeten zijn_ (He must have forgotten). For something that should or could have happened but did not, use _had_ (or _hadden_ with a plural subject) with _moeten_ or _kunnen_ and an infinitive (the dictionary form, like _zeggen_): _Je had het eerder moeten zeggen_ (You should have said so sooner). For an open maybe, say _Dat zou kunnen_ (That's possible).
The pattern
To guess about the past, use a modal (a verb like _moeten_ or _kunnen_) in the present and put the participle with _hebben_ or _zijn_ at the end. For a missed chance, put _had_ (singular) or _hadden_ (plural) in second place, with _moeten_ or _kunnen_ plus an infinitive at the end.
- Must have (a confident guess): _Ze moet de bus gemist hebben._ Use the helper verb the main verb takes in the perfect tense (_ik heb gewerkt_): _gemist hebben_, but _vertrokken zijn_. See [hebben or zijn](#/lesson/hebben-or-zijn).
- May have (a cautious guess): _Ze kan de bus gemist hebben_, or more tentatively _Ze zou de bus gemist kunnen hebben_. Negative: _Dat kan ze niet gezegd hebben_ (She can't have said that).
- Should have (regret or criticism): _Je had het eerder moeten zeggen._ With a plural subject: _We hadden het eerder moeten zeggen._
- Could have (an unrealized possibility): _Het had erger kunnen zijn._
- Word order: in a guess, participle and helper can swap (_gemist hebben_ or _hebben gemist_). After _had_ or _hadden_, the modal normally comes first (_moeten zeggen_). In a subordinate clause (after _dat_, _omdat_ and the like), the finite verb (the one that agrees with the subject) joins the group at the end: _dat ze de bus gemist moet hebben_, _dat je het had moeten zeggen_.
Examples
| Sanne reageert niet in de groepsapp, dus ze moet het bericht gemist hebben. | Sanne isn't reacting in the group chat, so she must have missed the message. |
|---|---|
| Joris komt niet opdagen. Hij moet het vergeten zijn. | Joris isn't turning up. He must have forgotten. |
| De straat is kletsnat, dus het moet vannacht flink geregend hebben. | The street is soaking wet, so it must have rained hard last night. |
| Je had het eerder moeten zeggen, dan hadden we iets anders gepland. | You should have said so sooner, then we would have planned something else. |
| Carlos en Mei hadden hun fietsen bij het station op slot moeten zetten: nu zijn ze allebei gestolen. | Carlos and Mei should have locked their bikes at the station: now both have been stolen. |
| Je had me ook even kunnen appen. | You could at least have sent me a message. |
| Ahmed is van zijn fiets gevallen, maar het had veel erger kunnen aflopen. | Ahmed fell off his bike, but it could have ended much worse. |
| Heeft de bezorger het pakketje bij de buren afgegeven? Dat zou kunnen. | Did the courier leave the parcel with the neighbours? Could be. |
| Fatima vindt dat de huisarts haar veel eerder had moeten doorverwijzen. | Fatima thinks the GP should have referred her much sooner. |
| Je had het moeten zien: op Yara's verjaardag stond Bas op tafel te dansen. | You should have seen it: at Yara's birthday, Bas was dancing on the table. |
Why it works this way
Ask when the thinking happens. You stand on the platform now and draw a conclusion about earlier, so the modal stays in the present and the past sits at the end (_gemist hebben_). English "must have" works the same way, so this half tends to feel friendly.
A missed chance is different: the moment of choice lies in the past, and it went the other way. Dutch marks that with _had_ or _hadden_, the same unreal past as in _Als ik het had geweten_ (see [If only](#/lesson/unreal-past)). The modal then stays an infinitive instead of becoming a participle, so two infinitives stand in a row: a double infinitive. The ordinary perfect does this too: _Ik heb moeten werken_, never _Ik heb gemoeten werken_ (more in [verb clusters](#/lesson/verb-clusters)).
On their own, these two differ by one small verb:
- _Ik heb moeten werken._ I had to work, and I did.
- _Ik had moeten werken._ On its own, this normally means: I should have worked, but I didn't.
In a story told in the past, context can turn _had moeten_ into a plain past perfect: _Hij was kapot, want hij had de hele dag moeten werken_ (he had had to work all day, and did).
Remember: find where the past sits. At the end (_gemist hebben_), you are a detective reading clues. Up front on _had_ or _hadden_, you are looking back at a road not taken.
Watch out
- Not: _Ze moet hebben de bus gemist._ Say: _Ze moet de bus gemist hebben._ (the object comes before the verbs at the end, unlike English)
- Not: _Hij moet al naar huis gegaan hebben._ Say: _Hij moet al naar huis gegaan zijn._ (English always says have, but _gaan_ takes _zijn_ in the perfect)
- Not: _Je had moeten het eerder zeggen._ Say: _Je had het eerder moeten zeggen._ (only _had_ stays in second place; both infinitives close the sentence)
- Not: _Ik had het gemoeten zeggen._ Say: _Ik had het moeten zeggen._ (next to another verb, the modal stays _moeten_, with no _ge-_)
- Not: _Dat had ik moeten geweten._ Say: _Dat had ik moeten weten._ (English says known, but Dutch needs the infinitive _weten_)
Quick check
- Choose _hebben_ or _zijn_: _Het is zo stil bij de buren. Ze moeten al op vakantie ... vertrokken._
- Choose _heeft_ or _had_: _Emma kwam te laat bij de huisarts, want ze vertrok pas om half negen. Ze ... eigenlijk om acht uur moeten vertrekken._
- Fix the sentence: _Je had moeten mij waarschuwen._
- Sanne asks: _Is de vergadering naar donderdag verplaatst?_ You are not sure, but it is possible. Choose _kunnen_ or _moeten_: _Dat zou ..._
Answers
- _zijn_: _vertrekken_ takes _zijn_ in the perfect (_ze zijn vertrokken_); here the helper simply comes before the participle.
- _had_: leaving at eight never happened; _heeft moeten_ would mean she really had to leave then and did.
- _Je had mij moeten waarschuwen._ Only _had_ stays in second place; the object goes before the verbs at the end.
- _kunnen_: _Dat zou kunnen_ means "that's possible"; _Dat zou moeten_ means "that's supposed to be the case".
Use it today
Pick one small thing that went wrong this week, like a forgotten umbrella or a missed bus. Say one detective guess (_Ik moet hem in de trein hebben laten liggen_), one regret (_Ik had eerder moeten vertrekken_) and one honest maybe (_Het zou kunnen dat ..._) out loud.