When to Use the Perfekt (vs the English Present Perfect)

The German Perfekt looks exactly like the English present perfect — haben/sein + participle mirrors "have" + participle — so English speakers reach for it whenever they would say "I have done." That instinct is wrong about half the time, and it produces a different half of errors when they avoid it. The core fact: German and English split the past along completely different lines. English splits by meaning (completed-and-done vs relevant-to-now); German splits by register (spoken vs written). This page untangles the mismatch.

German splits by register, English by meaning

English distinguishes the simple past ("I ate") from the present perfect ("I have eaten") by whether the action is sealed off in the past or still relevant now. German makes no such distinction. Instead, the German Perfekt is simply the normal past tense of everyday speech, while the Präteritum (simple past) belongs to writing and narrative.

So in conversation, a single German Perfekt sentence covers both English translations:

Ich habe schon gegessen.

I have already eaten. / I already ate.

Hast du den Film gesehen?

Have you seen the film? / Did you see the film? (informal)

Which English version is "right" depends only on the English context, not on anything in the German. The German speaker is not choosing between "ate" and "have eaten" — that choice does not exist for them in speech. They are choosing the spoken past, which is the Perfekt.

💡
Stop trying to map the German Perfekt onto the English present perfect. Map it instead onto "the way people talk about the past in conversation." Whether English renders it as "I ate" or "I have eaten" is an English problem, decided after the fact by English's own rules.

The "yesterday" test: where the two languages clash hardest

This is the sharpest illustration of the mismatch. English forbids the present perfect with a finished-time adverb: "I have seen him yesterday" is ungrammatical; you must say "I saw him yesterday." English reasons: yesterday is over, so the action cannot be "still relevant," so no present perfect.

German has no such restriction. In speech, the Perfekt is used with explicit past-time adverbs all the time:

Ich habe ihn gestern gesehen.

I saw him yesterday.

Wir haben letztes Jahr in Italien Urlaub gemacht.

We went on holiday in Italy last year.

Sie hat mich vorhin angerufen.

She called me a little while ago.

Notice the German keeps the Perfekt next to gestern, letztes Jahr, vorhin — adverbs that would block the English present perfect entirely. There is no contradiction in German because the Perfekt was never about "ongoing relevance." It is just the spoken past. (Note the lowercase adverbs: gestern, letztes Jahr — adverbs and adjectives are never capitalized, unlike nouns.)

The "since" trap: German uses the PRESENT, not the Perfekt

Now the mismatch flips the other way. For a situation that started in the past and continues up to now — exactly the case where English requires the present perfect ("I have lived here for three years") — German uses the present tense with seit.

The logic: if you still live there, the living is happening now. German treats it as a present-tense fact with a starting point, marked by seit ("since/for") plus the dative.

Ich wohne seit drei Jahren hier.

I have lived here for three years.

Wir kennen uns seit der Schulzeit.

We have known each other since our school days.

Sie lernt seit zwei Monaten Deutsch.

She has been learning German for two months.

In every case the German verb is present tense (wohne, kennen, lernt), while the natural English is the present perfect ("have lived," "have known," "have been learning"). This is a systematic mismatch, not an exception: any "have done X since/for [duration], and still doing it" maps to German present + seit + dative.

💡
seit always takes the dative: seit drei Jahren, seit einem Monat, seit der Schulzeit. And the verb stays present. If the action has truly stopped, you'd switch to a past tense — but for "still going on," present is the only correct choice.

Quick decision guide

SituationEnglishGerman
Talking about a past event (conversation)simple past or present perfectPerfekt
Past event with "yesterday / last year"simple past onlyPerfekt (in speech)
Ongoing-up-to-now ("for / since")present perfectpresent tense + seit
Written narrative, news, literaturesimple pastPräteritum

English contrast, summed up

English asks: Is this action sealed in the past (→ simple past) or still echoing into now (→ present perfect)? German never asks this. German asks two completely different questions: Am I speaking or writing? (→ Perfekt vs Präteritum) and Is the action still going on right now? (→ present + seit). Because the two languages cut the pie along different axes, word-for-word translation of "have done" fails constantly. Learn the German axes and translate by situation, not by matching the English auxiliary.

Common mistakes

❌ Ich sah ihn gestern.

Not wrong grammatically, but unnatural in speech — the Präteritum of sehen sounds bookish here. (in casual conversation)

✅ Ich habe ihn gestern gesehen.

Correct — the Perfekt is the normal spoken past, even with 'yesterday.'

❌ Ich habe seit drei Jahren hier gewohnt.

Incorrect — Perfekt used for an ongoing situation that is still true.

✅ Ich wohne seit drei Jahren hier.

Correct — present tense + seit for something still going on.

❌ Sie lernt seit zwei Monate Deutsch.

Incorrect — seit requires the dative (Monaten), not the accusative.

✅ Sie lernt seit zwei Monaten Deutsch.

Correct — seit + dative.

❌ Hast du gestern Brot?

Incorrect — no participle; the Perfekt needs the participle gekauft. (intended meaning: 'did you buy bread')

✅ Hast du gestern Brot gekauft?

Correct — full Perfekt for the spoken past. (informal)

❌ Ich habe Deutsch für drei Jahre gelernt.

Incorrect — English-style 'for + duration' with Perfekt for an ongoing action. (and still learning)

✅ Ich lerne seit drei Jahren Deutsch.

Correct — present + seit signals the action is still ongoing.

Key takeaways

  • The German Perfekt is the everyday spoken past; it translates as both English "I did" and "I have done" depending on the English context.
  • German uses the Perfekt freely with finished-time adverbs (gestern, letztes Jahr) where English bans the present perfect.
  • For an action still going on, German uses the present tense + seit + dative, where English uses the present perfect.
  • Translate by situation, not by matching "have." The English auxiliary is an unreliable guide to the German tense.

Now practice German

Reading grammar gets you part of the way. The exercises are where it sticks — free, no signup needed.

Start learning German

Related Topics

  • The Perfekt: Germany's Everyday Past TenseA2How the Perfekt is formed (haben/sein + past participle) and why it — not the Präteritum — is the normal spoken past in German.
  • Perfekt vs PräteritumB1Why German chooses between Perfekt and Präteritum by register (spoken vs written), not by time or completion as English does — plus the sein/haben/modal exceptions.
  • Using the Present Tense (No Progressive in German)A2The full range of the German present tense — habitual, ongoing, general, and future — and why German has no -ing progressive.
  • Time ExpressionsA2When to drop the preposition (jeden Tag, accusative), when to use one (am Montag, im Januar), plus übermorgen, ab und zu, and the seit + present rule.
  • The Präteritum: The Written and Narrative PastA2The simple past tense of German: the one-word past of writing and storytelling, plus the everyday spoken past of sein, haben, and the modals.