  Force matching is an established technique to generate effective potentials
for molecular dynamics simulations from first-principles data. This method has
been implemented in the open source code potfit. Here, we present a review of
the method and describe the main features of the code. Particular emphasis is
placed on the features added since the initial release: interactions
represented by analytical functions, differential evolution as optimization
method, and a greatly extended set of interaction models. Beyond the initially
present pair and embedded-atom method potentials, potfit can now also optimize
angular dependent potentials, charge and dipolar interactions, and
electron-temperature-dependent potentials. We demonstrate the functionality of
these interaction models using three example systems: phonons in type I
clathrates, fracture of {\alpha}-alumina, and laser-irradiated silicon.
