We have developed an algorithm to detect holes in multi-dimensional real-valued surfaces-such as the potential energy surfaces (PESs) that describe the nuclear motion of molecules in the context of the Born-Oppenheimer approximation. For our purposes, a PES "hole" is defined as an unphysical saddle point, beyond which the potential energy drops (typically) without limit to negative infinity. PES holes are numerical artifacts that can arise when fitting PES functional forms to discrete ab initio data-even when the data is of high quality, and/or for comparatively few degrees of freedom (DOF). Often undetected, PES holes can have devastating effects on subsequent dynamical calculations, especially if they occur at low energies. In this paper, we present a highly efficient algorithm designed to systematically identify hole configurations and energies. The method is applied to a variety of molecular PESs ranging up to 30 DOF. A number of evidently previously undetected PES holes are reported here-surprisingly, even for PESs that have been available for decades. The code itself (Crystal) is presented together with a user manual. These tools may be of great benefit for PES developers, who can use the information they provide to fix holes, once identified. More generally, the methodology can be applied in any context involving multi-dimensional surfaces.