Data study 05 of 10 · Urban planning

How long do Toronto building applications wait?

Every new tower, subdivision, and rezoning in Toronto starts as an application in a public tracker. I analyzed 26,000 of them to measure how long files really sit, and found that the answer depends on where they get stuck.

City of Toronto open data 25,944 applications since 2008 ~4 minute read Skip to the technical notes

This page comes in two parts: the story in plain language first, then technical notes with the status mapping, model, full queue tables, and sensitivity checks.

In brief

Approach
Open-application snapshot
Data
Toronto development applications, July 2026
What the evidence shows
Open-file age and status vary across application types and cohorts.
What to keep in mind
Decision dates are unavailable. An open file's age is not the time a typical completed application takes.
Read the methods and assumptions →
The plan, and the pivot

The data refused my first plan, so the plan changed

I wanted to measure how long applications take from submission to decision. The city's file records when every application was submitted and what state it is in today. It records no decision dates at all.

Forcing the original method onto data that cannot support it would produce confident nonsense. So I asked the question the data can honestly answer: of all the applications submitted in each year, how many are still open today? If files resolved quickly, only the newest years would have open files. The further back the open files stretch, the slower the system.

How to read the first chart: each point is one year's batch of applications, and the height shows the share of that batch still open in July 2026. The dark line follows site plan applications (the detailed design review most buildings need); the gray line follows rezonings (asking to change what a property is allowed to be). Old batches sit near zero, as they should. Then the lines climb steeply: counting every application type, more than half of everything submitted since 2022 is still open.

Half of everything submitted since 2022 is still open

Share of each year's applications still open in July 2026 – site plans · rezonings – counting every application type, 53.6% of 2022 submissions and 52.3% of 2024 submissions are still open

0% 25% 50% 75% 100% site plans rezonings 2022+: two-thirds or more of site plans still open 2010 2013 2016 2019 2022 2025

City of Toronto Development Applications · snapshot July 29 2026 · 25,944 applications

Read chart description

Two hairline lines showing the share of each submission cohort still open in July 2026, 2010 to 2025. Site plans rise from about 1% to 71% for 2022 and 84% for 2025; rezonings from about 0% to 43% and 66%. Cohorts from the 2010s mostly resolved.

One caution, stated wherever this chart appears: with a single snapshot, "newer" and "from a slower era" are tangled together. A 2022 file may still be open because it is young, or because the system slowed down around then. The 2022 batch sitting as high as batches two years younger points to a real slowdown, but this data alone cannot fully separate the two.

The queue today

5,065 open files, typically 4.1 years old

The second view looks only at the files open right now, and asks how old they are and where they are stuck.

How to read the second chart: each row is one application type. The dark dot marks the typical age of its open files (half are younger, half are older). The light dot marks the age that the oldest quarter of files has passed. The longer the tail between the dots, the more extreme the slowest cases.

The open queue: 5,065 applications, median age 4.1 years

Age of currently open applications by type – typical age (median) · the age the oldest quarter has passed – 21.4% of the whole queue is older than five years

0 2 4 6 8 10 yrs Subdivision 626 open 4.8 9.4 Condominium† 322 open 4.7 4.8 Site Plan 2,134 open 4.1 4.9 Rezoning / OPA 1,956 open 3.2 4.7

City of Toronto Development Applications · July 29 2026 · † condominium ages cluster at a 2020 administrative batch date

Read chart description

Dumbbell chart of the age of currently open applications by type. Subdivision: median 4.8 years, 75th percentile 9.4, 626 open; Condominium: median 4.7 years, 75th percentile 4.8, 322 open; Site Plan: median 4.1 years, 75th percentile 4.9, 2,134 open; Rezoning / OPA: median 3.2 years, 75th percentile 4.7, 1,956 open.

A quarter of open subdivision files are more than nine years old. Among open rezonings, 54.6% have appeal status, compared with 8.7% of site plans. This identifies a group for closer investigation. The snapshot cannot measure time spent at appeal or establish that appeals caused the longer waits.

Quality control

The bug that flipped the answer

Every analyst has a story about a bug. I keep mine on display, because the catch matters more than the mistake.

The city's status labels carry invisible trailing spaces: "Under Review " with a space at the end is, to a computer, a different piece of text than "Under Review". My first pass matched the labels exactly, silently dropped 3,799 records, and produced a rezoning result that was upside down. Nothing crashed. No warning appeared. The number simply came out wrong, and confidently so.

What caught it was knowing the subject, not an error message. One intermediate figure put 98% of open rezonings in appeal, and appeals are the exception in planning, not the rule: most open files are simply working through review, and an appeal needs a trigger like a refusal or a missed decision deadline. For 98% to be real, the ordinary review process would have to be empty. The true share, once the dropped records are restored, is 48.5%: high, and interesting, and possible. Tracing that number back exposed the whitespace, and one line of cleaning code fixed it. The chart shows the size of the miss. The lesson I repeat to myself: always check the results that flatter your expectations.

One invisible character flipped this answer upside down

