The Present Perfect

The present perfect is the tense you use to connect the past to now: a finished action whose result still matters, a life experience, something that just happened. Danish builds it almost exactly as English does — an auxiliary plus a past participle — so the construction itself will feel familiar. The challenge is not the form. It is the boundary between the perfect and the simple past, which Danish draws in a slightly different place than English, and getting that line right is what this page is really about.

The form: have + past participle

The default recipe is the verb have ("to have") in the present tense, plus the past participle of the main verb. The participle is the -et form of weak and strong verbs (talt, spist, lavet, skrevet, drukket) — the form you would file after har.

AuxiliaryParticipleMeaning
jeg hartaltI have spoken
du harspistyou have eaten
vi harsetwe have seen
de harskrevetthey have written

Note that har never changes for person or number — Danish verbs carry no agreement — so the whole paradigm is just har + participle, the same shape for everyone. This is simpler than English, which still inflects has for the third person singular.

Jeg har spist, så jeg er ikke sulten.

I have eaten, so I'm not hungry.

Har du talt med lægen endnu?

Have you spoken to the doctor yet?

Vi har set den film tre gange.

We have seen that film three times.

What the perfect means

The present perfect describes a past action viewed from the present — the speaker's attention is on the current relevance, not on the moment it happened. It covers three closely related situations:

A completed action with a present result. The action is over, but its effect is what you care about now.

Jeg har låst døren, så du behøver ikke bekymre dig.

I've locked the door, so you don't need to worry.

Experience over a lifetime (so far). Whether something has ever happened, without pinning down when.

Har du nogensinde været i Japan?

Have you ever been to Japan?

The recent past, often with lige ("just"). Something that happened a moment ago and still feels live.

Han er lige gået — du kan stadig nå ham.

He has just left — you can still catch him.

A quick word on være

Most verbs take have, but a set of verbs describing motion or a change of state take være ("to be") as their auxiliary instead: jeg er gået ("I have gone/left"), jeg er kommet ("I have come"), jeg er rejst ("I have travelled/left"). For now, just register that være exists as a second auxiliary and that it pairs with verbs of going and becoming. The full choice — which verbs take which auxiliary, and how jeg har rejst differs from jeg er rejst — gets its own treatment in Choosing Have or Være in the Perfect.

Toget er allerede kørt, så vi må tage den næste.

The train has already left, so we'll have to take the next one.

The perfect versus the simple past — the line English speakers must redraw

Here is the heart of the page. Both the perfect (jeg har set) and the simple past, called datid (jeg så), refer to the past. The question is which one Danish picks, and the deciding factor is whether the sentence names a definite past time.

The clean rule is this: a definite past-time adverbial forces the simple past, not the perfect. Once you anchor the action to a specific finished moment — i går ("yesterday"), sidste år ("last year"), klokken syv ("at seven o'clock"), for en uge siden ("a week ago") — Danish treats it as a closed chapter and uses datid. The perfect, by contrast, leaves the time open or keeps the action connected to the present.

Jeg så filmen i går.

I saw the film yesterday. (definite past time → simple past)

Jeg har set filmen. (Jeg ved, hvad der sker.)

I have seen the film. (open time, present relevance → perfect)

💡
Memorise it as a tripwire: if there is an i går, the perfect is blocked. Any adverbial that pins the action to a finished moment — i går, sidste uge, for to dage siden, da jeg var barn — demands datid. Save the perfect for open time and present relevance.

This is exactly where English transfer goes wrong, because English is slightly more permissive. English speakers will happily say "I have seen him last week" in some casual registers, and standard English at least tolerates the perfect with vaguer anchors. Danish does not bend here: a definite time and the perfect simply do not co-occur. Compare the pair below and burn the contrast into memory.

Vi spiste på den nye restaurant i lørdags.

We ate at the new restaurant on Saturday. (named day → datid)

Vi har spist på den nye restaurant — den er fantastisk.

We've eaten at the new restaurant — it's fantastic. (experience, no time named → perfect)

When both are possible

The boundary is not always a wall. When no time is specified, Danish often allows either tense with a shade of difference: the perfect leans on present relevance, the simple past simply reports. Both of the following are correct.

Har du gjort rent? — Ja, jeg gjorde rent i morges.

Have you cleaned? — Yes, I cleaned this morning.

Notice the natural pattern: the question uses the perfect (current state — is it clean now?), while the answer, once a definite time (i morges) appears, switches to datid. That conversational rhythm — perfect to ask about the present state, simple past to pin down when — is worth imitating directly.

One step back in time: the past perfect

Once the present perfect is comfortable, its sibling costs you almost nothing. Swap the present auxiliary har for its past form havde ("had"), keep the same participle, and you have the past perfect (førnutidførdatid) — an action completed before some other past moment.

Da jeg kom hjem, havde de allerede spist.

When I got home, they had already eaten.

Hun var træt, fordi hun havde arbejdet hele natten.

She was tired because she had worked all night.

The logic is identical to English "had eaten / had worked": one event sits further back than another past event. The motion verbs that take være in the present perfect take var here (toget var allerede kørt — "the train had already left").

Common Mistakes

❌ Jeg har set ham i går.

Wrong — a definite past time (i går) blocks the perfect. The #1 English-transfer error.

✅ Jeg så ham i går.

Correct — definite past time takes the simple past (datid).

❌ Vi har spist på restauranten sidste lørdag.

Wrong — sidste lørdag pins down the time, so the perfect is impossible.

✅ Vi spiste på restauranten sidste lørdag.

Correct — datid with a named day.

❌ Jeg har talte med ham.

Wrong — after har you need the participle (talt), not the past tense (talte).

✅ Jeg har talt med ham.

Correct — har + the participle talt.

❌ Toget har allerede kørt.

Wrong — a verb of motion takes være, not have, in the perfect.

✅ Toget er allerede kørt.

Correct — motion verb → er + kørt.

Key Takeaways

  • The perfect is have + past participle (jeg har talt); har never changes for person.
  • It marks a finished action with present relevance, experience, or the recent past.
  • A set of motion/change verbs takes være instead of have — covered in its own page.
  • The one rule to drill: a definite past-time adverbial (i går, sidste år, klokken syv) forces the simple past, not the perfect. If i går is in the sentence, the perfect is out.

Now practice Danish

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

Start learning Danish

Related Topics

  • The Past Tense: An OverviewA1How the Danish simple past (datid) splits into weak -ede, weak -te, and strong (vowel-change) verbs — and why you must learn each verb's class.
  • Choosing Have or Være in the PerfectB1Why most Danish verbs build the perfect with have, but verbs of motion and change of state use være — and how the same verb can take either.
  • Weak Past: The -ede ClassA1The largest, productive class of Danish regular verbs — past in -ede, participle in -et — and the safe default for any verb you don't recognise.
  • Strong Verbs: Ablaut PatternsA2Danish strong verbs form their past by changing the stem vowel — learn the major ablaut series as families to turn memorisation into pattern recognition.
  • HaveA1Full reference for have ('to have') — principal parts, all core tenses in natural sentences, its role as the default perfect auxiliary, and the har du...? question opener.