At the core of the Vikings' issues on offense remained a beleaguered offensive line, which lost one starter in training camp, waited until Week 4 to start another and eventually started eight different players. A lone silver lining was the emergence of rookie Brian O'Neill at right tackle. More help is needed this offseason.

Grades are based on a 1-to-5 scale, with '5' marking excellence, '4' for above-average, '3' for average, '2' for below-average and '1' for failure to perform. Players that did not accrue a season (weren't on the active roster for at least six weeks) or played in three games or fewer are not graded. Below are individual grades, based on game and practice observations, weekly film reviews and interviews with coaches, for 14 offensive linemen who finished the season on the Vikings' active roster, injured reserve or practice squad. Unofficial NFL stats, such as QB pressures, missed tackles and targeted passes, are compiled by

Previously: (Receivers) Adam Thielen and Stefon Diggs emerge as a top NFL duo; (Running backs/tight ends) Kyle Rudolph, Dalvin Cook filled underwhelming roles; (Quarterbacks) Kirk Cousins' first Vikings season busted when it mattered most; (Defensive backs) Harrison Smith leads a deep secondary; (Linebackers) Anthony Barr's contract season leaves you wanting more; (Defensive linemen) Danielle Hunter's name now among the NFL's best

OT Brian O'Neill (3.0) — Drafted in the second round (62nd overall) out of Pittsburgh. O'Neill was immediately labeled a project pick by general manager Rick Spielman, who likened the selection to the third-round pick spent on an underwhelming LSU product named Danielle Hunter in 2015. O'Neill lived up to the 'needs-work' label with an inconsistent summer, bottoming out with poor joint practices against the Jaguars in training camp. This was only his fourth year playing offensive line, but coaches noted great strides in his technique. Led to impressive spot starts at right tackle when Riley Reiff went down with a foot injury. Played 800 snaps [76.1%] after being a healthy scratch in the season opener. An injury to Aviante Collins opened the door in Week 2 at Green Bay, where O'Neill played 32 snaps in his NFL debut and held up well against Clay Matthews.

Allowed 31 QB pressures (no sacks), becoming only one of two offensive tackles this season — with Dallas' Tyron Smith — to play at least 500 pass pro snaps and not surrender a sack. Penalized four times, including three false starts. Struggled most as a run blocker, where he didn't move many defenders.

Made his first start in Week 6 against the Cardinals and did not give up the right tackle job the rest of the season. O'Neill, a former Delaware basketball standout and Pittsburgh tight end, could be the latest success story of an athletic basketball center or tight end moving to offensive tackle. Coaches want him to add muscle to his 6-foot-7-inch frame this offseason. Ate around 6,000 calories per day this summer toward that goal.

More reading: Brian O'Neill likes to talk and block at the same time

Below is a third-and-6 play in the season finale loss. The Bears are trying to isolate Khalil Mack (#52) on O'Neill (#75). Notice how no other Bears defenders start on that side of the ball. O'Neill does what he did for much of his impressive rookie season: absorbed the initial blow, mirrored with strong hands and did not get beat quickly. If he can add necessary weight (to better anchor vs. a rush like this) and keep up his technique, O'Neill could become a long-term answer for the Vikings. Riley Reiff (3.0) — One of six handpicked team captains. A solid start to his seventh NFL season was derailed by a foot injury suffered in the Week 3 loss to the Bills. Played 793 snaps [75.5%], missing three starts due to the troublesome foot. Played through the injury for three weeks, but was a liability. Beat on strip-sacks in back-to-back weeks when Buffalo's Jerry Hughes and L.A.'s Ndamukong Suh sped around him for the turnovers. The latter, at the end of a 38-31 loss, ended the Vikings' chances. Surrendered just one sack the rest of the season, but allowed 42 QB pressures (three sacks) total, tied for the team lead and eighth worst among all NFL offensive tackles. Penalized four times (one declined), including three for holding. Remained the group's most consistent run blocker and best finisher.

Turned 30 in December. No more guaranteed money remains on the five-year, $58.75 million contract signed two years ago. Carries an $11.7 million cap hit for next season and would cost $6.6 million in dead cap space to cut.

C Pat Elflein (2.5) — Offseason surgeries to his ankle and shoulder set back Elflein's second NFL season before it really started. Needed to add muscle after his promising rookie season, but prolonged rehab processes made that difficult. It showed on the field in his disappointing encore. After breaking his ankle in the NFC Championship Game loss in Philadelphia, Elflein didn't practice with Kirk Cousins until Sept. 2 — seven days before the season opener he didn't start. Played 863 snaps [82.1%], missing three starts. Returned as a reserve in the Week 3 loss to Buffalo. Played with a brace on his surgically-repaired left shoulder throughout the season. Clearly had rust to remove early, manifesting in bad snaps. Hiked one to the far right of Cousins in his return vs. Buffalo, leading to a fumble and failed play. Looked lost as a pass protector until he got his feet under him against the lowly Cardinals in Week 6. Allowed 33 QB pressures (four sacks), the third worst among all NFL centers. Not all his fault, as the sack tabbed against him in New England came with Cousins holding onto the ball too long with open options.

Elfein was in the Patriots' crosshairs as Bill Belichick moved his best pass rusher, edge defender Trey Flowers, into the middle to match up against the Vikings center. Elflein had some good reps, shoving Flowers to the ground on a third-and-5 deep ball dropped by Adam Thielen. But he was later beat when Flowers twisted from the end position to sack Cousins up the middle. Elflein was also targeted on this third-and-6 play below. It's only a four-man Patriots rush, but heavy pre-snap motion over the guards helps to isolate Flowers on Elflein, who is tossed to the side way too quickly. a whole, the interior line had issues against twists and stunts. Players noted communication breakdowns that did not improve much over time. Ended on a down note in the season finale loss to Chicago, when Elflein surrendered a season-worst six pressures. Penalized five times (one declined), including three holds. Fingers are crossed in Eagan hoping Elflein will have a healthy summer to build toward a rebound in 2019. An actual offseason with Cousins and possibly two new guards could benefit him greatly.

G/T Mike Remmers (2.0) — After a three-game stint at guard to end the 2017 season, one that did not exactly go well, the Vikings coaching staff asked Remmers to make the full-time move to guard where he hadn't started consistently at any meaningful level of football. The former right tackle played 1,048 snaps [99.7%] at right guard, missing only the final three snaps of the Week 9 win vs. Detroit due to an injury suffered on an extra-point attempt at the end. One of five Vikings to play more than 1,000 snaps. Played through a lower back injury in the second half of the season. Allowed 42 QB pressures (seven sacks), tied for the team lead and third worst among all NFL guards. Had his worst games against the Bills and Rams, surrendering season-low eight pressures in each. Walked into the backfield by Bills linebacker Lorenzo Alexander (#57), leading to the pressure on Kirk Cousins' first sack-fumble in the Week 3 loss. his best games against the Lions and Dolphins, leveling Miami corner Minkah Fitzpatrick with a smart block to spring Dalvin Cook for a 27-yard screen on the opening touchdown drive. Penalized eight times (one declined), including a team-high six holding flags. Play got sloppy in the second half with four holding calls in the final six games. Embarrassed in both games against Bears DT Akiem Hicks, who beat him for multiple sacks and run stops. Hold in the season finale loss to Chicago negated a Cousins scramble for a third-down conversion. No more guaranteed money left two seasons into a five-year, $30 million deal signed in free agency. Makes Remmers a potential cap casualty or restructure candidate with a $6.35 million cap hit for next season and only a $1.8 million dead cap charge if cut. Turns 30 in April.

G Tom Compton (2.0) — The Rosemount, Minn. native signed a one-year deal with $250,000 guaranteed in free agency. Added as depth, but inserted into the starting lineup during training camp when Nick Easton underwent season-ending surgery to repair a bulging disc in his neck. Played 837 snaps [79.6%] at left guard. Missed most of three games, including two starts, due to a sprained MCL suffered eight snaps into the Week 7 win at New York. Was about the only offensive lineman who played well against the Bills in the Week 3 loss. Still had a poor season. Allowed 34 QB pressures (seven sacks), second on the team and 12th worst among all NFL guards. Had his worst games against the Rams and both outings versus the Bears. Surrendered a season-worst seven pressures in Los Angeles, where he was twice beaten quickly by Aaron Donald on two fourth-quarter sacks in the loss. Played through his knee injury in the Week 11 loss at Chicago, but could not finish the game. Penalized seven times (one declined), including four for holding. Called for holding twice in the loss at New England, negating Dalvin Cook runs of five and 13 yards. Pending free agent.

OT Rashod Hill (1.5) — Dropped 12 pounds in an effort to be better conditioned for his third NFL season. Played 529 snaps [50.3%], starting five games at right tackle and three games at left tackle. Has the ideal size (6-6, 313 pounds), but still struggles with consistent technique in pass protection and can get beat easily around the edge. Penalized four times (one declined), three for holding. Ended up playing more snaps at left tackle (254) than right tackle (225) due to Riley Reiff's foot injury and lost his starting job on the right side when rookie Brian O'Neill impressed in his spot starts. Injured his ankle and left the Week 3 loss against Buffalo. Allowed the fifth-most pressures (27, including five sacks) of all offensive tackles between Weeks 1-8. Surrendered a sack in a flash to Ndamukong Suh on third-and-6 in the red zone at Los Angeles, leading to a Dan Bailey field goal in the loss. Lack of athleticism makes Hill a poor fit for the Vikings' zone-blocking schemes. Pending restricted free agent.

G/C Danny Isidora (1.5) — Elevated to the No. 3 guard role in his second NFL camp and preseason. Starting taking reps at center, starting there Aug. 30 in Tennessee, to become an emergency option. Active for 14 games, making a career-high two starts when Tom Compton dealt with a sprained knee. Played 214 snaps [20.4%], jumping into the Week 7 win at New York during the first quarter. Penalized once for ineligible receiver downfield. Struggled mightily as a pass protector in his two starts, when he surrendered eight pressures including two sacks. Outmatched against the Saints' Sheldon Rankins, who had a sack against Isidora and Elflein. Didn't look refined in pass protection, failing most against power moves like bull rushes. Fared better as a run blocker, where he can use his impressive agility to impede linebackers and defensive backs.

G/C Brett Jones (1.5) — Acquired via trade on Aug. 26 from the Giants for a 2019 seventh-round pick. An emergency addition when center depth behind Elflein and Easton didn't pan out. Played 191 snaps [18.2%], starting the first three games at center as Elflein was eased back into action. Didn't show enough at guard in the preseason, where he started Aug. 30 in Tennessee, to leapfrog Isidora on the depth chart. Active for 14 games, but played only limited special teams roles after his three starts. Slightly more consistent as a pass protector, where he allowed five pressures in three games, than a run blocker. Not penalized.

G/C Nick Easton (N/A) — The Vikings front office felt highly enough of Easton to place a second-round tender (worth $2.9 million) on their starting left guard. The unraveling of the offensive line began in earnest when Easton, who had already been filling in at center for the recovering Elflein, suffered a herniated disc in his neck during training camp. He underwent season-ending surgery. Pending free agent. Turns 27 in June.

G/T Aviante Collins (N/A) — Climbed his way up the depth chart in his second NFL training camp, earning a start at right tackle in the Aug. 18 preseason game against Jacksonville. Competed with Brian O'Neill for the swing tackle job and made the initial 53-man roster as a reserve at both guard and tackle. Suffered a season-ending elbow injury during practice in Week 1. Could fight for a role at guard in 2019.

OT Storm Norton (N/A) — Signed to the initial practice squad after preseason competition. Promoted to the active roster for Week 8 and was active for his first NFL game against the Saints, appearing on three special teams snaps. The second-year Toledo product was one of 10 players to sign a futures deal on Jan. 2.

G/T Cedrick Lang (N/A) — The former UTEP basketball standout could've been headed for a second season on the Vikings practice squad before suffering a season-ending knee injury in the Aug. 18 exhibition against Jacksonville. Played mostly right guard last summer.

OT Adam Bisnowaty (N/A) — Signed to the practice squad on Oct. 23 when Riley Reiff dealt with a foot injury. The second-year Pittsburgh product reunited with former college teammate Brian O'Neill. One of 10 players to sign a futures deal on Jan. 2.

C Cornelius Edison (N/A) — The fourth-year Portland State product became the starting center in training camp when injuries sidelined Pat Elflein and Nick Easton. But the Vikings traded for Brett Jones to start in Elflein's absence. Edison remained on the practice squad all season. One of 10 players to sign a futures deal on Jan. 2.