The words this app uses for its rows, its columns and its charts — in the order you meet them, from where the numbers come from to what happens when you copy the address of a view.
One NFL season, named after the year it starts in. It is the outermost scope of everything on screen: the season select in the header decides which release every table and every chart on every page is read out of.
The match week a game belongs to, and the only ordered axis this data has. A playoff week is named after its round — Wild Card, Divisional, Conference, Super Bowl — wherever a week is named; the week select keeps its numbers, because there it is an address rather than a name.
A week in which a team does not play, so it has no row for it. Every team has one, which makes a missing week the normal case rather than a defect in the data: it is a gap in a trend line, and never a zero.
Numbers this app works out in your browser from the record of every single play. That is what makes EPA, success rate and Stop Rate possible at all, and it is why the advanced views can be narrowed to a single down, quarter or field position while the basic ones cannot.
Numbers taken from nflverse's own per-game player rows, joined with the snap counts. Nothing here is derived from single plays, so there are fewer metrics and no play-level filters — and a snap share, which the advanced views have no way of knowing.
A value nobody recorded, shown as a dash and never as a zero: a week the snap counts do not list says nothing about how much a player was on the field. Such a row sorts to the end whichever way you sort it, the charts plot no point for it, and the exported file carries the same dash the table shows. A snap counts release that cannot be reached costs those four columns their values and leaves every other number on the page standing.
A season whose release carries no row at all — a well-formed answer with nothing in it. It is a normal state and not a fault: nflverse serves it for a season whose first game has not been played, which is what the newest season is every summer. The page says so in a sentence of its own, and that sentence is deliberately not the one you get when your filters matched nothing.
Which part of a season the rows are made of: the regular season, the postseason, or both. It stands in the header next to the season because it belongs to no single view, and it narrows the rows and the set a cell's colour is measured against in one move. The one page it leaves alone is a single game — the address already names that game, so it is shown whatever the scope says.
Whether a row is one game or a whole season. The switch above the table says Game Based Stats and Season Based Stats; with season-based rows all of an entity's games are added up into one row and the week axis disappears, which is why the trend chart is unavailable there. It says nothing about which games — that is the season scope, and the two are independent.
Which family of numbers a view is showing: passing, receiving or rushing on offence, general, pass rush or coverage on defence. It decides which columns and which chart metrics exist, not which rows.
Which of the columns a stats type offers are on screen, switched behind the Columns button above the table and remembered per stats type. A column switched off is a column the exported file does not have either. It reaches nothing behind the cells: the chart metrics stay whole, and so does the set the colours are measured against. Switching off the column the table is sorted by moves the sorting to another one rather than leaving it pointing at something you cannot see. It stands in the address of the view, and that address is the whole of where it lives: a reload brings the same columns back because a reload lands on the address, and a copied link shows its receiver the same table — while entering the view afresh from the start page starts with every column on, exactly as it starts with the untouched filters, search and chart. A link carries the selection of the stats type it names and of no other.
A chip in front of the filter chips naming something every row on screen shares: the season, the season scope, the season mode, the stats type. It says what the table is, where a filter chip says what it has been narrowed to — so it carries no delete symbol, it cannot be clicked, and it is not counted among the active filters.
The smallest sample a row may stand on and still be listed, and the reason the passing table does not open on a receiver who completed one trick play. The two advanced player tables and the page of a single game set one; the team tables do not, because no minimum worth setting removes a team row. It is a filter and not a context chip: its chip carries a delete symbol, it counts towards the badge on the filter button, and once taken off only Reset filters brings it back. It counts over the plays your other filters leave standing, which is why its chip says so out loud.
The unit of the defence a player belongs to — DL, LB or DB. The two defensive player views scope their rows by it rather than by the position itself, because the same role arrives under several depth-chart spellings.
The subject a row describes: a team, a player, or one player's appearance in one game. Which of the three a view shows is fixed per view and is what its first column names.
Which side of a play a team row is credited with — the team with the ball, or the team defending it. The offensive and the defensive team views read the very same plays from the two sides: no metric changes its definition, only who it counts for.
What a metric counts when it is read from the defending side: the same yards, EPA or success rate, credited to the team that gave them up. A column headed Opp describes the opponent, and there the low value is the good one, which is why its colours run the other way round. Stop Rate is the one defensive metric that is high-is-good by itself, so no allowed metric ever has to be turned upside down to read that way — Opp 3D%, for one, is never inverted.
A play that counts towards the down series: neither a play a penalty annulled nor a two point attempt. It is what the yards rates divide by, and the column Cnt P shows it beside Plays, which counts every play there was.
A run as a box score counts one: a designed run, a scramble and a kneel down alike, of which the data types only the first as a run. It is the volume behind CAR, the rushing yards and the long run. No rate counts the kneel down — it is a clock play with no intent to gain ground — so the carries and the rates beside them are deliberately measured over different sets of plays.
A throw: a completion, an incompletion, an interception or a spike. It is what Att counts and what every rate whose name carries Att or A divides by. It is not the dropback — a sack and a scramble are dropbacks and no attempt, and the scramble is a carry on top of that — so Att, Passes and DB are three different counts standing next to each other on purpose.
A play the record credits a given defender with something on: a tackle, a hit, a sack, a pass defensed. A snap where nothing happened leaves no trace, so this is the only thing a defender's advanced numbers can be measured per — that is what the Ev in a column name means, and it is why none of those columns is a per-snap or per-game rate.
One team's possession of the ball, from the moment it gets it to the moment it gives it back. It is the column DR — Opp Drives where the row is a defence — and what every rate standing under it divides by. A row counts a drive once, however many of its plays that row holds, and only when it was decided: a drive the half or the game ended is in no rate on either side of the ball, because neither team finished it.
A drive that reached the opponent's twenty, counted once however often it got there. It is the column RZ DR and what RZ TD% divides by, so that rate reads as how many of a team's trips inside the twenty ended in a touchdown — a drive that got there and kicked a field goal stands in the denominator and in no numerator. It is not the red zone the receiving numbers mean: RZ TGT% counts a single play snapped from the twenty or nearer, this one counts a whole drive.
A play snapped with the goal line as the sticks, so there is no first down left to gain before the end zone. It is the column G2G and what G2G% divides by, and unlike the red zone drives beside it, it counts plays: one drive can contribute several of them, which is why the two rates standing next to each other answer neighbouring questions in two different ways. A play a penalty annulled is none.
The share of drives a defence ended without points: a punt, a turnover, a stop on downs or a missed field goal. It is the one defensive metric where the high value is the good one, and it exists so that nothing a defence allowed has to be inverted to read that way.
Where a row stands among the rows it is compared with: the share of them it beats, as a rank rather than as a distance, cut into four equally wide bands. That is what colours a table cell and what the bars on a single player's page draw. The season and the season scope decide which rows it is measured over; a minimum sample narrows the table and never that set. A row that did not take part in a column — a game whose only carries were kneel downs says nothing about rushing — leaves its cell uncoloured instead of being ranked last, and a column whose rows all carry the same value has no order to show and stays uncoloured too.
The sentence that says what a quantity counts, shown when you rest on a column's head and under a metric's name where you pick one for a chart. It belongs to the quantity and to the side of the play it is read from, and not to the column or the chart metric that happens to show it — so one number reads the same wherever you meet it, and reads twice only where the two sides really mean different things by it. It stands beside the short name in the head rather than in place of it, because the abbreviation is what the column is called.
A chart that plots development over the week axis as lines. It needs that axis, so it is unavailable with season-based rows and on the page of a single game.
A chart that plots one metric against another, one point per row, to show how entities stand on two metrics at once. It needs no week axis and therefore works in either season mode.
A quantity a chart can plot, with the label, the unit and the range that plotting needs. It says what a number means; a table column says how a number is shown.
One plotted mark: a single row's value for a chart metric. The metric is the choice you make once, the data points are what that choice produces — one per row.
All the data points drawn together as one line, or as one coloured group of points.
One plotting rectangle with a vertical axis of its own. A trend chart holds one panel per unit, so metrics measured in the same unit can be read against each other and metrics in different units never share an axis.
How many series a trend chart draws at once. What bounds it is not the amount of data but the number of colours a reader can still tell apart, so the leading rows of the sorting you set are kept and the rest are left out.
What a view's trend lines stand for: one line per team or player showing a single metric, or — on a single player's page, where the rows are already one player's weeks — one line per metric. It follows from what the rows are and is fixed per view rather than chosen.
The one series the legend is pointing at, under the mouse or on the keyboard's tab stop: it is drawn at full strength while every other line steps back behind it. It answers which line is which for exactly as long as the pointer stays, and it is gone the moment it leaves.
A series you clicked in the legend so that it has the plot to itself. Clicking it again takes it back, and clicking a second entry isolates that one alongside rather than instead. The lines it leaves out are not drawn at all rather than drawn faintly, and the legend goes on offering every one of them, because that is the way back. A copied link does not carry it: the address arrives with the whole plot back.
The address a view is showing. Every choice you made in it — the filters, the search, the sorting, the stats type, the season mode, the column selection and the whole chart configuration — stands in the query string beside the season, so opening one restores the view and not just the page. Two things are deliberately left out and named rather than hidden: the minimum sample, which arrives switched back on, and a trend chart's highlight and isolation.
The button that hands a view link on. It copies the address you are standing on and writes the season into it even where the address bar did not name one, because a link without a season would show its receiver whichever season their own browser had stored.
The state of the list a detail page was opened from, carried in that page's own address and handed to the trail at the top of it, so that the step back lands you in the list as you left it: same filters, same search, same sorting. A copied link never carries one, and a reader who arrived some other way gets the untouched list.
The table on screen as a file: the visible columns in the order the table has them, the rows in the order you put them in, saved as CSV or handed to the clipboard tab-separated. The values are the ones on screen and not a second reading of the same rows, so a dash stays a dash. The file name says which table it is — the view, the game or the player where the rows belong to one, the season, the scope, the stats type and the season mode — so two exports out of one view do not overwrite each other. A table with no rows offers neither button, because what stands in place of the rows is a sentence and a file cannot carry one.
The one control that changes the season, in the header of every page and at every width. It is not a filter and never sat well among them: every other control belongs to the view it stands in and shapes that view's own table, while this one swaps the data all of them are read out of.
The one page that is not a table: what this app is, which season it is showing, the games of the newest week that season holds, and the menu into everything else. It is the app's only menu, and the app name in the header is the way back to it from anywhere. The first visit to a season downloads that season's whole play-by-play release, which is what the bar and the placeholders under the games are for.