Corrections
Every substantive error this site has found in its own output, what was wrong, and what changed. A watchdog that hides its own mistakes has no standing to report anyone else's.
Wrong: The table of people who claimed asylum after entering on a visa, on the asylum page, was labelled “year ending December 2018”. The figures in it were for the year ending June 2026. The period was wrong by seven and a half years, appeared twice on the page, and travelled into the downloadable CSV and JSON as the dataset’s period. The figures themselves were correct and are unchanged.
Fixed: The period is now read from that table’s own title and from nowhere else. The cause was that it had been read from two table titles concatenated together, taking the first date that matched — and the neighbouring table’s title begins “year ending December 2018 to the year ending June 2026”, so the first date in it is the START of a different table’s range. The table at issue has no year columns at all, one set of figures for one year, so its title is the only place its period exists. The build now also asserts that this table’s period matches the neighbouring table’s latest column, since both come from a single release and any divergence means something is being read from the wrong sheet.
Wrong: The data status page said the build “refuses to ship a dataset that has gone past its cadence window”, and that “this site fails its own build in that situation”. Its opening line described the cadence window as one the build gate “enforces”. None of that was true. The freshness check emits a warning and the build continues; the script stops the build only on errors, and a stale dataset does not raise one. The claim had been on the page since it was published on 24 August 2026.
Fixed: The page now says what the check actually does — it warns — and why it warns rather than refusing to build: a publisher releasing late is not an error in this site, and halting every deployment until they publish would also halt the corrections and repairs that have nothing to do with them. The page now also names what the build genuinely does refuse to ship, which is a figure without its source, period and retrieval date. This site's authority rests on being checkable, so a page overstating its own enforcement is a more serious fault than a wrong statistic would be.
Wrong: The ages shown on the data status page were measured against the most recently refreshed dataset on the site, not against the calendar. A dataset could therefore only ever appear overdue relative to the other datasets. If refreshing stopped altogether — the one failure the page exists to reveal — every age would freeze where it stood and the page would report that all datasets were inside their cadence windows, indefinitely, while the build's own check measured the same datasets against the clock and would have warned on nearly all of them. No published figure was wrong, but the page's answer to the question it was built to answer could not become negative.
Fixed: Ages are now measured against the calendar at build time, which is the same test the build applies. The original reason for the relative measure was sound and has been kept in a different form: a statically built page that says “today” bakes its build date and grows quietly wrong, so the page now states the date the ages were measured on rather than implying the present.
Wrong: The about page said the site had “twenty-three sections”. It had twenty-nine. The same figure appeared in the machine-readable description of that page served at /llms.txt, so it was also being given to answer engines. Every other count on that page — datasets, sources, corrections, local authorities, written questions — was already derived from the data, and the file carries a comment saying counts must never be typed in.
Fixed: The count is now read from the page registry, like the others around it. The machine-readable description no longer states a number at all, because it is defined inside the registry it would need to count and cannot refer to it.
Wrong: The caveat printed beneath the £25,000 spending table on the costs page said: "The disclosures contain no payments to Clearsprings Ready Homes or Mears Group; the asylum accommodation contract payments are not published in this series." The table directly above it showed £220.3m paid to Clearsprings in March 2025 and £226.7m in April 2025, and £464.2m across the period — so the sentence was contradicted by the figures it was captioning. The same sentence travelled into the downloadable CSV and JSON as the dataset's note.
Fixed: The note now says what the column actually is: the sum of disclosed transactions naming each contractor in that month, where a £0 month means no disclosed transaction for that provider rather than the contractor going unpaid. The finding the page draws from the series was already computed at render time and was never wrong — it correctly reported that 11 of the 17 months contain no transaction naming Clearsprings or Mears. The cause was that the note had been corrected in the parser in an earlier round but the parser was never re-run, so the fix stayed in the code while the wrong sentence stayed in the published data. A new check (npm run check:parsers) now verifies that every explanatory note a parser writes is present in the data that parser produced, and fails the build when one is not — which is the condition that hid this.
Wrong: The appeals page compared the tribunal's open caseload of 151,767 — which covers ALL immigration case types, counted in cases by the Ministry of Justice — against the Home Office's 48,758 people awaiting an initial asylum decision, and called it "roughly three times". The like-for-like figure, asylum and protection appeals, was 87,450 and was already shown in the tile directly above. The page also asserted that "clearing the first queue has been filling the second", a causal claim nothing in the data supports.
Fixed: The comparison now uses asylum against asylum, states that the two bodies count cases and people on different bases, notes the all-case-types figure separately as covering work the comparison does not, and publishes no ratio between the two. The causal sentence has been removed from both the panel and the page introduction.
Wrong: The detention section said capacity in use was "a fraction of its mid-2010s scale". The detained population at the latest year end was 1,955 against 2,607 at the end of 2015 — about three quarters, not a fraction.
Fixed: The sentence now gives both published figures and their years and lets the reader judge the change; the comparator year is taken from the series rather than asserted.
Wrong: Region pages described a petition's total signature count as being "UK-wide", while the petitions page correctly reported that some signatures — 13,792 on the largest petition — were recorded outside the UK regions. The two pages contradicted each other.
Fixed: Region pages now describe the figure as the total including signatures recorded outside the UK regions, matching the petitions page.
Wrong: The 'OIC disruptions in four quarters' figure (7,730) and the quarterly chart included the published table's annual Total rows as if they were quarters — the true four-quarter figure is 4,388, and the chart showed spurious year-total spikes. The downloadable quarterly dataset carried the same rows.
Fixed: Total rows are excluded, the tile, chart and download recomputed, and the build gate now rejects any quarter labelled 'Total' so the error class cannot recur.
Wrong: The £25k+ spend panel said the disclosures contained 'no payments at all to Clearsprings Ready Homes or Mears Group'. That was true only of the five months then loaded (January to May 2026): the full two-year series shows £464m of disclosed Clearsprings transactions and £82m of Mears transactions, concentrated in early-to-mid 2025.
Fixed: The series now loads both publication years; every sentence about it is computed from the data at render time; the finding is restated as what the table actually shows — provider transactions appear only intermittently, with long runs of months containing none.
Wrong: The share of small-boat arrivals who were adult males was published as 73.7% 'of those with a recorded age', but the denominator included the group whose age was not recorded.
Fixed: The denominator now excludes unrecorded ages, matching the label: 75.9%.
Wrong: The Ipsos polling entry listed a net figure ('too high', 67%) and its own component ('much too high', 43%) as if they were separate answers in one distribution — the rows summed to 143%.
Fixed: Component rows are now flagged and rendered as 'of which' sub-rows; a build gate requires every polling distribution to sum to approximately 100%.
Wrong: Per-10,000-residents rates on local-authority pages were computed against Census 2021 usual residents — a denominator four years stale that also excluded Scotland and Northern Ireland (no 2021 census there), so their pages carried no rate at all.
Fixed: Rates now use ONS mid-year population estimates on current boundaries (mid-2025; mid-2024 for Northern Ireland, its latest published year), covering all four nations. Not an error in the source data, but published rates changed, so it is logged here.
Wrong: The 'FNO returns by offence group' chart included the published table's Total column as if it were an offence group — its largest bar (5,683) was the sum of all the others.
Fixed: The Total column is excluded; the chart now leads with the largest real offence group.
Wrong: Residual rows ('Other', 'All other nationalities') from the published tables were charted as if they were nationalities — one appeared as the largest 'nationality' for FNO returns.
Fixed: Residual buckets are excluded from nationality charts; each top-10 now contains ten real nationalities.
Wrong: Six English authorities (including Sheffield) whose GSS codes changed after the 2021 census showed no census panel and displayed a false sentence saying census context was unavailable because the census 'covered England and Wales only'.
Fixed: Census figures are now joined by verified name-match or aggregated from the pre-2023 constituent districts, and the fallback wording distinguishes boundary mismatches from Scotland/Northern Ireland.
Wrong: The enforced-vs-voluntary returns chart silently stopped at 2023: the parser rejected the provisional '[p]'-marked year rows for 2024 and 2025.
Fixed: Provisional markers are stripped before parsing; the series now runs to the latest published year, flagged provisional.
Wrong: The local-authority table's 'Contingency (hotel)' column and page introduction described all contingency accommodation (22,428 people) as hotels; the published hotel figure is 20,885.
Fixed: Contingency and its hotel subset are now separate columns, and the introduction counts hotel authorities separately.
Wrong: The nationality and age/sex tables (calendar-year 2025 data) carried a source line stating the period as 'year ending March 2026' — the release vintage, not the data's own period.
Fixed: Those tables' source lines now state the calendar year the columns actually cover.
Wrong: The monthly trend chart ended on the current incomplete month, drawn as a cliff-edge fall with nothing marking it partial.
Fixed: The monthly series includes complete months only, and the caption says so.
Found something wrong? Email corrections@migrationwatchdog.com with the page and the source document. Errors in our output are corrected and logged here with a date; errors in the underlying official statistics are reported to their publisher and reflected at the next refresh. The full policy is on the sources page. Changes that were not errors — new sections, new sources, reworked pages — are recorded separately on the changelog, and both registers publish an RSS feed.
Log last updated