Willdan Group, Inc. (WLDN)

Every figure below is the company's own, as filed. Nothing is estimated and nothing is smoothed — a period the filing does not support is left blank rather than drawn. Quarters are the company's own, counted from its financial year ending 01-02. Amounts in USD.

Revenue TTM

0 300M 600M 900M Q3 '17: 183M Q4 '17: 208.9M Q1 '18: 243.4M Q2 '18: 256.3M Q3 '18: 266.6M Q4 '18: 273.4M Q1 '19: 259.6M Q2 '19: 247.6M Q3 '19: 250M Q4 '19: 272.3M Q1 '20: 309.4M Q2 '20: 354M Q3 '20: 400.1M Q4 '20: 443.1M Q1 '21: 457.3M Q2 '21: 436.5M Q3 '21: 423.5M Q4 '21: 391M Q1 '22: 364M Q2 '22: 364.6M Q3 '22: 358.4M Q4 '22: 353.8M Q1 '23: 366.5M Q2 '23: 385M Q3 '23: 408.1M Q4 '23: 429.1M Q1 '24: 439.9M Q2 '24: 456.3M Q3 '24: 467.7M Q4 '24: 510.1M Q1 '25: 530M Q2 '25: 551.9M Q3 '25: 577.4M Q4 '25: 565.8M Q1 '26: 595.7M Q2 '26: 628.2M Q3 '26: 651.9M Q4 '26: 681.6M Q1 '27: 684.3M Q2 '27: 741.8M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Gross Profit TTM

0 100M 200M 300M Q4 '24: 179.8M Q1 '25: 185.9M Q2 '25: 194.1M Q3 '25: 202.2M Q4 '25: 202.8M Q1 '26: 213M Q2 '26: 232.5M Q3 '26: 248M Q4 '26: 255.7M Q1 '27: 261.2M Q2 '27: 280.3M Q4 '24 Q2 '25 Q4 '25 Q2 '26 Q4 '26 Q2 '27

Operating Income TTM

-20M 0 20M 40M 60M Q3 '17: 9.3M Q4 '17: 11.5M Q1 '18: 11.7M Q2 '18: 12.3M Q3 '18: 13.4M Q4 '18: 13.7M Q1 '19: 13.7M Q2 '19: 13.4M Q3 '19: 14.1M Q4 '19: 12.8M Q1 '20: 10.6M Q2 '20: 9.1M Q3 '20: 5.5M Q4 '20: 9.4M Q1 '21: 1.3M Q2 '21: -5.3M Q3 '21: -5M Q4 '21: -16.2M Q1 '22: -12.1M Q2 '22: -15.4M Q3 '22: -15.5M Q4 '22: -8.7M Q1 '23: -10.1M Q2 '23: -8.3M Q3 '23: -10.5M Q4 '23: -7.1M Q1 '24: 2.6M Q2 '24: 10.3M Q3 '24: 14.9M Q4 '24: 22.1M Q1 '25: 23.4M Q2 '25: 27.4M Q3 '25: 32.2M Q4 '25: 31.4M Q1 '26: 33M Q2 '26: 38.4M Q3 '26: 44.6M Q4 '26: 44.1M Q1 '27: 44.4M Q2 '27: 52.3M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Net Income TTM

-25M 0 25M 50M 75M Q3 '17: 7.1M Q4 '17: 8.3M Q1 '18: 9.9M Q2 '18: 10M Q3 '18: 10.4M Q4 '18: 12.1M Q1 '19: 11.7M Q2 '19: 11.7M Q3 '19: 12.1M Q4 '19: 10M Q1 '20: 7.4M Q2 '20: 5.7M Q3 '20: 2.8M Q4 '20: 4.8M Q1 '21: -2.9M Q2 '21: -9.5M Q3 '21: -7.3M Q4 '21: -14.5M Q1 '22: -10.1M Q2 '22: -9.7M Q3 '22: -11.5M Q4 '22: -8.4M Q1 '23: -8.4M Q2 '23: -8.1M Q3 '23: -8.9M Q4 '23: -8.4M Q1 '24: -3.7M Q2 '24: 980K Q3 '24: 2.5M Q4 '24: 10.9M Q1 '25: 12.9M Q2 '25: 17.1M Q3 '25: 22.9M Q4 '25: 22.6M Q1 '26: 24.3M Q2 '26: 35.2M Q3 '26: 41.5M Q4 '26: 52.6M Q1 '27: 56.4M Q2 '27: 65.3M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Cost of Revenue TTM

0 200M 400M 600M Q3 '17: 122.3M Q4 '17: 143.3M Q1 '18: 173.7M Q2 '18: 185.6M Q3 '18: 191.8M Q4 '18: 196.7M Q1 '19: 181M Q2 '19: 164.7M Q3 '19: 164M Q4 '19: 179.3M Q1 '20: 210.1M Q2 '20: 246.6M Q3 '20: 281.4M Q4 '20: 308.1M Q1 '21: 317.6M Q2 '21: 298.4M Q3 '21: 285.4M Q4 '21: 261.6M Q1 '22: 233.2M Q2 '22: 232.5M Q3 '22: 222.8M Q4 '22: 217.9M Q1 '23: 231.4M Q2 '23: 249.2M Q3 '23: 272.9M Q4 '23: 285.6M Q1 '24: 286.4M Q2 '24: 293.8M Q3 '24: 299.2M Q4 '24: 330.3M Q1 '25: 344.1M Q2 '25: 357.8M Q3 '25: 375.2M Q4 '25: 363M Q1 '26: 382.7M Q2 '26: 395.6M Q3 '26: 403.9M Q4 '26: 425.9M Q1 '27: 423.1M Q2 '27: 461.5M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Operating Cash Flow TTM

