NJ School Data
← Data library
Data explainer

NJDOE certificated staff

2020–21 through 2025–26 · six annual files · 679 districts

Every year New Jersey publishes how much certificated staff each district reported — teachers, administrators, supervisors and special-service staff — and, for each of those four roles, how that staff divides by race and by sex. It is one of the few public files that describes the adults in a school system rather than the children. It is also a file where the empty-looking cells mean something specific, and usually not what they look like.

1 · The source

New Jersey’s Department of Education posts an annual certificated staff file. A certificated staff member is one who holds a New Jersey educator certificate; the file sorts them into four roles, and the role names below are the publisher’s own.

RoleWhat it covers2025–26 districts reporting 20+ FTE
TeacherClassroom teachers.595 of 663
Special ServiceCertificated specialists — counsellors, child-study team members, nurses, therapists.306 of 663
AdministratorsPrincipals, assistant principals, central-office administrators.92 of 663
Supervisors/CoordinatorsSupervisors and programme coordinators. Many districts have none at all.17 of 663

Each role row carries a total FTE, seven race categories and two sex categories — each as both a count of FTE and a percentage — plus a non-binary percentage. Twenty published measures per role, per district, per year, for 679 districts across six school years. We hold the whole district slice: 320,880 values.

We show it on district profiles, in the section Who works in this district. We do not show it on school profiles. The file has school rows, but only 264 school codes across 677 districts — nowhere near school coverage — so a school-level rendering would be a coverage claim the data does not support.

2 · FTE is workload, not people

Every number in this file is a full-time equivalent: a measure of reported workload, not a count of employees. A district reporting 730.2 FTE of certificated staff does not have 730 employees. Two half-time teachers are 1.0 FTE and two people; one teacher splitting a year between two districts appears as a fraction in each.

This matters most where the language is most tempting. “37% of teacher FTE is Black” is what the file supports. “37% of teachers are Black” is a different claim about a different quantity, and this file cannot settle it. There is no person identifier here, no headcount, no salary and no payroll — and nothing in it speaks to staffing adequacy, quality, effectiveness or need.

3 · A zero and a blank are different claims

This is the easiest way to get this file wrong, and it runs in both directions.

Across the whole release of 1,524,240 values, 909,830 are an exact published zero — the literal 0, meaning the district reported no staff FTE in that group and that role — and 76,212 are withheld, carrying the literal <.1 and no number at all. There is no third empty state.

The proportions are startling. Of the 16,044 district-level American Indian FTE cells, 15,396 are an exact zero and none is withheld. A tool that renders those as “no data” has reversed the finding: the district answered the question, and the answer was none.

Metric (district level, all six years)ReportedPublished zeroWithheld
race.white.fte14,6661,3780
gender.female.fte14,5671,4770
gender.male.fte12,1793,8650
race.hispanic.fte7,0578,9870
race.black.fte6,02310,0210
race.asian.fte4,28311,7610
race.two-or-more-races.fte1,13114,9130
race.hawaiian-native.fte85615,1880
race.american-indian.fte64815,3960
gender.nonbinary.percent0016,044

One more wrinkle, in the opposite direction. The publisher’s own percentage columns are rounded, and eight district cells carry a reported non-zero FTE beside a percentage rounded down to an exact 0.0 — six American Indian, two Two or More Races. Build a composition out of the percentage columns and the smallest reported groups silently vanish. Every share we print is computed from the FTE columns, which add up: the seven race FTE values sum to the role total within 0.1 in all 16,044 district-role cells.

4 · The category with no published value

New Jersey’s reporting schema has a non-binary category. Two things are true about it, and both are findings rather than gaps.

First, the category is published as a percentage with no count behind it. Every other category in the file — all seven race categories, female, male — carries both an FTE and a percentage. Non-binary carries a percentage alone. There is no gender.nonbinary.fte metric in the release at all.

Second, that percentage has never once been published. All 76,212 of its cells, at every reporting level, in every one of the six years, for every role, are the literal <.1 with no number. Sixteen thousand and forty-four of those are district cells. Not one district, in any role, in any year, has a published non-binary value.

So the honest rendering shows the category and says so. Dropping the row because it is empty would read as “there are none,” which is a claim about people this file does not make. Printing something in it would be inventing a number the state withheld.

5 · Where the sex rows don’t add up

The race columns reconcile. The sex columns do not, always: in 421 of the 16,044 district-role cells, female FTE plus male FTE does not equal the published total FTE.

It is tempting to read that gap as the withheld non-binary count. It is not, and the data says so plainly. Most of the residuals are rounding — 295 of the 421 are ±0.1. And 181 of them are negative: female plus male exceeds the publisher’s own total, which no count of a third category can explain. The largest is −54.0 against a published total of 1.0.

We therefore publish neither the residual nor anything derived from it. The two published sex values appear with their shares of the published role total, and the gap is left as what it is — an inconsistency in the source.

6 · Who is not in this file

