CRPropa is a Monte Carlo code designed originally for tracking UHECR extra-galactic propagation including individual secondaries. It includes all possible interactions such as cosmological adiabatic energy losses, pair production, photopion production and photonuclear disintegration for nuclear species. Besides extra-galactic propagation, it has received multiple additions expanding its range of application, including low energy cosmic-ray transport (with a Stochastic Differential Equation solver), acceleration of cosmic rays, hadronic interactions, and others. It is implemented in C++ but provides a python interface that facilitates considerably the user experience, while still preserving the speed of the underlying language.