Odds that an open rezoning stays open vs a same-age site plan – first pass vs after stripping whitespace from status labels – the hollow dot is the broken number, and no honest confidence interval exists for it

← less likely to stay open than a site plan more likely → 0.5× 1× (no difference) 2× 4× First pass hidden trailing spaces ≈ 4.8× 3,799 records silently dropped After the fix same data, same model 0.44× what caught it: 98% of open rezonings showed as appeals

City of Toronto Development Applications · the bug, the catch, and the fix are documented in the project's REPRODUCE.md

Read chart description

Two estimates of the odds that a rezoning stays open versus a same-age site plan. The broken first pass, which silently dropped 3,799 records because of trailing whitespace in status labels, gave roughly 4.8 times. After the fix the same data and model give 0.44 times, with a 95% confidence interval of 0.40 to 0.49. The answer flipped from more likely to less likely.

What this does not prove

The honest fine print

"Closed" in this tracker bundles approvals, refusals, and withdrawals together, so this study measures how long files stay open and never claims an approval rate. A few hundred applications also share obviously administrative dates (308 files "submitted" on a single day in 2020), which I flagged and worked around rather than treated as real.

Technical terms, translated

Typical age (median)
Line all the open files up from newest to oldest; the median is the one in the middle. Unlike an average, a few 15-year-old files cannot drag it around.
The oldest quarter (75th percentile)
The age that three-quarters of files are younger than. It shows how bad the slow tail is, which a typical value hides.
Rezoning
Asking the city to change what a property is allowed to be, like a house lot becoming an apartment site. Contested ones can be appealed to a provincial tribunal.
Site plan
The detailed design review of a specific building: driveways, landscaping, servicing. Less often appealed, more often long.
Toronto Development Applications Python Data quality forensics 25,944 applications
Part two · For technical readers

Technical notes

Status mapping, design rationale, model, full queue tables, and sensitivity checks behind the plain-language story above.

Data and status mapping

City of Toronto Development Applications dataset, snapshot July 29, 2026: 25,944 applications across the 2008–2025 submission cohorts, plus every currently active file for the queue statistics. Status strings carry trailing whitespace; the unstripped first pass silently dropped 3,799 records and inverted the rezoning odds ratio (4.8 instead of 0.44). The catch was an appeal share of 98%, which failed a plausibility check. Active statuses: Under Review, the appeal family (Appeal Received, OMB, LPAT, TLAB), Circulated, Application Received, Incomplete, and Amend Draft Plan Application.

Design rationale

The dataset has no decision dates. I describe open status at one snapshot and fit logistic models of that status. Cohort age and calendar period cannot be separated with this snapshot, and status definitions may vary by application type. These are open-status comparisons, not estimates of completion time or a fully identified survival process.

log[qi / (1 − qi)] = β0 + β1Agei + β2Agei2 + γtype(i)

where qi = Pr(application i is still active at the snapshot); application types OZ, SA, SB with site plan as reference (condominium and part-lot files excluded for separation).

The open queue at July 29 2026, by type (years since submission)
TypeOpen filesMedian75th pct90th pct
Site Plan2,1344.14.96.7
Rezoning / OPA1,9563.24.77.3
Subdivision6264.89.49.5
Condominium†3224.74.84.8
Part Lot274.45.25.7

† Condominium ages cluster at a 2020 administrative batch date, which compresses the percentiles.

Logit of P(still open) on age, age squared, and type
ContrastOR95% CIp
Rezoning / OPA vs Site Plan0.440.40 to 0.49< 0.001
Subdivision vs Site Plan7.486.33 to 8.85< 0.001

Restricted to rezonings, site plans, and subdivisions; condominium and part-lot files excluded for quasi-separation driven by batch-dated records. Strict sensitivity (active = Under Review only): rezoning OR 0.15, direction unchanged.

Appeal-status shares
Type% of open files in appeal statuses% of all files
Rezoning / OPA54.6%8.3%
Site Plan8.7%1.7%
Subdivision7.1%3.5%

Data-quality notes

308 applications share a single submission date (May 6, 2020), one of several administrative batch dates; medians are robust to this, and the condominium percentiles are visibly shaped by it, which is why that row carries a flag. "Closed" bundles approvals, refusals, and withdrawals, so nothing here is an approval rate. Statuses reflect the City's tracker, which can lag reality.

Reproducibility

Three scripts (get_data.py, run_analysis.py, make_charts.py) against the Toronto Open Data CKAN API, on pandas and statsmodels. The dataset refreshes daily, so later snapshots shift the recent-cohort numbers; the committed results.json pins July 29, 2026, and is the direct source of every number on this page.

References

  • City of Toronto. (2026). Development Applications [data set]. City of Toronto Open Data Portal. https://open.toronto.ca/dataset/development-applications/ (snapshot July 29, 2026).
  • Jewell, N. P., & van der Laan, M. (2004). Current status data: review, recent developments and open problems. In Advances in Survival Analysis (Handbook of Statistics, Vol. 23). Amsterdam: Elsevier.