Given a surface triangulation in three-dimensional space, an algorithm is developed to iteratively remove triangles from the triangulation. An underlying parametric or implicit surface representation is not required. An order is introduced on the set of triangles by considering curvature at their vertices. Triangles in nearly planar surface regions are prime candidates for removal. The degree of reduction can be specified by a percentage or, in the case of biviariate functions, by an error tolerance.