Although most German verbs use haben to form the Perfekt, a smaller but important group uses the auxiliary sein instead. These are verbs of movement from one place to another, such as gehen (to go), fahren (to drive or travel), laufen (to run or walk), fliegen (to fly), and kommen (to come). Verbs that express a change of state, like werden (to become), sterben (to die), and passieren (to happen), also use sein. A few additional verbs follow this pattern, including bleiben (to stay), which is often surprising to learners because it does not seem to describe movement, and the verb sein itself.
The past participles of sein-verbs typically end in -en and match the motion or change meaning: gehen becomes gegangen, fahren becomes gefahren, laufen becomes gelaufen, fliegen becomes geflogen, and kommen becomes gekommen. The verb bleiben becomes geblieben. Notice that the auxiliary verb in the sentence must agree with the subject. For example, Ich bin nach Hause gegangen means I went home, with the subject ich taking the form bin. Sie ist nach Berlin gefahren means She traveled to Berlin, where sie takes the form ist. Similarly, Er ist schnell gelaufen (He ran fast), Wir sind nach Spanien geflogen (We flew to Spain), and Sie ist spät gekommen (She came late).
A useful way to remember when to use sein is to ask whether the action involves motion from one place to another or a transition between states. If a person or thing physically moves from point A to point B, or if the subject changes its state, sein is the correct auxiliary. Otherwise, haben is the default choice. The example Er ist gestern zu Hause geblieben (He stayed at home yesterday) shows that even staying in one place is treated as a kind of state change, since the subject remained in a particular location rather than moving elsewhere.