Certificated staff are not the staff. The paraprofessionals, instructional aides, clerical staff, service workers and skilled trades who make up a large share of the adults a child meets in a school day are in a separate New Jersey file — and that file has exactly two measures, role-fte and total-fte. It carries no race and no sex at all, at any level, in any year.

So a composition reading of a district’s staff is structurally a reading of its certificated half. That is a limit of the state’s collection, not of this site, and we name it on the profile rather than leave it to be inferred.

7 · Small districts, and the share floor

New Jersey has a lot of very small districts, and this file shows it. Across all 16,044 district-role cells the median total is 10.8 FTE. 5,848 cells are at or below 5.0 FTE. 1,022 are an exact zero — most of them Supervisors/Coordinators, a role many districts simply do not have.

At that size a percentage is arithmetic wearing the clothes of a finding. A role with 3.0 FTE produces shares of 33% and 67%, moves by a third on a single hire, and in a small district identifies individuals quickly.

So the district profile applies a floor: below 20.0 FTE in a role it prints the reported counts and no shares, and charts no bar. Twenty FTE is the level at which one full-time equivalent moves a share by five points, so nothing finer than that is a real reading. This is our editorial threshold, not the state’s rule — NJDOE publishes every one of these values, and you can read them all in the tables on the profile whether or not a percentage sits beside them.

8 · What we built

The file arrives as an exact, offline, byte-pinned Aquifer release — this site downloads and parses nothing. From it we project the whole district-level slice into one table keyed on school year, district code, staff role and metric: 320,880 rows, carrying every published number, every publisher literal and every value state alongside it. Withheld cells are stored with no number, never as a zero.

The projection refuses to install if any of the populations above has moved: the per-metric reported and zero counts, the non-binary disclosure (16,044 cells, 16,044 withheld, 0 published, one distinct literal), and the race and sex reconciliation counts. If New Jersey ever publishes a non-binary value, the build fails rather than quietly contradicting the sentence on the profile.

The district join is by exact zero-padded district code only; names are never a fallback. Five districts in the file have no matching profile and render nothing.

The issue registry

Every dataset behind this site keeps a structured registry of its known issues — the format breaks, suppression rules, entry errors, and definitional traps we hit while building on it — so that the next person (or agent) who works with this data doesn't rediscover them the hard way. Each issue has a stable id, a machine-readable scope (which years, columns, and tables it touches), and an effect: breaks stops a pipeline, corrupts silently wrongs the numbers, misleads invites a wrong reading of right numbers, context is background you must hold to use the data responsibly. Issues marked ★ are core: read them before any use of this data. The registry is maintained in the ergo format and served in machine-readable form alongside this page — links at the end of this section.

New Jersey Department of Education · 2020-21 through 2025-26 · source confidence A · updated 2026-07-30 · 8 known issues (2 core)

The pitfall: District certificated FTE is published as four separate role rows, not an authoritative district total or a count of employees, payroll, cost, effectiveness, quality, or need — and an empty-looking demographic cell is almost always an exact published zero, not a suppression.

fte-is-not-headcount-or-payroll [misleads · open] Certificated FTE is fractional reported workload, not employee headcount, payroll, salary cost, effectiveness, quality, or need

Type: definitional — applies to the whole dataset

How to spot it: The publisher reports numeric FTE by role; no person identifier, employee count, salary, payroll, cost, quality, or need field is present in the district role projection.

The misread: Calling 730.2 FTE 730 employees, adding it to UFB salary dollars as a payroll rate, or treating a change as evidence of service quality or staffing adequacy.

Full entry, with the story and the numbers, in the served ergo doc.

district-total-is-derived [misleads · mitigated] The district release has four certificated role rows but no authoritative district-total row

Type: measurement — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_role

How to spot it: District source rows contain exactly Administrators, Special Service, Supervisors/Coordinators, and Teacher; there is no district value with a separate total role.

The misread: Presenting the four-role sum as a separately published NJDOE district total or combining it with the independent non-certificated reported total.

Full entry, with the story and the numbers, in the served ergo doc.

published-zero-is-not-a-suppression [corrupts · mitigated] A blank-looking demographic cell is an exact published zero (literal 0), not a withheld value; the only withheld cells in the release carry the literal <.1

Type: suppression — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_composition

How to spot it: Release-wide, 909,830 of 1,524,240 values are value_state exact-reconciliation-zero with reported_literal '0' and 76,212 are value_state suppressed with reported_literal '<.1'; there is no third empty state. At district level 15,396 of the 16,044 american-indian FTE cells are an exact 0.

The misread: Rendering an exact 0 as 'not reported' or 'no data', which reverses the finding: the district reported no staff FTE in that group and role. Or the mirror error, rendering a withheld <.1 as a zero.

Instead: Carry numeric_value as NULL only where the publisher withheld the value, keep the reported_literal beside it, and give the two states different words on the page.

Full entry, with the story and the numbers, in the served ergo doc.

nonbinary-is-never-published [misleads · mitigated] staff.certificated.gender.nonbinary.percent is a percentage with no count metric behind it, and it is withheld in every district, every role and every year

Type: coverage — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_composition · columns: staff.certificated.gender.nonbinary.percent

