We present a kinematic analysis algorithm for mechanisms built of rigid parts, such as door locks, gearboxes, and transmissions. The algorithm produces a concise and complete description of the kinematics of a mechanism. It optimizes the computation by decomposing complex mechanisms into subassemblies, deriving the kinematics of the subassemblies, and incrementally composing the results. We define a class of mechanisms for which kinematic analysis is feasible by restricting the shapes, motions, and interactions of parts. The feasible class contains linkages, mechanisms whose parts move along fixed spatial axes, and combinations of the two types. We show that the feasible class covers most mechanisms by surveying 2500 mechanisms from an engineering encyclopedia. We implement the kinematic analysis algorithm for fixed-axes mechanisms. The inputs are the shapes and initial configurations of the parts. The output is a region diagram, a partition of the mechanism configuration space into regions that characterize its operating modes. The program computes the region diagram by identifying motion axes and interacting pairs of parts, partitioning the pairwise configuration spaces, and composing them. Coupling the program with existing linkage analysis packages covers most feasible mechanisms. We identify classes of infeasible mechanisms and describe possible analysis strategies for them.