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 Q4 '11: 77.9M Q1 '12: 83.7M Q2 '12: 89.1M Q3 '12: 97M Q4 '12: 107.2M Q1 '13: 109.9M Q2 '13: 107.6M Q4 '14: 85.5M Q1 '15: 86.8M Q2 '15: 93.3M Q3 '15: 100.3M Q4 '15: 108.1M Q1 '16: 118.7M Q2 '16: 128.5M Q3 '16: 133.8M Q4 '16: 135.1M Q1 '17: 135.7M Q2 '17: 157.9M 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 Q1 '12 Q2 '15 Q2 '17 Q2 '19 Q2 '21 Q2 '23 Q2 '25 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 Q4 '11: 3.1M Q1 '12: 2.4M Q2 '12: 2.1M Q3 '12: 3.1M Q4 '12: 3.4M Q1 '13: 1.4M Q2 '13: -19.2M Q4 '14: 2.6M Q1 '15: 3.5M Q2 '15: 4.7M Q3 '15: 6.5M Q4 '15: 8.3M Q1 '16: 9.6M Q2 '16: 10.5M Q3 '16: 9.5M Q4 '16: 7.5M Q1 '17: 6.7M Q2 '17: 7.9M 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 Q1 '12 Q2 '15 Q2 '17 Q2 '19 Q2 '21 Q2 '23 Q2 '25 Q2 '27

Net Income TTM

-25M 0 25M 50M 75M Q4 '11: 2.7M Q1 '12: 2M Q2 '12: 1.5M Q3 '12: 2.9M Q4 '12: 1.8M Q1 '13: 710K Q2 '13: -17M Q4 '14: 2.6M Q1 '15: 3.5M Q2 '15: 4.8M Q3 '15: 8.1M Q4 '15: 9.4M Q1 '16: 9.6M Q2 '16: 9.3M Q3 '16: 5.9M Q4 '16: 4.3M Q1 '17: 3.8M Q2 '17: 5.4M 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 Q1 '12 Q2 '15 Q2 '17 Q2 '19 Q2 '21 Q2 '23 Q2 '25 Q2 '27

Cost of Revenue TTM

0 200M 400M 600M Q4 '11: 42M Q1 '12: 47.3M Q2 '12: 52M Q3 '12: 57.4M Q4 '12: 64.7M Q1 '13: 68.4M Q2 '13: 70M Q3 '13: 64.4M Q4 '13: 59M Q1 '14: 53.8M Q2 '14: 48.1M Q3 '14: 48.8M Q4 '14: 48.9M Q1 '15: 50.1M Q2 '15: 55M Q3 '15: 59.5M Q4 '15: 63.8M Q1 '16: 70.4M Q2 '16: 77M Q3 '16: 81.5M Q4 '16: 82.1M Q1 '17: 82.5M Q2 '17: 100.7M 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 Q2 '13 Q2 '15 Q2 '17 Q2 '19 Q2 '21 Q2 '23 Q2 '25 Q2 '27

Operating Cash Flow TTM

-30M 0 30M 60M 90M Q4 '13: 4.7M Q1 '14: 6.2M Q2 '14: 5.8M Q3 '14: 4.2M Q4 '15: 11.9M Q1 '16: 4.9M Q2 '16: 10.3M Q3 '16: 11.8M Q4 '16: 8.1M Q1 '17: 8.8M Q2 '17: 12.5M 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 Q1 '14 Q4 '16 Q3 '18 Q2 '20 Q1 '22 Q4 '23 Q3 '25 Q2 '27

Free Cash Flow TTM

-25M 0 25M 50M 75M Q4 '13: 4.3M Q1 '14: 5.9M Q2 '14: 5.6M Q3 '14: 3.9M Q4 '15: 11.4M Q1 '16: 4.2M Q2 '16: 8.8M Q3 '16: 9.8M Q4 '16: 5.6M Q1 '17: 6.3M Q2 '17: 10.4M 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 Q1 '14 Q4 '16 Q3 '18 Q2 '20 Q1 '22 Q4 '23 Q3 '25 Q2 '27

Operating cash flow minus capital expenditure.

Shares Outstanding Quarterly

0 6M 12M 18M Q2 '11: 7.3M Q3 '11: 7.3M Q1 '12: 7.3M Q2 '12: 7.5M Q3 '12: 7.5M Q4 '12: 7.3M Q1 '13: 7.3M Q2 '13: 7.3M Q2 '13: 7.3M Q3 '13: 7.3M Q4 '13: 7.3M Q4 '13: 7.3M Q1 '14: 7.4M Q1 '14: 7.4M Q2 '14: 7.4M Q3 '14: 7.5M Q4 '14: 7.5M Q1 '15: 7.6M Q2 '15: 7.7M Q3 '15: 7.9M Q4 '15: 8M Q1 '16: 8.1M Q2 '16: 8.1M Q3 '16: 8.1M Q4 '16: 8.1M Q1 '17: 8.2M Q2 '17: 8.5M 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 Q2 '12 Q1 '14 Q1 '16 Q2 '18 Q3 '20 Q4 '22 Q1 '25 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

-3.00 -1.50 0.00 1.50 3.00 4.50 Q4 '11: 0.37 Q1 '12: 0.27 Q2 '12: 0.20 Q3 '12: 0.38 Q4 '12: 0.24 Q1 '13: 0.09 Q2 '13: -2.34 Q4 '14: 0.34 Q1 '15: 0.46 Q2 '15: 0.62 Q3 '15: 1.04 Q4 '15: 1.21 Q1 '16: 1.22 Q2 '16: 1.17 Q3 '16: 0.74 Q4 '16: 0.53 Q1 '17: 0.48 Q2 '17: 0.65 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 Q1 '12 Q2 '15 Q2 '17 Q2 '19 Q2 '21 Q2 '23 Q2 '25 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.