While most Dutch verbs form the perfect tense with hebben, a specific group uses zijn instead. These are verbs of motion or change of state that describe movement to a new location or a transition from one condition to another. Classic zijn-verbs include: gaan (to go), komen (to come), rijden (to ride/drive), lopen (to walk), vallen (to fall), worden (to become), blijven (to stay), zijn (to be), sterven (to die), and geboren worden (to be born).
The key test is to ask: does the verb describe movement from A to B, or a change of state? Lopen (to walk) uses zijn because you move from place to place — “Ik ben naar de markt gelopen”. But werken (to work) uses hebben because there is no inherent directional movement — “Ik heb hard gewerkt.” Some verbs can go either way depending on context: “Ik heb gereden” (I drove, activity) vs. “Ik ben naar Amsterdam gereden” (I drove to Amsterdam, directed motion).
Memorizing the zijn-verbs as a group is the most efficient strategy. Put them on flashcards with conjugated example sentences: “Ik ben gegaan, hij is gekomen, wij zijn gebleven.” Notice that zijn conjugates normally in the auxiliary role: ik ben, jij bent, hij is, wij zijn, jullie zijn, zij zijn. Once this group is fixed in memory, the rule becomes second nature — anything not in the group defaults to hebben.