Where our data comes from

Every number on this site is computed from the Australian Government's published freedom-of-information (FOI) statistics. The one exception is the eight single-quarter Q1 2025-26 headline figures, which are transcribed from the OAIC's published dashboard and pinned at boot; every other number is computed, and none is typed in by hand.

Where % decided within statutory time, by FY comes from

This figure is computed from 4,044 published fact rows (the measures decided, within_statutory; financial year 2019-20, 2020-21, 2021-22, 2022-23, 2023-24, 2024-25, 2025-26; across 433 reporting agencies).

This row count and hash describe the default view of timeliness_change as the server computed it: every reporting agency, no portfolio filter, request type total, financial years 2019-20 to 2025-26. The agency count is the number of distinct agency names appearing anywhere in that basis, not the number reporting in any one year. Any filter a reader sets re-derives the chart in the browser from the same published facts, so this basis describes the default view and not a filtered one.

The sources

Publication history

Release and revision record

CoverageFirst publishedLatest revisionHash prefix
2019-2019 Nov 2020same releasea4331ed2d8a8
2020-2126 Oct 2021same released76e1cb2b192
2021-222 Nov 2022same release9b70e7ee6867
2022-233 Dec 202318 Jun 2024598dd62fa245
2023-2418 Nov 2024same releaseb933826c0a2d
2024-256 Nov 2025same release973a1ecd2722
2025-2628 May 2026same release0ca28e57f061

How each measure is derived

Sheet: Request numbers

Three measures are read from fixed column positions (`MEASURE_COLS`). Counting the agency name as column 0:

The three columns in each group are the personal, other and total request types in that order.

This sheet is read by position, not by header text, so a workbook that reordered its columns would be read wrongly rather than loudly. Two things stand against that. All seven workbooks were checked and carry the same header at each of those positions. And the `applicant-vs-total` decision in `decisions.md` pins the current workbook's own published Total row: the platform re-sums `received` and `received_transfer` from the facts at every boot and compares them to 34,418 and 392, so a reorder that swapped either column stops the service.

The boot gate on the Q1 figures does not help here, and it is worth being clear about that. It compares the transcribed Q1 values against the facts the normaliser emits for them, which catches a break in the transcription path; it reads no workbook column.

The header spelling is not itself stable and cannot be relied on: five workbooks label the request-type sub-header P, O and T, while the 2023-24 and 2025-26 files spell it Personal, Other and Total.

Columns not read from this sheet, in full. The on-hand counts at the start of the period (columns 1, 2, 3) and at the end of it (columns 19, 20, 21). Columns 10, 11 and 12, headed "Total requests received". And columns 13, 14 and 15, each agency's percentage share of all agencies' requests received.

Columns 10 to 12 are worth naming rather than leaving to a general statement, because they are the columns the `applicant-vs-total` decision in `decisions.md` turns on. The sheet publishes two totals that both describe requests received: "Requests received from applicant" at columns 4 to 6, which is read, and "Total requests received" at columns 10 to 12, which is not. The second is the first plus requests on transfer. That decision entry says why the applicant figure is the one the site reports, and it pins all three numbers against the frame at every boot.

The percentage share is left out for a different reason: nothing on the site needs the published share, and importing a rounded percentage alongside the counts it is derived from would put two versions of the same quantity in the frame.

Sheet: Action on requests

This sheet is read by header rather than by position. The parser lowercases the header row, finds the first column whose header starts with a known phrase, and reads that column and the two after it as personal, other and total — not the three columns following it. The column numbers below are the ones actually read:

`decided` is the sheet's own "Total determined" column, not a sum of the four outcome measures above it, so every rate the site publishes uses the denominator the source publishes.

Columns not read: the "Transferred" group, and the three percentage columns that follow the granted and refused groups.

Sheet: Response times

One measure, read by header in the same way:

The sheet also publishes four bands of lateness (up to 30 days, 31 to 60, 61 to 90, over 90) and its own "Requests determined" column. None are read. Timeliness on the site is therefore the share of decisions made within the statutory period, with `decided` from the Action on requests sheet as the denominator. A figure that showed how late the late decisions were would need those bands ingested first.

Convention: personal, other and total request types

Every measure in every sheet is published three times over: for requests involving personal information, for other requests, and for the total. The normaliser keeps all three as separate rows under a `bucket` field, so a reader can filter to one type without the platform having to re-derive anything.

`total` is the workbook's own total column, read directly. It is not computed as personal plus other. Where a source rounds or corrects, the published total is what the site shows.

Every figure the site draws by default reads the `total` bucket. The Type filter on each chart page re-derives it for requests involving personal information, or for other requests.

Convention: portfolio, captured from banner rows

The workbooks group agencies under portfolio banner rows: a row carrying the portfolio name across every column and no numbers. The normaliser recognises a banner as a row with no numeric cell after the first, remembers the name, and stamps it on each agency row that follows until the next banner.

Portfolio is therefore recorded per agency and per year, as each year's own file assigned it. An agency moved between portfolios by a Machinery of Government change carries the portfolio it was reported under in that year, not its current one.

One gap is worth stating plainly. Each sheet's first banner sits above the row the parser starts reading from, so the agencies in the first portfolio on each sheet carry no portfolio at all. Measured on 2026-08-26, that is 2,295 of the 54,602 fact rows, plus the 8 transcribed Q1 rows, which are national totals and belong to no portfolio: 2,303 rows in total, a little over four per cent. Those rows are complete and correct in every other respect and are counted in every national figure. They are excluded only from a portfolio breakdown. The `by_portfolio` operation discloses how many agencies in the requested slice carry no portfolio, and refuses to answer at all when none of them does, rather than collapsing an unmapped slice into a single plausible-looking bucket.

