To build the perfect you need an auxiliary, and Dutch — unlike English — does not use one helper verb for everything. Most verbs take hebben, but an important set takes zijn: verbs of change of state or change of location. Ik heb gewerkt but Ik ben gevallen; Ik heb gegeten but Hij is gekomen. English speakers find this hard precisely because English collapsed everything onto have centuries ago ("I have worked," "I have fallen," "I have come"), so there's no native instinct to fall back on. The good news is that the rule is genuinely learnable, because it tracks a single underlying idea — whether the action reaches an endpoint. This page explains the logic; the decision drill lives on choosing hebben vs zijn.
The default: hebben
Most verbs — and crucially all transitive verbs (verbs with a direct object) — take hebben. If the verb does something to an object, or simply describes an activity without moving the subject from one state or place to another, the auxiliary is hebben.
Ik heb gewerkt.
I worked. — an activity, no change of place or state: hebben.
We hebben een film gekeken.
We watched a film. — transitive (object 'een film'): always hebben.
Hij heeft de hele nacht geslapen.
He slept all night. — an activity, no endpoint reached: hebben.
When in doubt, hebben is the statistically safe bet — the zijn verbs are a minority, just a very frequent one.
Zijn: change of state and change of location
Zijn is the auxiliary for verbs that move the subject from one state to another, or from one place to another. The subject ends up somewhere new or something new — a different location or a different condition.
A core list of zijn-verbs, worth memorising as a block:
| Verb | Meaning | What changes |
|---|---|---|
| gaan | to go | location |
| komen | to come | location |
| vallen | to fall | location / state |
| worden | to become | state |
| sterven | to die | state |
| beginnen | to begin | state |
| stoppen | to stop | state |
| blijven | to stay/remain | (special — see below) |
| zijn | to be | (special — see below) |
Ik ben gevallen.
I fell. — change of state/position: zijn.
Hij is gekomen.
He came. — change of location: zijn.
Mijn opa is vorig jaar gestorven.
My grandfather died last year. — the ultimate change of state: zijn.
De film is om acht uur begonnen.
The film started at eight. — change of state (not-running → running): zijn.
The two special cases: zijn and blijven
Zijn ("to be") and blijven ("to stay") look like they're about not changing — yet both take zijn as their auxiliary. Treat these as fixed: ik ben geweest ("I have been"), hij is gebleven ("he stayed"). They don't fit the change logic neatly, so just learn them directly.
Ik ben nog nooit in Italië geweest.
I've never been to Italy. — 'zijn' itself takes 'zijn': 'ben ... geweest'.
Ze is de hele dag thuis gebleven.
She stayed home all day. — 'blijven' takes 'zijn'.
The deep logic: telicity, and the same verb taking both
Here is the insight that turns a memorised list into a system. The real trigger for zijn is telicity — whether the action has a built-in endpoint that the subject reaches. A pure motion verb like fietsen ("to cycle") describes an activity with no endpoint when it stands alone, so it takes hebben. But the moment you add a destination — a goal the subject arrives at — the same verb becomes telic (it now has an endpoint), and it switches to zijn.
Ik heb gefietst.
I cycled / did some cycling. — pure activity, no destination: hebben.
Ik ben naar school gefietst.
I cycled to school. — a destination ('naar school') gives the action an endpoint: zijn.
The verb is identical — fietsen — but the auxiliary flips depending on whether a goal is expressed. Same with lopen, zwemmen, rijden, rennen:
We hebben de hele middag gezwommen.
We swam all afternoon. — activity, no goal: hebben.
Hij is naar de overkant gezwommen.
He swam to the other side. — destination reached: zijn.
Ik heb gelopen om fit te blijven.
I walked/ran to stay fit. — atelic activity: hebben.
Ik ben naar huis gelopen.
I walked home. — goal 'naar huis' = endpoint: zijn.
This is the deep logic behind the whole zijn category. The "change of state/location" verbs take zijn precisely because change is an endpoint — vallen ends on the ground, sterven ends in death, beginnen ends in the started state. The motion verbs make it explicit: name the goal, get the endpoint, switch to zijn.
Common Mistakes
❌ Ik heb gevallen.
Wrong — 'vallen' is a change-of-state verb; English 'have fallen' misleads here.
✅ Ik ben gevallen.
I fell. — 'vallen' takes 'zijn'.
❌ Hij heeft naar huis gegaan.
Wrong — 'gaan' is motion to a goal and always takes 'zijn'.
✅ Hij is naar huis gegaan.
He went home. — 'is' + 'gegaan'.
❌ Mijn oma heeft vorig jaar gestorven.
Wrong — the most definitive change of state of all takes 'zijn'.
✅ Mijn oma is vorig jaar gestorven.
My grandmother died last year. — 'is gestorven'.
❌ Ik ben een uurtje gefietst voor mijn plezier.
Wrong — no destination here, so it's an atelic activity: it takes 'hebben'.
✅ Ik heb een uurtje gefietst voor mijn plezier.
I cycled for an hour for fun. — no goal, so 'hebben'.
❌ Ik heb naar de winkel gelopen.
Wrong — a destination is named ('naar de winkel'), making the trip telic: it takes 'zijn'.
✅ Ik ben naar de winkel gelopen.
I walked to the shop. — goal reached → 'zijn'.
Key Takeaways
- Hebben is the default — and always the choice for transitive verbs and plain activities (Ik heb gewerkt, We hebben gekeken).
- Zijn marks change of state or location: gaan, komen, vallen, worden, sterven, beginnen, stoppen — plus the two special cases zijn (geweest) and blijven (gebleven).
- The deep trigger is telicity — whether the action reaches an endpoint.
- A single motion verb takes hebben alone but zijn once a destination is named: Ik heb gefietst vs Ik ben naar school gefietst. That contrast is the whole rule in miniature.
Now practice Dutch
Reading grammar gets you part of the way. The exercises are where it sticks — free, no signup needed.
Start learning Dutch→Related Topics
- The Perfect Tense (Voltooid Tegenwoordige Tijd)A2 — The perfect — present of hebben/zijn plus a past participle sent to the end of the clause — is the everyday way Dutch talks about the past in speech, used far more freely than the English present perfect.
- Forming the Past Participle (ge-...-t/-d/-en)A2 — How to build the Dutch past participle: weak verbs take ge-...-t/-d (decided by 't kofschip), strong verbs take ge-...-en with a vowel change, and verbs with an unstressed prefix drop the ge- altogether.
- Choosing the Perfect Auxiliary: Hebben or Zijn?B1 — A decision guide for the Dutch perfect tense — zijn for changes of place and state (gaan, komen, worden, sterven), hebben for transitives and plain activities — plus the crucial rule that motion verbs flip between the two depending on whether a destination is named.
- Perfect vs Simple Past: Which Past Tense?B1 — Dutch conversation reports a single past event with the perfect, but tells a connected story with the simple past — the exact reverse of English instinct, where the simple past dominates speech.
- The Dutch Verb System: OverviewA1 — A map of the whole Dutch verb system — two simple tenses, auxiliary-built compounds, and why spoken Dutch tells the past in the perfect.