SANTA CLARA -- Here's who stood out on Day 14 of 49ers training camp. Keep in mind, the following players are injured and did not practice: Jimmie Ward, Charvarius Ward, Emmanuel Moseley, Arik Armstead, Mike McGlinchey, Daniel Brunskill, Elijah Mitchell, Danny Gray, Jaylon Moore, Dontae Johnson and Curtis Robinson.
1. Quarterback Trey Lance
Completed 11 of 14 pass attempts against a defense that was missing three-quarters of its starting secondary, which explains Lance's struggles early in camp. He's not necessarily inaccurate -- he was on point today. His top receivers -- George Kittle, Deebo Samuel and Brandon Aiyuk -- simply have struggled to get open against Moseley and the two Wards. With those three injured, everything is now available to Lance. His best pass today was a 20-yard missile up the seam to Kyle Juszczyk. Lance's only misses were an overthrown deep pass to Deebo Samuel, a well-thrown deep out to Willie Snead who couldn't get his second foot in bounds, plus the daily drop by Jauan Jennings (more on him in a minute). Lance appeared to throw with a higher arm slot today, so his passes didn't sail high. Keep it up, Trey.
2. Wide receiver Deebo Samuel
Made a spinning one-handed catch with his left hand on a pass Lance threw behind him on 3rd and 6. Samuel makes extremely impressive catches for a receiver who drops so many passes.
3. Running back Jeff Wilson Jr.
Split first-string reps with Trey Sermon and completely outperformed him. Wilson Jr. was explosive and decisive, while Sermon was slow and hesitant. It's amazing the 49ers have spent third-round picks on running backs two years in a row and neither of them are better than Wilson Jr.
4. Left tackle Justin Skule
Skule had a horrific start to a camp and first preseason game, because he's coming off a torn ACL. So either he's washed up or rusty. Today, he won both of his reps during 1 on 1s -- he beat Samson Ebukam, who's having an excellent camp, and Kemoko Turay (more on him in a minute). Skule appears to be improving, which could mean his struggles were mostly rust.
5. Right tackle Alfredo Gutierrez
Beat Drake Jackson and planted him on the ground face-first during 1 on 1s. Gutierrez never won in this drill last year. He has improved so much since then.
6. Right guard Nick Zakelj
Beat Kerry Hyder and Robert Nkemdiche during 1 on 1s. Zakelj is a rookie who was awful the first two weeks of camp, but has improved steadily. Give him credit.
6. Right tackle Colton McKivitz
He's the new starting right tackle while Mike McGlinchey is injured. Today, McKivitz beat both Nick Bosa and Jordan Willis during 1 on 1s. Impressive for a player the 49ers cut just last year.
8. Right tackle Jordan Mills
The only player who could block Charles Omenihu (more on him in a minute). The 49ers have elevated Mills to second-string right tackle now that McGlinchey is injured, which means Mills could make the 53-man roster.
9. Defensive end Charles Omenihu
Beat both starting guards -- Aaron Banks and Spencer Burford -- during 1 on 1s. The 49ers are looking for an interior rusher who can replace Arden Key on third downs, and it appears Omenihu will win that job.
THE NOT SO GOOD
1. Wide receiver Jauan Jennings
Dropped a pass again. He's having an awful training camp. To be fair, Kendrick Bourne used to drop a dozen passes every year in camp and then play well during the regular season. Maybe Jennings is the same way.
2. Guard Aaron Banks
Got bullied by someone named Kevin Atkins during 1 on 1s. I'm quite curious to see what will happen when Banks faces starting defensive tackles in the regular season, because he can't block backups in practice.
3. Defensive end Kemoko Turay
He's a terrific athlete, but he doesn't bend well, which means he's not particularly effective as an edge rusher. He either gets pushed behind the quarterback or he does a spin move to the inside. Today, he tried the spin move against Trent Williams and Justin Skule and got nowhere both times. Turay has been one of the biggest disappointments of camp so far.
4. Safety George Odum
Gave up a 10-yard catch on 3rd and 5. Also gave up a 15-yard catch on 2nd and 13. In both cases, Odum was nowhere near the ball. He was backpedaling rather than breaking on passes right in front of him. He has an opportunity to start at free safety now that Jimmie Ward is out for roughly a month with a hamstring injury, but as of now it seems the 49ers will go with Tarvarius Moore.