Convention: normaliser version

Every batch of facts written to the durable store carries the normaliser version that produced it (`storage.facts.NORMALISER_VER`) alongside a content hash over the canonical fact rows. Two ingests of the same data by the same normaliser produce the same hash and the second is a no-op; a change to the extraction logic produces a new dataset row rather than overwriting the old one.

The current frame is 54,602 facts: 54,594 read from the seven workbooks, plus the 8 transcribed Q1 2025-26 headline figures. Nine measures, three request types, seven financial years.

How we handle the data

Technical details (hashes and sheet mappings)
ReferenceFreedom of information statistics (data.gov.au dataset) — https://data.gov.au/data/dataset/freedom-of-information-statistics
Source file (this figure)Agency FOI data - 2019-20 (Excel).xlsx — covers 2019-20; read from data/sources/agency-foi-data-2019-20.xlsx; sha256 a4331ed2d8a84f90c13b10c333b96b5c5a1865803439c8e3e356960035b79d82; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/bb44fbf0-031f-4ed9-a152-0d59eae80deb/download/agency-foi-data-2019-20-excel.xlsx
Source file (this figure)Agency FOI data 2020-21.xlsx — covers 2020-21; read from data/sources/agency-foi-data-2020-21.xlsx; sha256 d76e1cb2b1921db3ed591160355b181a4ca2f59c23aa664d1fe7fbc5fce2f6a1; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/10814129-d618-4c6c-80d8-576aab3fdc4b/download/agency-foi-data-2020-21.xlsx
Source file (this figure)Agency FOI data 2021-22.xlsx — covers 2021-22; read from data/sources/agency-foi-data-2021-22.xlsx; sha256 9b70e7ee6867d52845b98ebbec353b342e19f45f30522880da50a1b81c01a26c; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/2ca9a822-040b-4d47-92a4-55868a3358a7/download/agency-foi-data-2021-22.xlsx
Source file (this figure)Agency FOI data 2022-23.xlsx — covers 2022-23; read from data/sources/agency-foi-data-2022-23.xlsx; sha256 598dd62fa245ce1930cde31b96c8df47baa0c76250becd4d9cb17ed8bccb4935; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/6f7292d7-3f12-49b9-8ee5-c7ebea18cb6d/download/agency-foi-data-2022-23.xlsx
Source file (this figure)Agency FOI data 2023-24.xlsx — covers 2023-24; read from data/sources/agency-foi-data-2023-24.xlsx; sha256 b933826c0a2d80f0fcf57f186f2b994d9a14dac9289012a5363be4ca2f8c073d; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/52b58c68-6d9c-4a78-8ba8-0bec492b11bb/download/agency-foi-data-2023-24.xlsx
Source file (this figure)Agency FOI data 2024-25.xlsx — covers 2024-25; read from data/sources/agency-foi-data-2024-25.xlsx; sha256 973a1ecd2722b981e90ac04e3e99036ae73db9e6fa2452066b7c53d1ced94563; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/f372d955-c5a4-4c60-b2ab-f252092f8978/download/agency-foi-data-202425.xlsx
Source file (this figure)Agency FOI data 2025-26 - Q1 to Q3 as at 18 May 2026 — covers 2025-26; read from data/sources/agency-foi-data-2025-26-q1-to-q3.xlsx; sha256 0ca28e57f061bfeb2f5a6e789078f3d824b6f59e3b8d4fc900ab432fcaa00bc3; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/0438fe31-540c-47cd-8923-826fa13b30c2/download/agency-foi-data-2025-26-q1-to-q3-as-at-18-may-2026.xlsx
ReferenceFOI requests, costs and charges 1982-2025 — https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/8d4944cb-b4b1-49ea-ad85-3fcd5fff9054/download/foi-requests-costs-and-charges-1982-2025.xlsx
ReferenceAustralian Government Freedom of Information statistics (OAIC) — https://www.oaic.gov.au/freedom-of-information/australian-government-freedom-of-information-statistics
Derivation (other measures)Request numbers — the 'Request numbers' sheet supplies received, received_transfer, finalised
Derivation (this figure)Action on requests — the 'Action on requests' sheet supplies granted_full, granted_part, refused, withdrawn, decided
Derivation (this figure)Response times — the 'Response times' sheet supplies within_statutory
DerivationThe P/O/T request-type buckets
DerivationPortfolio, read from the sheet's section banners
DerivationNormaliser version stamped on every stored dataset
Curation decisionThe 2021 courts merger is reported as new entities, not a rename (recorded 2026-08-25)
Curation decisionRenamed agencies are reported under their current name for all years (recorded 2026-08-25)
Curation decisionTrends are drawn on published financial years; quarters are not reconstructed (recorded 2026-08-20)
Curation decision"Requests received" means received from an applicant (recorded 2026-08-25)
Curation decisionThe eight Q1 2025-26 headline figures come from the OAIC dashboard (recorded 2026-08-20)
Curation decisionQuarterly data exists only up to 2018-19, and cannot be used to fill the gap (recorded 2026-08-25)
Curation decisionThe six-year benchmark uses complete financial years only (recorded 2026-09-13)
Curation decisionAgency and portfolio scope the page; applicant type and financial year set the chart window (recorded 2026-09-13)
Curation decisionAgencies below 30 decisions are shown with their rates, not ranked (recorded 2026-09-13)