-30M 0 30M 60M 90M Q3 '17: 19.1M Q4 '17: 21.6M Q1 '18: 21.8M Q2 '18: 21.4M Q3 '18: 6.9M Q4 '18: 11.1M Q1 '19: 5.7M Q2 '19: 8M Q3 '19: 20.6M Q4 '19: 7.6M Q1 '20: 24.8M Q2 '20: 16M Q3 '20: 4.3M Q4 '20: 11.6M Q1 '21: 17.6M Q2 '21: 28.4M Q3 '21: 30.2M Q4 '21: 47M Q1 '22: 36.2M Q2 '22: 17.1M Q3 '22: 18.4M Q4 '22: 9.8M Q1 '23: -3.6M Q2 '23: 6.9M Q3 '23: 16M Q4 '23: 9.4M Q1 '24: 34.5M Q2 '24: 31.9M Q3 '24: 29M Q4 '24: 39.2M Q1 '25: 48.9M Q2 '25: 48.1M Q3 '25: 53.7M Q4 '25: 72.1M Q1 '26: 48.4M Q2 '26: 73M Q3 '26: 74.4M Q4 '26: 80.1M Q1 '27: 52.4M Q2 '27: 70.9M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Free Cash Flow TTM

-25M 0 25M 50M 75M Q3 '17: 16.9M Q4 '17: 19.9M Q1 '18: 19.9M Q2 '18: 19.4M Q3 '18: 4.8M Q4 '18: 8.9M Q1 '19: 4M Q2 '19: 6.8M Q3 '19: 19.5M Q4 '19: 5.5M Q1 '20: 20.9M Q2 '20: 10.8M Q3 '20: -2.7M Q4 '20: 5M Q1 '21: 10.7M Q2 '21: 22.4M Q3 '21: 25.2M Q4 '21: 41.9M Q1 '22: 32M Q2 '22: 11.9M Q3 '22: 12.4M Q4 '22: 1.3M Q1 '23: -12.9M Q2 '23: -2.8M Q3 '23: 5.4M Q4 '23: -169K Q1 '24: 23.5M Q2 '24: 20.9M Q3 '24: 18.8M Q4 '24: 29.3M Q1 '25: 40.5M Q2 '25: 39.9M Q3 '25: 45.3M Q4 '25: 63.7M Q1 '26: 39.7M Q2 '26: 64.2M Q3 '26: 65.1M Q4 '26: 70.7M Q1 '27: 43.3M Q2 '27: 62.3M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Operating cash flow minus capital expenditure.

Shares Outstanding Quarterly

0 6M 12M 18M Q3 '17: 8.7M Q4 '17: 9M Q1 '18: 8.9M Q2 '18: 9.1M Q3 '18: 9.2M Q4 '18: 9.2M Q1 '19: 9.2M Q2 '19: 9.3M Q3 '19: 9.3M Q4 '19: 11.2M Q1 '20: 11M Q2 '20: 11.7M Q3 '20: 11.8M Q4 '20: 11.9M Q1 '21: 11.5M Q2 '21: 11.7M Q3 '21: 12.4M Q4 '21: 12M Q1 '22: 12.1M Q2 '22: 12.4M Q3 '22: 13.1M Q4 '22: 12.7M Q1 '23: 12.8M Q2 '23: 13M Q3 '23: 13.4M Q4 '23: 13.1M Q1 '24: 13.5M Q2 '24: 13.5M Q3 '24: 13.7M Q4 '24: 13.7M Q1 '25: 13.9M Q2 '25: 14.1M Q3 '25: 14.4M Q4 '25: 14.5M Q1 '26: 14.6M Q2 '26: 14.9M Q3 '26: 15.2M Q4 '26: 15.3M Q1 '27: 15.4M Q2 '27: 15.4M Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

Weighted average diluted, as the filer reports it for each period. An average cannot be added across periods, so this one is always shown per period the filer tagged rather than as a trailing year.

EPS TTM

-1.50 0.00 1.50 3.00 4.50 Q3 '17: 0.83 Q4 '17: 0.96 Q1 '18: 1.13 Q2 '18: 1.12 Q3 '18: 1.15 Q4 '18: 1.33 Q1 '19: 1.27 Q2 '19: 1.27 Q3 '19: 1.31 Q4 '19: 1.06 Q1 '20: 0.78 Q2 '20: 0.56 Q3 '20: 0.25 Q4 '20: 0.41 Q1 '21: -0.26 Q2 '21: -0.83 Q3 '21: -0.66 Q4 '21: -1.26 Q1 '22: -0.86 Q2 '22: -0.80 Q3 '22: -0.95 Q4 '22: -0.69 Q1 '23: -0.68 Q2 '23: -0.64 Q3 '23: -0.69 Q4 '23: -0.65 Q1 '24: -0.28 Q2 '24: 0.08 Q3 '24: 0.18 Q4 '24: 0.79 Q1 '25: 0.93 Q2 '25: 1.23 Q3 '25: 1.63 Q4 '25: 1.58 Q1 '26: 1.69 Q2 '26: 2.39 Q3 '26: 2.78 Q4 '26: 3.48 Q1 '27: 3.71 Q2 '27: 4.26 Q3 '18 Q4 '19 Q1 '21 Q2 '22 Q3 '23 Q4 '24 Q1 '26 Q2 '27

The filer's own published earnings a share for each quarter, four quarters added up. The company page divides trailing net income by the share count instead, which lands within about 1% of this and is not the same sum, so the two are named differently rather than presented as one figure.