SUMMARY The Metropolis algorithm for simulated annealing has been applied to earthquake location. The method combines linear and non-linear search techniques, and is able to locate events reliably and efficiently. A separation of the spatial and temporal components of the search improves performance. This arises from decoupling the strong correlation between depth and origin time and by taking advantage of the low computational cost of re-computing the misfit for multiple origin times. In addition, a method of generating new models is applied which progressively concentrates attention on more favourable regions while still allowing the algorithm to avoid local minima in the misfit function. In contrast to other non-linear algorithms there is no requirement to explicitly delineate bounds on the hypocentral coordinates. The simulated-annealing technique is an example of a global optimization routine. Consequently, it does not require the computation of derivatives and so can be used with arrival times of multiple phases, azimuth and slowness information and any type of velocity model, including laterally heterogeneous 3-D models, without modification to the basic algorithm. In addition, robust statistical functions describing the data misfit can be easily incorporated. The performance of the algorithm is illustrated on three events with different types of data, including one event with array information. Travel times are calculated relative to the 1-D iasp91 velocity model. In each case, starting from widely separated initial locations the algorithm converges to a region of a few cubic kilometres. This region represents the neighbourhood of the global minimum of the misfit function. By including the maximum amount of available information and using robust statistical functions, the final locations are more accurate than those obtained using linear methods. In addition, the algorithm is able to locate the immediate region of the global minimum with much less computational effort than standard non-linear algorithms.