The Perfect Tenses

Once you know a verb’s participle, the Perfekt is formed by adding it to the present tense of haben or sein:

haben: sein:
Ich habe gelacht.
I laughed.
Du bist aber gewachsen!
Have you ever grown!
Es hat funktioniert.
It worked.
Wir sind wieder zu Hause angekommen.
We arrived back home.
Habt ihr gegessen?
Have you (guys) eaten?
Sind sie da geblieben?
Did they stay there?

Your first instinct will be to translate every Perfekt statement in German with the perfect tense in English: "I have laughed," "It has worked," etc. But as you can see above, the most natural translation is usually the simple past (preterite) tense. There is effectively no connection between the Präteritum/Perfekt distinction in modern German, which is mainly a written/spoken one, and the preterite/perfect distinction in English, which is about the relationship between past and present (see the next section for much more on this).

Most verbs take haben, but some of the ones that take sein are pretty common. In general, sein is for verbs showing a change of location (movement) or a change of state/condition (transformation). For example:

gehen – to go
kommen – to come
laufen – to walk, run
change of state:
sterben – to die
wachsen – to grow
genesen – to recover, convalesce

There are some regional differences; generally, as you go further South you'll hear more verbs used with sein. For example, in Bavaria it's more common to say ich bin gesessen (I was sitting) but in the rest of Germany it's ich habe gesessen.

Verbs that take sein are always intransitive, which means that they don't take a direct (accusative) object. Unfortunately, many intransitive verbs also take haben, like schlafen (to sleep) or starren (to stare), so this rule doesn't work in the other direction.

In the rare cases where a sein verb is used with a direct object, it takes haben instead:

intransitive (sein):
Ich bin in die Stadt gefahren.
I drove into the city.
transitive (haben):
Ich habe meine Schwester in die Stadt gefahren.
I drove my sister into the city.

However, it’s more common for verbs to have a transitive variant: one example that still has the shift in English is fallen (with sein, as in "a tree falls") vs. fällen (with haben, as in "to fell a tree").  Another is liegen/legen, which corresponds to the English "lie/lay." With pairs like these in German, the transitive verb (with haben) tends to be weak, while the intransitive verb (with sein) is strong.

The Plusquamperfekt is used for an event that had already occurred before some other point in the past. It’s the same as the Perfekt, only it uses the past tense (Präteritum) of haben/sein instead of the present tense:

Es hatte bereits angefangen zu regnen, als Stefan nach Hause kam.
It had already started to rain when Stefan came home.

Wir waren bis zur Brücke gekommen, bevor uns einfiel, dass wir unser Geld vergessen hatten.
We had come to the bridge before it occurred to us that we had forgotten our money.

Damals hatten wir noch nie ein echtes Schloss gesehen.
At the time, we had never seen a real castle before.

One of the more complex aspects of the perfect tenses in German is what to do when there are multiple verbs in a dependent clause. Generally, German does not allow two adjacent past participles in the same clause. Instead, both become infinitives. (There is an exception to this, termed the Ultra-Perfekt by some, but it’s regional and very non-standard usage.) And when such a bundle of verbs gets grouped together at the end of a dependent clause, the conjugated auxiliary verb goes before the infinitive forms, not after them.

Ich habe es gemacht. (I did it.)
Ich musste es machen. (I had to do it.)
Ich habe es machen müssen. (I had to do it.)
Weißt du, bis wann er es hatte machen müssen? (Do you know by when he had to have done it?)