Abstract. Internal phosphorus (P) loading from sediments, controlled by hypoxia, is often assumed to hamper the recovery of lakes and coastal areas from eutrophication. In the early 1970s, the external P load to the inner archipelago of Stockholm, Sweden (Baltic Sea), was drastically reduced by improved sewage treatment, but the internal P loading and its controlling factors have been poorly quantified. We use two slightly different four-layer box models to calculate the area's seasonal and annual P balance (input-export) and the internal P exchange with sediments in 1968-2015. For 10-20 years after the main P load reduction, there was a negative P balance, small in comparison to the external load, and probably due to release from legacy sediment P storage. Later, the stabilized, near-neutral P balance indicates no remaining internal loading from legacy P, but P retention is low, despite improved oxygen conditions. Seasonally, sediments are a P sink in spring and a P source in summer and autumn. Most of the deep-water P release from sediments in summer-autumn appears to be derived from the settled spring bloom and is exported to outer areas during winter. Oxygen consumption and P release in the deep water are generally tightly coupled, indicating limited iron control of P release. However, enhanced P release in years of deep-water hypoxia suggests some contribution from redox-sensitive P pools. Increasing deep-water temperatures that stimulate oxygen consumption rates in early summer have counteracted the effect of lowered organic matter sedimentation on oxygen concentrations. Since the P turnover time is short and legacy P small, measures to bind P in Stockholm inner archipelago sediments would primarily accumulate recent P inputs, imported from the Baltic Sea and from Lake Mälaren.