German Perfekt: When to Use haben and When to Use sein
The Perfekt is the tense you use for almost everything in the past when you speak German. Ich habe gegessen. Ich bin nach Hause gegangen. Wir haben Deutsch gelernt. It has two parts: a form of haben or sein in position 2, and a past participle at the very end. The only real question is which helper verb to use, and that has a clear answer for almost every verb.
How the Perfekt is built
helper verb (position 2) + … + past participle (end of clause)
- Ich habe gestern Pizza gegessen. (I ate pizza yesterday.)
- Wir sind nach Berlin gefahren. (We went to Berlin.)
- Hast du das verstanden? (Did you understand that?)
Note that the participle sits at the end, and everything else (time, place, objects) fits between. It’s the same “sandwich” that you know from separable verbs and modals.
haben or sein? One rule with two parts
Use sein if the verb:
- describes a change of place (movement from A to B): gehen, fahren, fliegen, kommen, laufen, reisen, ankommen, abfahren
- describes a change of state (becoming something): aufwachen, einschlafen, aufstehen, werden, sterben, wachsen
- is one of three special verbs: sein, bleiben, passieren
Use haben for everything else. This includes all verbs with an accusative object (essen, kaufen, sehen, machen), all reflexive verbs (sich waschen), and all modal verbs.
| Verb | Helper | Example |
|---|---|---|
| gehen | sein | Ich bin ins Kino gegangen. |
| fahren | sein | Er ist nach Wien gefahren. |
| kommen | sein | Sie ist spät gekommen. |
| aufstehen | sein | Wir sind um sechs aufgestanden. |
| bleiben | sein | Ich bin zu Hause geblieben. |
| sein | sein | Es ist schön gewesen. |
| werden | sein | Er ist Arzt geworden. |
| essen | haben | Ich habe Pizza gegessen. |
| machen | haben | Was hast du gemacht? |
| kaufen | haben | Sie hat ein Auto gekauft. |
| sehen | haben | Wir haben den Film gesehen. |
| lernen | haben | Ich habe Deutsch gelernt. |
| arbeiten | haben | Er hat lange gearbeitet. |
| schlafen | haben | Ich habe gut geschlafen. |
A quick test: is there a movement to a new place or a change of state? If yes, sein. If not, haben.
Verbs that seem to break the rule
Verbs with both: schwimmen, fahren, fliegen can take either, depending on the meaning.
- Ich bin über den Fluss geschwommen. (movement to a new place: sein)
- Ich habe eine Stunde geschwommen. (an activity, no destination: haben)
- Er ist nach Hause gefahren. / Er hat den Wagen gefahren. (with an accusative object den Wagen: haben)
Regional difference: in southern Germany, Austria and Switzerland, verbs of position (sitzen, stehen, liegen) often take sein: Ich bin gesessen, Ich bin gestanden. In northern and standard German it’s ich habe gesessen. Both are heard, and the northern one is safe everywhere, especially in exams.
How to form the participle
Regular verbs (weak): ge- + stem + -t
| Infinitive | Participle |
|---|---|
| machen | gemacht |
| lernen | gelernt |
| kaufen | gekauft |
| spielen | gespielt |
| arbeiten | gearbeitet (an extra e for pronunciation) |
Irregular verbs (strong): ge- + stem (often changed) + -en
| Infinitive | Participle |
|---|---|
| essen | gegessen |
| trinken | getrunken |
| gehen | gegangen |
| sehen | gesehen |
| schreiben | geschrieben |
| nehmen | genommen |
| kommen | gekommen |
| sprechen | gesprochen |
There’s no reliable rule for the vowel change, so learn the participle together with the verb. Dictionaries list it.
No ge- for three groups
- Inseparable prefixes (be-, ent-, er-, ver-, zer-): besuchen → besucht, verstehen → verstanden, bekommen → bekommen
- Verbs ending in -ieren: telefonieren → telefoniert, studieren → studiert
- Separable verbs put -ge- inside: aufstehen → aufgestanden, einkaufen → eingekauft
Practise your German out loud with SipLingo, free to try on iPhone and Android:
The 40 verbs to learn first
With haben:
| Infinitive | Participle |
|---|---|
| arbeiten | gearbeitet |
| bekommen | bekommen |
| besuchen | besucht |
| bezahlen | bezahlt |
| bringen | gebracht |
| essen | gegessen |
| finden | gefunden |
| geben | gegeben |
| haben | gehabt |
| helfen | geholfen |
| kaufen | gekauft |
| kochen | gekocht |
| lernen | gelernt |
| lesen | gelesen |
| machen | gemacht |
| nehmen | genommen |
| sagen | gesagt |
| schlafen | geschlafen |
| schreiben | geschrieben |
| sehen | gesehen |
| sprechen | gesprochen |
| trinken | getrunken |
| verstehen | verstanden |
| warten | gewartet |
With sein:
| Infinitive | Participle |
|---|---|
| ankommen | angekommen |
| aufstehen | aufgestanden |
| bleiben | geblieben |
| fahren | gefahren |
| fliegen | geflogen |
| gehen | gegangen |
| kommen | gekommen |
| laufen | gelaufen |
| reisen | gereist |
| sein | gewesen |
| werden | geworden |
| einschlafen | eingeschlafen |
| umziehen | umgezogen |
| passieren | passiert |
| abfahren | abgefahren |
| aussteigen | ausgestiegen |
Perfekt vs Präteritum: what to say in speech
German has a second past tense, the Präteritum (ich ging, ich aß). In everyday speech, use the Perfekt for nearly everything. The Präteritum is mainly for writing (stories, news), plus a few very common verbs that are used in speech too:
- sein → war: Ich war gestern im Kino. (rather than ich bin gewesen)
- haben → hatte: Ich hatte keine Zeit.
- modal verbs → wollte, konnte, musste: Ich wollte anrufen, aber ich konnte nicht.
So a natural spoken past is a mix: Gestern war ich müde, also bin ich früh ins Bett gegangen.
Word order in the Perfekt
- Main clause: the helper is in position 2, the participle at the end. Ich habe gestern lange geschlafen.
- Question: Hast du gestern lange geschlafen?
- Subordinate clause: both go to the end, with the helper last: …, weil ich gestern lange geschlafen habe.
- With a modal verb, the Perfekt is rare in speech. Use the Präteritum: Ich musste arbeiten.
Mistakes that cost points
- Wrong helper: Ich habe nach Hause gegangen. Correct: Ich bin nach Hause gegangen.
- Regular ending on an irregular verb: Ich habe gegesst. Correct: gegessen.
- Forgetting the participle at the end: Ich habe gestern Pizza (missing gegessen)
- Adding ge- to inseparable or -ieren verbs: gebesucht, getelefoniert. Correct: besucht, telefoniert.
- Putting the participle in the wrong place in a weil clause.
These are the mistakes you make while speaking, not while writing. SipLingo catches them as you talk, explains them in your own language and gives you the correct sentence, so the right helper verb becomes automatic. Try it free →
Practice: describe yesterday
Say the following out loud, then replace the details with your own:
Gestern bin ich um sieben aufgestanden. Ich habe Kaffee getrunken und bin zur Arbeit gefahren. Um zwölf habe ich mit Kollegen gegessen. Nach der Arbeit habe ich eingekauft und Deutsch gelernt. Dann bin ich früh eingeschlafen.
That’s a mix of sein and haben verbs, three separable verbs and no Präteritum. If you can say it without stopping, you have the Perfekt.
Related guides: the 4 German cases explained · German word order rules
Official sources
For the official details and the latest updates, see:
- IDS Mannheim (grammis): grammis: Perfekt with haben or sein? – Which verbs take sein vs haben in the Perfekt
- Duden: Duden for learners: verbs (tense, mood, modal verbs) – Verb person, tense, mood and voice; modal verbs and werden
Frequently asked questions
When do you use sein in the Perfekt?
With verbs of movement to a new place (gehen, fahren), verbs of change of state (aufwachen, werden) and sein, bleiben, passieren.
Is the Perfekt used in spoken German?
Yes, for nearly all past events. The Präteritum is mostly written, except for war, hatte and the modals.
How do you form the past participle?
Regular verbs: ge- + stem + -t (gemacht). Irregular verbs: ge- + changed stem + -en (gegessen). No ge- with inseparable prefixes and -ieren verbs.
Does the participle change for separable verbs?
Yes, -ge- goes between the prefix and the verb: aufgestanden, eingekauft.
Do I need the Perfekt for the B1 exam?
Yes. Speaking and writing tasks at A2 and B1 require the Perfekt, and mistakes with the helper verb are among the most frequent.
Turn the rule into a reflex. SipLingo corrects your German as you speak, in your own language. A1 to B2.



