Canadian National Railway Co (CNI) Free Cash Flow (2009 - 2025)
Canadian National Railway's Free Cash Flow came in at $1.6 billion for the quarter ended Dec 31, 2025, up 11.8% from $1.43 billion a year earlier.
Canadian National Railway Co (CNI) Free Cash Flow (2009 - 2025) Analysis & Trends
For the year ended Dec 31, 2025, Canadian National Railway's Free Cash Flow was $2.43 billion, up 5.5% from the prior year.
- Free Cash Flow carries a five-year compound annual growth rate of -0.3% (years ended Dec 2020 to Dec 2025).
- Going back by year, Free Cash Flow was $2.3 billion in the year ended Dec 31, 2024 (-17.8%), $2.8 billion in the year ended Dec 31, 2023 (-7.1%), $3.01 billion in the year ended Dec 31, 2022 (-7.5%) and $3.26 billion in the year ended Dec 31, 2021 (+32.1%).
- The five-year range for quarterly Free Cash Flow is $570 million (the quarter ended Mar 31, 2022) to $2.46 billion (the quarter ended Sep 30, 2021).
- Year-over-year, Free Cash Flow increased in three of the last six quarters, with growth averaging 0.5%.
- The fastest year-over-year change in Free Cash Flow over five years came in the quarter ended Sep 30, 2021 (growth of 519.2%), and the weakest in the quarter ended Mar 31, 2022 (a decline of 40.1%).
Peer Comparison
Historic Data
| Date | Value |
|---|---|
| Dec 31, 2025 | 2.48 Bn |
| Mar 31, 2025 | 1.68 Bn |
| Dec 31, 2024 | 2.10 Bn |
| Jun 30, 2024 | 1.81 Bn |
| Mar 31, 2024 | 1.69 Bn |
| Dec 31, 2023 | 2.46 Bn |
| Sep 30, 2023 | 2.43 Bn |
| Jun 30, 2023 | 1.99 Bn |
| Mar 31, 2023 | 1.52 Bn |
| Dec 31, 2022 | 2.35 Bn |
| Sep 30, 2022 | 2.86 Bn |
| Jun 30, 2022 | 2.42 Bn |
| Mar 31, 2022 | 570.00 Mn |
| Dec 31, 2021 | 2.81 Bn |
| Sep 30, 2021 | 3.29 Bn |
| Jun 30, 2021 | 2.20 Bn |
| Mar 31, 2021 | 952.00 Mn |
| Dec 31, 2020 | 2.66 Bn |
| Sep 30, 2020 | 915.52 Mn |
| Jun 30, 2020 | 1.78 Bn |
Canadian National Railway Co Free Cash Flow API
Pull this series into your own models, spreadsheets and apps with the Business Quant
Historical Metrics API. The request below matches the chart above — change the
frequency, period or values and it follows. Swap YOUR_API_KEY for your own key.
https://data.businessquant.com/historic?slug=free-cash-flow&ticker=CNI&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "free-cash-flow", "ticker": "CNI", "period": "max", "api_key": "YOUR_API_KEY"}
data = requests.get(url, params=params).json()
const res = await fetch("https://data.businessquant.com/historic?slug=free-cash-flow&ticker=CNI&period=max&api_key=YOUR_API_KEY");
const data = await res.json();