Constrained optimization of molecular geometries is commonly used in computational chemistry, for example to scan along specific internal coordinates. There are several algorithms for the enforcement of constraints on molecular geometry optimization. RAT-TLE and SHAKE are two well-known algorithms that rigorously enforce c(x k ) = 0 for all geometries x k visited during the course of the optimization trajectory. This is important for molecular dynamics simulations, where conservation of energy requires that all structures of the trajectory lay on the constraint manifold. In contrast, optimization trajectories do not need to conserve energy, and, therefore, only the final converged structure must lie on the constraint manifold. For this reason, we have chosen not to use RATTLE or SHAKE for constrained optimization in our framework. Instead, our algorithm performs constrained optimization using null-space SQP, a method of Lagrange multipliers in which a linear step towards the constraint manifold is made at every iteration of the optimization. Using this approach, intermediate steps of optimization may not rigorously satisfy the constraint, though the constraint will be satisfied at convergence. In principle, our algorithm is capable of enforcing any function of the molecular structure as a constraint on the optimization. Sella natively supports the fixing of arbitrary atomic distances, bending angles, dihedral angles, and one or more Cartesian components of the barycenter of a cluster of atoms. When applied to a single atom, this last constraint fixes the atom in space. Recently, Sella has also implemented the ability to define custom constraint expressions, as well as the ability to enforce inequality constraints.