The German perfect tense works like this: you take an auxiliary verb (haben or sein) in the present tense, put it in second position, and add the past participle at the end. The question that trips up beginners is which auxiliary to choose — and choosing the wrong one is one of the most noticeable errors a German learner can make.
Ich habe gegessen (I have eaten / I ate) — correct. Ich bin gegangen (I have gone / I went) — correct. Ich habe gegangen — wrong. Ich bin gegessen — wrong, and also a little alarming.
The rule is consistent. It just requires knowing which category a verb belongs to.
How the Perfect Tense Works
The perfect tense (Perfekt) is the standard past tense in spoken German. It consists of two parts:
1. A conjugated auxiliary — either haben or sein — in second position.
2. The past participle of the main verb — at the end of the clause.
Ich habe das Buch gelesen.
I read the book. (haben + past participle gelesen)
Er ist nach Berlin gefahren.
He drove to Berlin. (sein + past participle gefahren)
The auxiliary is conjugated for person and number. The past participle never changes its form.
The Default: Haben
The vast majority of German verbs — including all transitive verbs (verbs that take a direct object) — form the perfect tense with haben. If you're unsure, haben is the statistically safer guess.
Ich habe ein Buch gekauft.
I bought a book.
Sie hat Kaffee getrunken.
She drank coffee.
Wir haben Fußball gespielt.
We played football.
Er hat lange gearbeitet.
He worked for a long time.
Ich habe geschlafen.
I slept.
Any verb that can take a direct object (kaufen, trinken, sehen, essen, lesen, hören) always uses haben. No exceptions.
Sein Group 1 — Movement From A to B
Verbs describing movement from one place to another — a change of location — use sein. The key is that the movement has a destination. The subject ends up somewhere different from where it started.
Ich bin nach Hause gegangen.
I went home. (movement with destination)
Er ist in die Schule gefahren.
He drove to school.
Sie ist nach Wien geflogen.
She flew to Vienna.
Wir sind ins Kino gegangen.
We went to the cinema.
Das Kind ist die Treppe hinaufgelaufen.
The child ran up the stairs.
Common movement verbs that take sein: gehen, fahren, fliegen, laufen, rennen, kommen, reisen, wandern, schwimmen (when directional), klettern, fallen, springen, reiten.
Sein Group 2 — Change of State
Verbs describing a change from one state to another — the subject transforms in some way — also use sein. No physical movement is necessary. The subject simply becomes something different.
Er ist eingeschlafen.
He fell asleep. (change from awake to asleep)
Sie ist aufgewacht.
She woke up. (change from asleep to awake)
Das Wasser ist gefroren.
The water froze. (change of physical state)
Die Blume ist gewachsen.
The flower grew. (change of size/state)
Er ist krank geworden.
He became ill. (change of condition)
Sie ist gestorben.
She died. (the ultimate change of state)
Common change-of-state verbs that take sein: werden, sterben, einschlafen, aufwachen, wachsen, gefrieren, schmelzen, verschwinden, entstehen, passieren, geschehen.
Sein Group 3 — Fixed Exceptions
A small group of common verbs take sein but don't fit neatly into movement or change of state. They must be memorized individually — but there aren't many of them.
| Verb | Meaning | Perfect |
|---|---|---|
| sein | to be | ich bin gewesen |
| bleiben | to stay, to remain | ich bin geblieben |
| passieren | to happen | es ist passiert |
| gelingen | to succeed | es ist gelungen |
| misslingen | to fail | es ist misslungen |
| begegnen | to encounter | ich bin begegnet |
| folgen | to follow | ich bin gefolgt |
Bleiben — the most important exception
Bleiben (to stay) takes sein even though it describes no movement whatsoever. It's counterintuitive but consistent. Ich bin zu Hause geblieben — I stayed at home. Learn this one early because it comes up constantly.
The Two-Question Test
When you're not sure which auxiliary to use, ask these two questions in order:
1. Does the verb have a direct object?
Yes → haben. (All transitive verbs use haben — no exceptions.)
2. Does the verb describe movement to a destination, or a change of state?
Yes → sein.
No → haben.
These two questions resolve the correct auxiliary for the overwhelming majority of verbs you'll encounter at beginner level.
The Movement Trap
Not all movement verbs use sein — only those describing movement to a destination. Verbs that describe movement without a change of location use haben.
Ich bin in den Park gelaufen. (sein — moved to a destination: the park)
I ran to the park.
Ich habe eine Stunde lang gelaufen. ✗ (wrong — but see below)
Ich bin eine Stunde lang gelaufen. ✓ (sein — movement, even without explicit destination)
Swimming, dancing, jogging
Movement verbs like schwimmen, tanzen, joggen use haben when the activity is the point (no destination), and sein when the movement leads somewhere. Ich habe heute geschwommen (I swam today — activity). Ich bin über den See geschwommen (I swam across the lake — destination). This distinction is consistent across all verbs that can describe both purposeful movement and activity.
Verbs That Take Both — Depending on Meaning
A small number of verbs take haben or sein depending on whether they are used transitively (with an object) or intransitively (without one). The meaning also shifts.
| With haben (transitive) | With sein (intransitive) |
|---|---|
| Ich habe das Auto gefahren. (I drove the car — object: the car) | Ich bin nach Berlin gefahren. (I drove to Berlin — no object) |
| Er hat das Boot gesegelt. (He sailed the boat) | Er ist nach Mallorca gesegelt. (He sailed to Mallorca) |
| Sie hat das Kind gewogen. (She weighed the child) | Das Kind hat gewogen. / Das Kind ist schwerer geworden. |
The pattern: if you can answer "drove what?" or "flew what?" with a noun, it's transitive → haben. If the verb just describes the movement itself with no object → sein.
Common Traps
Trap 1 — Using haben with gehen, kommen, fahren
Ich bin nach Hause gegangen. ✓
Ich habe nach Hause gegangen. ✗
Trap 2 — Using sein with schlafen
Schlafen (to sleep) describes a state, not a change of state or movement — it takes haben.
Ich habe gut geschlafen. ✓ (sleeping = state, not change)
Ich bin gut geschlafen. ✗
Ich bin eingeschlafen. ✓ (einschlafen = falling asleep = change of state)
Trap 3 — Forgetting bleiben takes sein
Ich bin zu Hause geblieben. ✓
Ich habe zu Hause geblieben. ✗
Trap 4 — Using sein with essen, trinken, kaufen
Any verb with a direct object uses haben — without exception.
Ich habe Pizza gegessen. ✓
Ich bin Pizza gegessen. ✗
Trap 5 — Confusing sein the auxiliary with sein the verb
Sein (to be) uses sein as its own auxiliary in the perfect tense. This looks circular but is simply a fixed form to memorize.
Ich bin in Wien gewesen. ✓ (I was in Vienna — sein + gewesen)
Ich habe in Wien gewesen. ✗
Quick Recap
- The perfect tense = conjugated auxiliary (haben or sein) + past participle at the end.
- Haben is the default. All verbs with a direct object use haben — no exceptions.
- Sein is used for two groups: verbs of movement to a destination (gehen, fahren, fliegen, kommen, laufen…) and verbs of change of state (werden, einschlafen, aufwachen, sterben, wachsen, gefrieren…).
- Fixed exceptions that take sein: sein itself (gewesen), bleiben, passieren, gelingen, begegnen, folgen.
- The two-question test: has a direct object? → haben. Movement to destination or change of state? → sein. Neither? → haben.
- Movement verbs used as activities without a destination (swimming, dancing) → haben. Same verb used to get somewhere → sein.
- Schlafen → haben (state). Einschlafen → sein (change of state). The prefix makes the difference.
- Some verbs take both — transitive (with object) → haben, intransitive (no object, movement) → sein. Ich habe das Auto gefahren vs. Ich bin nach Berlin gefahren.