How to spot it: The release has 20 metric definitions: seven race categories and two gender categories each carry a .fte and a .percent, and gender.nonbinary carries a .percent alone. All 76,212 of its cells across all reporting levels — 16,044 at district level — are value_state suppressed with reported_literal '<.1' and a NULL numeric value. Not one district, role or year has a published value.

The misread: Dropping the category from a rendering because it is empty, which reads as 'there are none'; or reconstructing a value from total-fte minus female-fte minus male-fte and presenting the residual as a non-binary count.

Instead: Show the category, say that New Jersey published no value for it in any district, any role, or any year, and do not derive one.

Full entry, with the story and the numbers, in the served ergo doc.

sex-fte-does-not-reconcile-to-total [misleads · mitigated] The two published sex FTE values do not sum to the published total FTE in 421 of 16,044 district-role cells, and the residual is not a recoverable non-binary count

Type: measurement — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_composition

How to spot it: Grouping the composition mart by (school_year, district_code, staff_role): the seven race FTE values sum to total-fte in all but 108 cells, off by at most 0.1. The two sex FTE values leave a non-zero residual in 421 cells. 295 of those residuals are +/-0.1; 181 are NEGATIVE, meaning female plus male exceeds the publisher's own total; the largest absolute residual is -54.0 against a published total of 1.0 (district 4270, Teacher, 2022-23).

The misread: Publishing total-fte minus female-fte minus male-fte as a non-binary count, an 'other' category, or an 'unreported' band. The residual is a mixture of publisher rounding and at least one gross publisher inconsistency, and in a small district a derived whole-number residual would identify individuals the publisher chose to withhold.

Instead: Show the two published sex values and their shares of the published role total, say that they do not always add to it, and derive nothing from the gap.

Full entry, with the story and the numbers, in the served ergo doc.

percent-column-rounds-a-reported-fte-to-zero [misleads · mitigated] Eight district cells carry a reported non-zero FTE and a percent the publisher rounded to an exact 0.0, so the two columns disagree about whether anyone is there

Type: coding — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_composition · columns: staff.certificated.race.american-indian.percent, staff.certificated.race.two-or-more-races.percent

How to spot it: At district level, race.american-indian.fte has 648 reported values but race.american-indian.percent only 642; race.two-or-more-races.fte has 1,131 against 1,129. The six and two extra cells are published zeros in the percent column standing over a reported non-zero FTE.

The misread: Building a composition from the publisher's own .percent metrics, which silently drops the smallest reported groups to zero and leaves the shares not summing to 100.

Instead: Compute every share from the .fte metrics, which are additive: the seven race FTE values sum to the role's total FTE within 0.1 in all 16,044 district-role cells.

Full entry, with the story and the numbers, in the served ergo doc.

noncertificated-has-no-race-or-sex [misleads · mitigated] The non-certificated release carries no demographic metric, so paraprofessionals, aides, clerical and service staff are absent from any staff-composition reading

Type: coverage — applies to the whole dataset

How to spot it: nj-noncertificated-staff.sqlite has exactly two metric definitions, staff.noncertificated.role-fte and staff.noncertificated.total-fte. There is no race, ethnicity or sex metric at any reporting level or in any year.

The misread: Presenting certificated staff composition as 'the district's staff', which excludes a large share of the adults a child encounters and does so invisibly.

Instead: Name the exclusion on the surface: this is the certificated part of the staff, and New Jersey collects no demographics for the rest.

Full entry, with the story and the numbers, in the served ergo doc.

small-denominator-share-floor [misleads · mitigated] Half of all district-role cells report 10.8 FTE or less, where a single hire moves a share by ten points or more

Type: measurement — applies to years: 2020-21 through 2025-26 · tables: staffing_certificated_district_composition

How to spot it: Across the 16,044 district-role cells the median total FTE is 10.8; 5,848 are at or below 5.0 and 1,022 are an exact zero. In 2025-26 only 17 of 663 districts report 20 or more Supervisors/Coordinators FTE, and 37 districts report under 20 FTE of certificated staff in total.

The misread: Printing '33% of Supervisors/Coordinators FTE' where the role is 3.0 FTE, which is one person-equivalent rendered as a statistic and, in a small district, an identification.

Instead: State an FTE floor, print the reported counts below it and no share, and say which rows were floored and why.

Full entry, with the story and the numbers, in the served ergo doc.

Changelog

  • — AQ-060 consumer page created with the exact refresh-2 pin, district-role mart receipt, two independent staffing-family boundary, exact served coverage, and issues for FTE semantics and the derived certificated district total.
  • — Widened the district projection from one metric to the whole district slice (16,044 to 320,880 cells) so the race and sex composition behind a district's certificated staff reaches the consumer warehouse; the three pre-existing tables and their receipts are byte-identical. Added fail-closed expectations on per-metric value states, the non-binary disclosure, and the race/sex reconciliation. Shipped the district-profile module and served this page at /data/certificated-staff/, and registered the six issues a representation surface has to get right.

The text on this page was generated by Claude Opus 5, working as part of a stack of tools created by Lyra Forge.