Old Dominion Freight Line (ODFL) Operating Income (2009 - 2026)
Old Dominion Freight Line (ODFL) recorded Operating Income of $465.3 million in Q2 2026, up 30.0% from $357.9 million a year earlier and up 46.6% from the prior quarter.
Old Dominion Freight Line (ODFL) Operating Income (2009 - 2026) Analysis & Trends
On a TTM basis, Old Dominion Freight Line's Operating Income came in at $1.45 billion as of Jun 30, 2026, up 1.1% year-over-year; for FY2025, it came in at $1.36 billion, down 11.8% from FY2024.
- Annual Operating Income has declined for three straight years, though with a five-year compound annual growth rate of 8.5% (FY2020 to FY2025).
- Across earlier years, Operating Income came in at $1.54 billion in FY2024 (-5.9%), $1.64 billion in FY2023 (-10.9%), $1.84 billion in FY2022 (+32.3%) and $1.39 billion in FY2021 (+53.4%).
- The Q2 2026 figure is the highest quarterly Operating Income since Q3 2022.
- On a year-over-year basis, Operating Income rose in 1 of the last eight quarters, with an average decline of 6.7%.
- Peak year-over-year performance for Operating Income in the last five years was growth of 50.4% in Q1 2022, against a decline of 23.0% in Q2 2023 at the low end.
- Per Business Quant, the preceding three quarters came in at $317.34 million (Q1 2026), $304.25 million (Q4 2025) and $360.84 million (Q3 2025).
Peer Comparison
| # | Company | Market Cap | Enterprise Value | Gross Profit (Qtr) | Op. Inc (Qtr) |
|---|---|---|---|---|---|
| 1 | Union Pacific | 162.85 Bn | 157.37 Bn | - | 2.76 Bn |
| 2 | Csx | 86.62 Bn | 82.84 Bn | - | 1.51 Bn |
| 3 | Canadian Pacific Kansas City | 76.11 Bn | 75.83 Bn | - | 1.06 Bn |
| 4 | United Parcel Service | 70.66 Bn | 47.58 Bn | - | 930.00 Mn |
| 5 | Norfolk Southern | 70.32 Bn | 64.96 Bn | - | 1.12 Bn |
| 6 | Fedex | 68.53 Bn | 34.48 Bn | - | 1.55 Bn |
| 7 | Delta Air Lines | 55.25 Bn | 37.43 Bn | - | 1.86 Bn |
| 8 | Old Dominion Freight Line | 36.69 Bn | 35.95 Bn | - | 465.30 Mn |
| 9 | Ryanair Holdings | 28.78 Bn | 12.78 Bn | 3.13 Bn | 668.82 Mn |
| 10 | Copart | 25.20 Bn | 8.75 Bn | 732.88 Mn | 464.28 Mn |
Historic Data
| Date | Value |
|---|---|
| Jun 30, 2026 | 465.30 Mn |
| Mar 31, 2026 | 317.34 Mn |
| Dec 31, 2025 | 304.25 Mn |
| Sep 30, 2025 | 360.84 Mn |
| Jun 30, 2025 | 357.90 Mn |
| Mar 31, 2025 | 338.06 Mn |
| Dec 31, 2024 | 334.02 Mn |
| Sep 30, 2024 | 401.86 Mn |
| Jun 30, 2024 | 421.69 Mn |
| Mar 31, 2024 | 386.43 Mn |
| Dec 31, 2023 | 421.01 Mn |
| Sep 30, 2023 | 445.02 Mn |
| Jun 30, 2023 | 391.59 Mn |
| Mar 31, 2023 | 383.05 Mn |
| Dec 31, 2022 | 430.23 Mn |
| Sep 30, 2022 | 496.08 Mn |
| Jun 30, 2022 | 508.71 Mn |
| Mar 31, 2022 | 405.62 Mn |
| Dec 31, 2021 | 372.49 Mn |
| Sep 30, 2021 | 383.41 Mn |
Old Dominion Freight Line Operating 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=operating-income&ticker=ODFL&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "operating-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=operating-income&ticker=ODFL&period=max&api_key=YOUR_API_KEY");
const data = await res.json();