We have performed density-functional theory calculations in conjunction with the climbing image nudged elastic band method in order to study the self-diffusion of oxygen in zinc oxide. To this end, we have derived the complete set of migration paths for vacancies as well as interstitials in wurtzite crystals and deduced expressions which provide the link to experimentally accessible tracer diffusion coefficients. The calculated migration barriers are consistent with annealing experiments on irradiated samples. We find that vacancy and interstitialcy mechanisms dominate under zinc and oxygen-rich conditions, respectively. This refutes the belief that vacancy mechanisms can be operational in experiments in oxygen-rich atmosphere. Our results provide the basis for the (re-)interpretation of diffusion experiments, and pave the way towards the development of reliable continuum models for device simulation.