Euro Area M3 Growth Rate: Monthly Year-on-Year Data Since 1981
ECB Dataset · Liquidity & Monetary Policy
Euro Area M3 Growth Rate — YoY (1981–2026)
The annual growth rate of M3 — the rate at which the euro area money supply is expanding or contracting. Contracted for the first time in euro era history in 2023. Now recovering at approximately 3.3%.
Money supply growth and inflation
M3 growth is computed from an index of notional stocks (adjusted for reclassifications and other non-transaction changes) to isolate genuine money creation from statistical artifacts. This makes it a cleaner signal than raw stock changes, which can be distorted by bank mergers, regulatory reclassifications, and other non-monetary events.
The historical pattern is striking: M3 growth averaged ~8% in the 1980s, ~5% in the 2000s, and collapsed to near-zero during the 2012 sovereign crisis. The 2020–2021 spike to 12%+ was unprecedented and is now widely considered a leading indicator of the 2022 inflation surge. Underlying series: the ECB Data Portal series for YoY. The subsequent contraction to −1% in late 2023 was equally unprecedented and signaled aggressive monetary tightening transmission.
Current reading and implications
M3 growth has recovered to ~3.3% as of early 2026, driven by recovering bank lending and stabilizing deposit flows. This is broadly consistent with the ECB’s implicit comfort zone and supports the view that inflationary pressures are normalizing — though the relationship between M3 and inflation has weakened in the short-run due to velocity shifts.
CSV Data Dictionary
| Column | Type | Description |
|---|---|---|
| date | YYYY-MM-DD | First day of the reference month |
| m3_growth_yoy | float | M3 annual growth rate (%, index of notional stocks, seasonally adjusted) |
Python Code Example
import pandas as pd
from io import StringIO
import requests
url = "https://data-api.ecb.europa.eu/service/data/BSI/M.U2.Y.V.M30.X.I.U2.2300.Z01.A"
resp = requests.get(url, params={"format": "csvdata"})
raw = pd.read_csv(StringIO(resp.text))
df = raw[["TIME_PERIOD", "OBS_VALUE"]].copy()
df.columns = ["date", "m3_growth_yoy"]
df["date"] = pd.to_datetime(df["date"] + "-01")
df = df.sort_values("date").set_index("date")
df.plot(title="Euro Area M3 Growth Rate YoY", figsize=(12, 5))Related ECB Datasets
Source & Methodology
Source: ECB — Monetary Statistics (BSI)
Series key: BSI/M.U2.Y.V.M30.X.I.U2.2300.Z01.A
License: ECB open data — free reuse with attribution.
Cite This Dataset
Last updated — 21 September 2026
Disclaimer – Financial Information: The analyses, commentary, and content published on eco3min.fr are provided for informational and educational purposes only. They do not constitute investment advice or a solicitation to buy or sell financial instruments. Past performance is not indicative of future results. All investment decisions involve risk and are the sole responsibility of the reader.
Source terms. This series is produced by the European Central Bank (ECB Data Portal) and redistributed here under the ECB's copyright terms: free use provided the ECB is cited as the source, the data are reproduced accurately, and any modification (such as a spread or a real rate computed by Eco3min) is stated explicitly. Eco3min cannot sub-license it under Creative Commons: anyone reusing this file remains bound by the ECB terms, not by CC BY. Full terms.
