Determining which demographic and ecological parameters contribute to variation in population growth rate is crucial to understanding the dynamics of declining populations. This study aimed to evaluate the magnitude and mechanisms of an apparent major decline in an Atlantic Puffin Fratercula arctica population. This was achieved using a 27-year dataset to estimate changes in population size and in two key demographic rates: adult survival and breeding success. Estimated demographic variation was then related to two ecological factors hypothesised to be key drivers of demographic change, namely the abundance of the main predator at the study site, the Great Skua Stercorarius skua, and Atlantic Puffin chick food supply, over the same 27-year period. Using a population model, we assessed whether estimated variation in adult survival and reproductive success was sufficient to explain the population change observed. Estimates of Atlantic Puffin population size decreased considerably during the study period, approximately halving, whereas Great Skua population estimates increased, approximately trebling. Estimated adult Atlantic Puffin survival remained high across all years and did not vary with Great Skua abundance; however, Atlantic Puffin breeding success and quantities of fish prey brought ashore by adults both decreased substantially through the period. A population model combining best possible demographic parameter estimates predicted rapid population growth, at odds with the long-term decrease observed. To simulate the observed decrease, population models had to incorporate low immature survival, high immature emigration, or increasingly high adult non-breeding rates. We concluded that reduced recruitment of immatures into the breeding population was the most likely cause of population decrease. This study showed that increase in the size of a predator population does not always impact on the survival of adult prey and that reduced recruitment can be a crucial determinant of seabird population size but can easily go undetected.