LMB · XBRL financial data
Limbach Holdings financial statements, every fiscal year
The same tables from 6 filings, lined up. Matched by XBRL tag: renamed lines keep their history.
How these numbers work
- Every number comes from the company's XBRL financial data filed with the SEC, and each one links to its filing.
- Lines are matched by XBRL tag, so a line renamed between filings keeps its history.
- * marks a quarter worked out from the filing totals: the 10-K year minus the first three quarters, or a year-to-date total minus the earlier one. Fourth-quarter earnings per share is fourth-quarter net income over the fourth-quarter weighted shares.
- 0 means a filing states zero; a dash (—) means no filing states that number.
- “year only” means the 10-K gives the full year but not the quarters needed to work out the fourth. A worked-out quarter of revenue, cost of revenue or operating cash flow more than twice the company's largest quarter of the two years before is shown this way too.
- Gross profit is shown as the company reports it; a worked-out quarter must equal revenue less cost of revenue for that quarter, or it is a dash.
- Operating income can be above gross profit when the company books other operating income between the two, shown on its own line.
- Shares outstanding come from each filing's cover page, as of the date printed there.
- Quarters are fiscal: Q2 FY27 is the second quarter of the company's fiscal 2027.
Income statement
CSVFiscal years (LMB's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Revenue | 568,209 | 490,351 | 496,782 | 516,350 | 518,781 | 646,804 |
| Cost of revenue | 486,823 | 404,441 | 403,041 | 397,060 | 374,500 | 477,490 |
| Gross profit | 81,386 | 85,910 | 93,741 | 119,290 | 144,281 | 169,314 |
| Selling, general and administrative | 63,601 | 71,436 | 77,879 | 87,397 | 97,199 | 109,518 |
| Total operating expenses | 64,231 | 71,920 | 81,731 | 90,006 | 105,657 | 119,860 |
| Operating income (loss) | 17,155 | 13,990 | 12,010 | 29,284 | 38,624 | 49,454 |
| Interest income | — | — | 0 | 1,217 | 2,227 | 815 |
| Interest expense | — | — | 2,144 | 2,046 | 1,869 | 3,133 |
| Other income (expense) | — | — | (2,402) | (1,184) | 1,342 | (825) |
| Income tax expense (benefit) | 1,182 | 2,763 | 2,809 | 7,346 | 9,091 | 9,565 |
| Net income (loss) | 5,807 | 6,714 | 6,799 | 20,754 | 30,875 | 39,064 |
| Earnings per share, basic USD per share | 0.74 | 0.67 | 0.65 | 1.93 | 2.75 | 3.37 |
| Earnings per share, diluted USD per share | 0.72 | 0.66 | 0.64 | 1.76 | 2.57 | 3.23 |
| Weighted average shares, basic thousands of shares | 7,865 | 10,013 | 10,425 | 10,773 | 11,244 | 11,575 |
| Weighted average shares, diluted thousands of shares | 8,065 | 10,232 | 10,677 | 11,812 | 12,027 | 12,080 |
Balance sheet
CSVFiscal years (LMB's year ends in late December)
Cash flows
CSVFiscal years (LMB's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Net income (loss) | 5,807 | 6,714 | 6,799 | 20,754 | 30,875 | 39,064 |
| Stock-based compensation | 1,068 | 2,601 | 2,742 | 4,910 | 5,773 | 7,016 |
| Depreciation and amortization | 6,171 | 5,948 | 8,158 | 8,244 | 11,888 | 18,133 |
| Net cash from operating activities | 39,815 | (24,233) | 35,373 | 57,366 | 36,783 | 45,700 |
| Purchases of property and equipment | 1,483 | 791 | 993 | 2,266 | 7,524 | 3,807 |
| Net cash from investing activities | (1,323) | (19,303) | (495) | (17,092) | (42,569) | (67,586) |
| Proceeds from issuing common stock | 0 | 22,773 | 0 | — | — | — |
| Share repurchases | — | 0 | 2,000 | 0 | 0 | — |
| Net cash from financing activities | (4,689) | 15,865 | (13,353) | (16,490) | (9,117) | (11,699) |
| Net change in cash | 33,803 | (27,671) | 21,525 | 23,784 | (14,903) | (33,585) |
Compare with peers
SIC 1700 and related industry codes, similar size. Each row is the latest quarter reported.
How peers are chosen
- SIC 1700 and related industry codes with public float (or, where float is missing, quarterly revenue) between 0.2x and 5x the company's.
- Each row is the latest quarter the company has reported, named in the Quarter column; when that filing is a 10-K, it is the fourth quarter, never the full year.
- Runway shows only for companies burning cash with under $10B of public float.
- * marks a quarter worked out from the filing totals: for a 10-K, the year less the first three quarters; for a 10-Q, the year-to-date total less the earlier one.
| Company | Cash ($K) | Revenue, quarter ($K) | Operating cash flow, quarter ($K) | Shares outstanding | Runway | Quarter |
|---|---|---|---|---|---|---|
| Limbach Holdings | 29,062 | 230,460 | 20,266* | 11.7M | — | 10-QSep 30, 2026 |
| Sunrun | 699,428 | 1,099,498 | 301,380* | 242.0M | — | 10-QSep 30, 2026 |
| Argan | 364,481 | 383,976 | 96,970* | 14.0M | — | 10-QJul 31, 2026 |
| Ameresco | 138,333 | 515,464 | (107,209)* | not reported | 1.3 quarters | 10-QJun 30, 2026 |
| Matrix Service | 222,966 | 244,531* | (8,810)* | 28.3M | 25.3 quarters | 10-KJun 30, 2026 |
Not investment advice. Not affiliated with the U.S. SEC.
