Proper rationalizability (schuhmacher, 1999, asheim, 2001) is a concept in epistemic game theory based on the following two conditions: (a) a player should be cautious, that is, should not exclude any opponent's strategy from consideration; and (b) a player should respect the opponents' preferences, that is, should deem an opponent's strategy sisi infinitely more likely than si'si' if he believes the opponent to prefer sisi to si'si'. A strategy is properly rationalizable if it can optimally be chosen under common belief in the events (a) and (b). In this paper we present an algorithm that for every finite game computes the set of all properly rationalizable strategies. The algorithm is based on the new idea of a preference restriction, which is a pair (si,ai)(si,ai) consisting of a strategy sisi, and a subset of strategies aiai, for player i. The interpretation is that player i prefers some strategy in aiai to sisi. The algorithm proceeds by successively adding preference restrictions to the game.