Winners and losers from the Pittsburgh Steelers’ 28-27 loss to the Buffalo Bills in Thursday’s preseason finale.

WINNERS
WR Germie Bernard

Bernard made sure the Steelers wouldn’t be shut out a second-straight week. Capitalizing on a Bills muffed punt, Bernard scored the first touchdown of his NFL career in statement fashion. A simple bubble from Will Howard against off coverage, and Bernard showed his YAC ability making former first-round CB Max Hairston miss for the score.

It was Bernard’s only catch of the night, but he made it count. Bernard’s not the tallest guy but is well-built and showed how tough he is to take down in space. He’s come alive when the lights are on.

DB Devan Boykin & Robert Spears-Jennings

An active day for Boykin and Spears-Jennings, who served as the starting safeties with the vets getting the night off. Boykin was around the ball and played downhill to pick up seven tackles by halftime. He finished with the team lead. Spears-Jennings continues to be a thumper who knocks you down when he makes contact. He had a good stick on the first drive and pressured Buffalo into a throwaway a few plays later.

Spears-Jennings has done all he can to make the team. Now, we’ll see if the numbers crunch gives him the nod. Boykin is trending toward staying on the practice squad.

WR Max Hurleman

Hurleman is a steady player who finished his strong summer with a good performance Thursday night. An improvement from his hot 2025 start that fizzled out in the end. Hurleman made plays as a receiver, including a third-and-long pickup against the blitz. He was an effective run blocker, cracking the safety to give RB Travis Homer the edge on a second quarter run.

He tied for the team lead with three receptions on three targets and had the outright advantage with 50 yards.

NT Gabriel Rubio

It’s tough to judge linemen watching a game live, but Rubio stood out on a couple of reps. His strength and “knock back” power to press the line of scrimmage were evident in the first half. He plays with great pad level and leverage for a tall guy. In the second half, he flashed a solid rip move to get pressure. Developing as a pass rusher is a must and finding even one move would be big for him.

Veteran DL Dean Lowry was one of many who didn’t play tonight. Is that a sign Lowry has made the team over him or just a chance for Rubio and younger players to get reps and prove they belong? It’s hard to say. Answers will arrive by Sunday evening.

CB D’Shawn Jamison

A nice night for Jamison after allowing a Cover 0 touchdown to end the Jets game. Jamison replaced an injured Ben Skowronek at gunner and made a downfield tackle to prevent what could’ve been a good return. In the second half, he broke up a vertical shot down the right sideline, finishing the play and playing through the hands. He gave up a completion on a crossing route in the fourth quarter but flushed it and recorded a tackle for loss immediately after. Late in the game, he made a hard-charge goal-line stop.

It’s hard to see him making the 53 but practice squad is a real possibility.

RB Lew Nichols

Nichols started the game and saw most of the first half reps. He ran with decisiveness, burst, power, and agility. Nichols rarely has negative reps. In the first half, he averaged 5.7 yards on seven carries and added a 13-yard reception.

Pittsburgh sat most of its vets in this game, but Travis Homer dressed and played, subbing in after Nichols. It’s still hard to say if Nichols is going to make the 53-man roster but he’s clearly the third-best runner back behind Jaylen Warren and Rico Dowdle. If there’s a multi-game injury to one of them, Nichols should get the nod.

RB Eli Heidenreich

Heidenreich wasn’t spectacular but consistently solid Thursday night. He ran hard, broke tackles, and scored his first NFL touchdown with rookie OT Max Iheanachor leading the way in space.

Heidenreich played over Kaleb Johnson in this game to boot. He also saw time on special teams, making the tackle on the opening kickoff and serving as the starting personal protector. He’s still tracking for the practice squad, but this was a nice way to end the preseason. He looked more comfortable and decisive.

WR/RET Kaden Wetjen

Wetjen was close to falling onto the losers list before his 45-yard punt return for a touchdown. A prime chance for a big play with Buffalo backed up, guaranteeing an open field punt and usually a quicker operation. Wetjen reversed course and was nearly taken down, but he broke two tackles and sped down the left sideline for the touchdown. Kudos to the blocking team for keeping things clean, too, and WR Cornell Powell threw a key final block.

Wetjen moved the sticks on a third down angle route and showed plus ball security (aside from the ball bouncing off him while out of bounds). He still has to learn to get vertical more quickly, but a touchdown in the return game is massive. That should cool down some of the heat Wetjen’s been feeling.

LOSERS
ILB Carson Bruener

Bruener impressed last week but couldn’t carry that over into the finale. He was juked out in space by RB Frank Gore Jr. (a reminder we are all so very old) turning a throw at the line of scrimmage into a near touchdown. Bruener will resume his role as a quality special teamer, but this was a quieter note to end a pretty good summer.

OT Dylan Cook

Cook had his struggles against Buffalo’s backups. He’s too vulnerable against bull/power moves and gets run into the pocket far too often. Including on the first snap of the game that ended in a Will Howard sack. On first watch, this was Cook’s worst game of the preseason, and there aren’t other inspiring alternatives in Broderick Jones and Iheanachor.

Iheanachor struggled early in his NFL debut and had to knock off rust after allowing an ugly sack. But the first-round pick progressed throughout the game and the hold called on him was bogus; refs have a bad habit of calling those chops as holds. So I won’t put him fully on the loser’s list. Broderick Jones’ issues persist, and Pittsburgh has valid question marks at right tackle no matter who plays this year.

Defensive Splash

In terms of turnovers. The Steelers end the preseason without a defensive takeaway. Their only came on special teams thanks to a Ray Davis muffed punt the Steelers had no real impact on aside from some good directional punting from Cameron Johnston. DeShon Elliott forced a fumble against the New York Jets, but the defense couldn’t recover it. The group also felt like it needed to warm up to every game, too, with sluggish starts.

Pittsburgh played most of the summer with backups and hardly featured any starters Thursday night. That context is key. But one question I had under new DC Patrick Graham was Pittsburgh’s ability to create takeaways. It’s not in Graham’s track record and the next one the Steelers get will be their first of his tenure.

CB Tamon Lynum

A rough end for Lynum. He missed a block as a jammer on the punt coverage team and then ran into Kaden Wetjen to prevent a better return. He was flagged for pass interference late in the game with the Bills trailing by seven. He gave up the go-ahead two-point conversion, too.

He was set to be waived no matter what happened tonight, but he sure didn’t show up positively.