Old Dominion Freight Line (ODFL) Net Income (2009 - 2026)
Old Dominion Freight Line's Net Income was $350.6 million in Q2 2026, up 30.5% from $268.63 million a year earlier and up 47.2% from the prior quarter.
Old Dominion Freight Line (ODFL) Net Income (2009 - 2026) Analysis & Trends
On a trailing twelve-month basis, Old Dominion Freight Line's Net Income was $1.09 billion through Jun 30, 2026, down 0.5% year-over-year; for FY2025, it came in at $1.02 billion, down 13.7% from FY2024.
- Net Income has now declined for three consecutive years, though with a five-year compound annual growth rate of 8.8% (FY2020 to FY2025).
- In earlier years, Net Income was $1.19 billion in FY2024 (-4.3%), $1.24 billion in FY2023 (-10.0%), $1.38 billion in FY2022 (+33.1%) and $1.03 billion in FY2021 (+53.8%).
- The Q2 2026 figure marks the highest quarterly Net Income since Q3 2022.
- Compared with a year earlier, Net Income was higher in 1 of the last eight quarters, with an average decline of 7.2%.
- The best year-over-year quarter for Net Income over five years was Q1 2022 (growth of 50.4%); the worst was Q2 2023 (a decline of 22.3%).
- Per Business Quant data, ODFL's Net Income in the three quarters before Q2 2026 was $238.26 million (Q1 2026), $229.47 million (Q4 2025) and $270.95 million (Q3 2025).
Peer Comparison
| # | Company | Market Cap | Enterprise Value | Gross Profit (Qtr) | Net Income (Qtr) |
|---|---|---|---|---|---|
| 1 | Union Pacific | 161.62 Bn | 156.15 Bn | - | 1.99 Bn |
| 2 | Csx | 86.16 Bn | 82.37 Bn | - | 1.00 Bn |
| 3 | Canadian Pacific Kansas City | 74.78 Bn | 74.50 Bn | - | 740.28 Mn |
| 4 | United Parcel Service | 70.01 Bn | 46.94 Bn | - | 604.00 Mn |
| 5 | Norfolk Southern | 69.45 Bn | 64.09 Bn | - | 734.00 Mn |
| 6 | Fedex | 67.46 Bn | 33.40 Bn | - | 1.60 Bn |
| 7 | Delta Air Lines | 54.88 Bn | 37.06 Bn | - | 1.60 Bn |
| 8 | Old Dominion Freight Line | 36.07 Bn | 35.33 Bn | - | 350.60 Mn |
| 9 | Ryanair Holdings | 28.71 Bn | 12.72 Bn | 3.13 Bn | 625.00 Mn |
| 10 | Copart | 25.27 Bn | 9.69 Bn | 645.66 Mn | 326.83 Mn |
Historic Data
| Date | Value |
|---|---|
| Jun 30, 2026 | 350.60 Mn |
| Mar 31, 2026 | 238.26 Mn |
| Dec 31, 2025 | 229.47 Mn |
| Sep 30, 2025 | 270.95 Mn |
| Jun 30, 2025 | 268.63 Mn |
| Mar 31, 2025 | 254.66 Mn |
| Dec 31, 2024 | 263.14 Mn |
| Sep 30, 2024 | 308.58 Mn |
| Jun 30, 2024 | 322.05 Mn |
| Mar 31, 2024 | 292.30 Mn |
| Dec 31, 2023 | 322.82 Mn |
| Sep 30, 2023 | 339.29 Mn |
| Jun 30, 2023 | 292.36 Mn |
| Mar 31, 2023 | 285.04 Mn |
| Dec 31, 2022 | 323.93 Mn |
| Sep 30, 2022 | 377.40 Mn |
| Jun 30, 2022 | 376.08 Mn |
| Mar 31, 2022 | 299.75 Mn |
| Dec 31, 2021 | 278.81 Mn |
| Sep 30, 2021 | 286.63 Mn |
Old Dominion Freight Line Net Income 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=net-income&ticker=ODFL&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "net-income", "ticker": "ODFL", "period": "max", "api_key": "YOUR_API_KEY"}
data = requests.get(url, params=params).json()
const res = await fetch("https://data.businessquant.com/historic?slug=net-income&ticker=ODFL&period=max&api_key=YOUR_API_KEY");
const data = await res.json();