---
title: "Hebben or zijn in the perfect tense"
level: A2
chapter: "Verbs in time"
canonical: https://www.dutchfluency.com/grammar/hebben-or-zijn
updated: 2026-10-08
author: Dutch Fluency
license: CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
---

# Hebben or zijn in the perfect tense

Most Dutch verbs form [the perfect tense](https://www.dutchfluency.com/grammar/perfect-tense) (a helper verb plus a form like _gewerkt_ or _gegaan_) with _hebben_: _ik heb gewerkt_. You use _zijn_ for verbs that describe a change of place or state, as in _ik ben vertrokken_ or _hij is ziek geworden_, and for the verbs _zijn_ and _blijven_ themselves. Movement verbs like _fietsen_ take _zijn_ when you say where you went and _hebben_ when you mean the activity.

## The pattern

> Most verbs take _hebben_ in the perfect tense. Use _zijn_ for verbs that describe a change of place or state, and for _zijn_ and _blijven_.

- _hebben_: most verbs, such as _werken_, _eten_, _kopen_ and _slapen_ (_ik heb geslapen_)
- _zijn_ for a change of place: _gaan_, _komen_, _vertrekken_ (_ze is vertrokken_)
- _zijn_ for a change of state: _worden_, _sterven_, _beginnen_ (_het is begonnen_)
- _zijn_ for the verbs _zijn_ and _blijven_: _ik ben ziek geweest_, _ik ben gebleven_
- movement verbs (_fietsen_, _lopen_, _rijden_, _zwemmen_): _zijn_ with a destination, _hebben_ for the activity

## Examples

| Ik **heb** gisteren tot zes uur **gewerkt**. | I worked until six yesterday. |
| Sanne **is** om acht uur **vertrokken**. | Sanne left at eight. |
| Mijn moeder **is** gisteren op bezoek **gekomen**. | My mother came to visit yesterday. |
| Mijn buurvrouw **is** vorige week oma **geworden**. | My neighbour became a grandmother last week. |
| De cursus **is** in september **begonnen**. | The course started in September. |
| Mijn opa **is** in 2015 **gestorven**. | My grandfather died in 2015. |
| Ik **ben** vorige week ziek **geweest**. | I was ill last week. |
| Emma **is** de hele dag in bed **gebleven**. | Emma stayed in bed all day. |
| Ik **ben** naar huis **gefietst**. | I cycled home. |
| Ik **heb** vandaag veel **gefietst**. | I cycled a lot today. |

## Why it works this way

Think about what each helper puts in the spotlight. With _hebben_, the sentence is about something you did: _Ik heb gewerkt_. With _zijn_, the sentence usually describes a change: the subject moved to another place or became something else. _Sanne is vertrokken_ means Sanne left. _Mijn buurvrouw is oma geworden_ means she became a grandmother. Often the new situation still holds, but the tense does not promise that: Sanne may well be back home by now.

Movement verbs show this best. _Ik ben naar huis gefietst_ tells you where I went. _Ik heb vandaag veel gefietst_ only tells you what I did. A place where the activity happened is not a destination, so _Mei heeft in het park gewandeld_ takes _hebben_.

Remember: _zijn_ is for moving to another place or turning into something else. If you just did something, use _hebben_. The verbs _zijn_ and _blijven_ do not fit this picture, so learn them as a pair: _ik ben geweest_, _ik ben gebleven_.

Treat the change idea as a strong tendency rather than a law. Some change verbs switch to _hebben_ when they have an object: _Het glas is gebroken_ (the glass broke), but _Daan heeft het glas gebroken_ (Daan broke the glass). The safest habit is to learn each _zijn_ verb together with its helper.

English uses have with every verb, and Spanish also has one helper for everything, so speakers of both tend to use _hebben_ everywhere. German splits its verbs in a similar way, which helps, but German often uses its word for "be" with swimming or cycling even without a destination, where Dutch wants _hebben_.

## Watch out

- Not: _Ik heb ziek geweest._ Say: _Ik ben ziek geweest._ (_zijn_ takes _zijn_ as its helper, even though English says have been)
- Not: _We hebben naar de markt gegaan._ Say: _We zijn naar de markt gegaan._ (_gaan_ takes _zijn_)
- Not: _Ik heb een week in Utrecht gebleven._ Say: _Ik ben een week in Utrecht gebleven._ (_blijven_ takes _zijn_)
- Not: _Het heeft koud geworden._ Say: _Het is koud geworden._ (_worden_ is a change of state)
- Not: _Lotte is de hele middag gezwommen._ Say: _Lotte heeft de hele middag gezwommen._ (no destination, just the activity)

## Quick check

1. Fill in _is_ or _heeft_: _Daan ... gisteren naar Amsterdam gefietst._
2. Fill in _is_ or _heeft_: _Yara ... zondag twee uur in het bos gewandeld._
3. Fix the sentence: _De les heeft om negen uur begonnen._
4. Fill in _is_ or _heeft_: _Joris ... vorige maand naar Rotterdam verhuisd._

## Answers

1. _is_ (a destination: Daan cycled to Amsterdam)
2. _heeft_ (no destination, just the activity)
3. _De les is om negen uur begonnen._ (_beginnen_ takes _zijn_)
4. _is_ (_verhuizen_ is a change of place)

## Use it today

This weekend, send a friend a short Dutch message with three sentences: one with a destination (_Ik ben naar de markt gefietst_), one about an activity (_Ik heb veel gewandeld_), and one with _geweest_ or _gebleven_.

## Questions learners ask

**When do you use zijn instead of hebben in the Dutch perfect tense?**

Use zijn with verbs that describe a change of place or state, such as gaan, komen, vertrekken, worden, sterven and beginnen, and with the verbs zijn and blijven themselves. Most other verbs use hebben.

**Is it "ik heb gefietst" or "ik ben gefietst" in Dutch?**

It depends on what you want to say. With a destination you use zijn: "Ik ben naar het werk gefietst." When you mean the activity itself, you use hebben: "Ik heb vandaag veel gefietst."

**Why do you say "ik ben ziek geweest" and not "ik heb ziek geweest"?**

In Dutch, the verb zijn (to be) takes zijn as its helper verb in the perfect tense, so the correct form is "ik ben ziek geweest". English says "I have been", which is why "ik heb geweest" is such a common mistake. The same goes for blijven: "ik ben gebleven".

From the Dutch Fluency Grammar: https://www.dutchfluency.com/grammar. Shared under CC BY-SA 4.0.
