Grade 3: Enrollment vs. Registration

How well does EQAO Grade 3 registration match Ministry of Education enrollment headcounts? Which boards and schools show the largest gaps?

Data Sources

How Schools Are Matched

Schools are matched by SchoolMident + school_year, with a board-ID cross-check at every step.

One important identifier quirk: EQAO stores SchoolMident without leading zeros (e.g. "45578"), while the Ministry enrollment file stores it with leading zeros (e.g. "045578"). Zero-padding the EQAO identifier before matching is what drives the overall match rate to ~99.9%.

A second layer of confidence comes from board-ID cross-validation: every Mident match is confirmed against the board (EQAO.BoardMident must equal enrollment.BoardNumber after stripping its B prefix). This validation produced zero rejections in practice — every Mident match is also a board match — confirming the identifiers are reliable across both datasets.

The match tiers, in priority order:

Match type Confidence Description
exact_padded 1.0 Zero-padded Mident + year match, enrol_g3 present, board confirmed. Registration rate fully computable.
mident_suppressed 0.85 Same, but enrol_g3 is null (cohort <10, privacy-suppressed). School identity confirmed; rate uncomputable.
mident_board_mismatch 0.30 Mident matched but board IDs disagreed. Flagged for inspection; not used in coverage calculations.
none 0.0 No confirmed match — typically provincial special programs not tracked in the Ministry headcount.

Match Quality

Match Rate by Year

Summary by Language

Crosstab: EQAO × Enrollment (English)

A school-year counts as "in EQAO" when it has a non-null registration count for Reading or Math — so schools that sat only one subject (e.g. 46 Math-only schools in 2024-25) are included rather than silently excluded.

Student counts by cell (registered students from EQAO by subject; enrolled students from Ministry):


Province-Wide Registration Rate

The chart below shows seven ways to measure "how many enrolled Grade 3 students ended up sitting the assessment." They differ in what counts as the denominator, how they handle schools where EQAO registered more students than the Ministry enrolled, and whether they weight by school.

Series definitions:

Series Numerator Denominator Ceiling Weight
Aggregate reg/enrol province total registered province total enrolled none
Wtd avg reg/enrol (uncapped) per-school registered per-school enrolled none enrolled
Wtd avg reg/enrol (capped) per-school registered per-school enrolled 100% enrolled
Wtd avg part/enrol (uncapped) per-school fully participating per-school enrolled none enrolled
Wtd avg part/enrol (capped) per-school fully participating per-school enrolled 100% enrolled
Wtd avg part/max(reg,enrol) (capped, wt=enrol) per-school fully participating max(registered, enrolled) 100% enrolled
Wtd avg part/max(reg,enrol) (capped, wt=max) per-school fully participating max(registered, enrolled) 100% max(reg, enrolled)

Why the aggregate and uncapped school-average diverge (~90.6% vs ~94.0% in 2022): Each year roughly 90–100 schools have a suppressed EQAO student count (cntStudents_Read = null) — typically very small cohorts where EQAO withholds counts for privacy. In the aggregate these schools add their enrollment (~4,700 students in 2022) to the denominator but contribute nothing to the numerator, dragging the province rate down. The per-school series excludes these schools entirely, so it reflects only schools with a reported count.

Why uncapped > capped: A minority of schools register more students than the Ministry's October headcount — administrative timing differences, split-grade programs, or enrolment updates. The uncapped series lets those schools exceed 100%; the capped series clips them to 100%.

Participation vs registration: cntFullyParticipating_Read counts only students who sat the assessment, whereas cntStudents_Read counts all who were registered. The gap between the two captures students registered but absent or exempt on test day (~3–5 pp provincially).

Max(reg, enrol) denominator: For schools where EQAO registered more students than enrolled, using max(registered, enrolled) as the denominator is a conservative floor — it never inflates the rate above what either dataset alone would show.

The aggregate registration rate (blue) has stayed in the 90–92% range across all four years, peaking at 92.1% in 2023. The school-weighted averages run ~3–4 pp higher because ~90–100 small schools with suppressed counts are excluded from the per-school computation. The participation series (purple/red/brown/pink) track ~3–5 pp below registration — the gap between students registered and students who sat the test.


Bottom 50: Lowest Participation Rate vs Denominator (part / max(reg, enrol), capped)

The 50 school-years with the lowest value of fully-participating / max(registered, enrolled), across all four years. Schools appear here because of low absolute registration, high absenteeism/exemptions, or administrative anomalies (e.g. virtual schools with many registered but few assessed students).


Schools Without a Match

EQAO Schools: No Enrollment Record Found

EQAO school-years where no confirmed enrollment record was found. Where a near-miss exists (mident_board_mismatch), it is shown for reference only and is not used in any calculation.

Enrollment Schools: No EQAO Match

English elementary school-years in the Ministry file (with enrol_g3 present) whose SchoolMident does not appear in EQAO for the same year. Most are virtual or remote-learning schools created during COVID (2022–2023) that were never assigned EQAO school codes and did not administer the assessment.


Student Count Discrepancies (Matched Schools)

For matched schools, how does the EQAO registered count compare to the Ministry enrolled count?

Top 10: Registered > Enrolled

Top 10: Enrolled > Registered


Unmatched School Detail

Schools without an exact_padded match — i.e. mident_suppressed or none:

By Match Type


During development, fuzzy school name matching was explored as a fallback tier. It proved unnecessary — zero-padding Midents alone achieves 99.9% coverage, and fuzzy cross-board matching produced too many false positives.