publicdataau publicdata.au on GitHub
Published by Department of Transport and Planning under CC BY 4.0 and republished here without change to the content. Department of Transport and Planning has not endorsed this site.An independent republication of open government data. No government agency has endorsed it. Read more

Road crashes, Victoria

live
Publisher Department of Transport and PlanningUpdated monthlyLicence CC BY 4.0Latest 2026-09-15Rows 200,754Fields 64

One row per crash on a Victorian road in which a person was killed or injured, from 2012 to the latest month released. Each row carries the date and time, the crash movement (DCA) code, light condition, road geometry, severity, speed zone, road and council area, coordinates, and counts of people killed and injured by road user and age group, and of vehicles by type.

The publisher consolidates Victoria Police reports with hospital injury records and releases the file monthly.

Also called: Victoria Road Crash Data, VicRoads crash statistics, Victorian car accident data, Road Crash Information System (RCIS) data.

Before you use it
Does it include every crash?
No. The publisher includes crashes reported to Victoria Police in which a person was killed or injured, consolidated with hospital injury records. A crash with no injury that nobody reported is not here.
Why do recent months have fewer crashes?
The publisher adds crashes as police reports and hospital records are matched, which can take months. Recent months rise in later releases, and each release becomes a version here.
What are the other files on the portal?
The publisher also releases person, vehicle, event, node and condition tables that join to this one on accident_no. This dataset is the flattened file the publisher provides with one row per crash and its coordinates.
200,669 crashes drawn in 5,388 cells of 0.05 degrees, the fullest with 10,376.
Crashes counted in cells of 0.05 degrees. State outlines from the ABS Australian Statistical Geography Standard 2021, CC BY 4.0.
200,754crashes
2012 to 2025years drawn
64fields
12formats
1version
05k10k15k20k2012 Fatal accident: 2612012 Other injury accident: 8,9412012 Serious injury accident: 4,7102013 Fatal accident: 2252013 Other injury accident: 9,0262013 Serious injury accident: 4,77220132014 Fatal accident: 2232014 Other injury accident: 9,1202014 Serious injury accident: 5,1602015 Fatal accident: 2312015 Other injury accident: 10,0352015 Serious injury accident: 5,41820152016 Fatal accident: 2752016 Other injury accident: 9,7072016 Serious injury accident: 5,7972017 Fatal accident: 2402017 Other injury accident: 7,5922017 Serious injury accident: 5,51920172018 Fatal accident: 2022018 Other injury accident: 7,0052018 Serious injury accident: 5,5582019 Fatal accident: 2482019 Non injury accident: 12019 Other injury accident: 8,4692019 Serious injury accident: 5,68120192020 Fatal accident: 1952020 Other injury accident: 7,3442020 Serious injury accident: 4,6312021 Fatal accident: 2162021 Non injury accident: 12021 Other injury accident: 8,7892021 Serious injury accident: 5,00720212022 Fatal accident: 2392022 Non injury accident: 22022 Other injury accident: 10,0332022 Serious injury accident: 4,7692023 Fatal accident: 2612023 Other injury accident: 10,1762023 Serious injury accident: 5,12520232024 Fatal accident: 2712024 Other injury accident: 10,2532024 Serious injury accident: 4,8682025 Fatal accident: 2652025 Other injury accident: 8,6322025 Serious injury accident: 5,1252025
Fatal accidentNon injury accidentOther injury accidentSerious injury accident
Crashes per year by severity, 2012 to 2025. 2026 is not drawn because the rows run to 31 January 2026. Both figures are counts of rows from version 2026-09-15, worked out in the build. Nothing else is added.

Made for agents

Connect your AI agent

Any agent that connects to publicdata.au/mcp can find this dataset, read its 64 fields, count and filter across all 200,754 rows and diff its versions. Every answer names the version and carries Transport and Planning's attribution. No key.

Then ask it: What does Road crashes, Victoria hold, and what changed in the newest version?

claude mcp add --transport http publicdata https://publicdata.au/mcp

One command. No key, no account, no sign-up.

Download it as CSV, Excel, JSON and 9 more formats

Pick a format and a version. CSV is picked first because it opens in the tools most offices have. The URL is yours to keep. A dated version never changes.

Format
"Latest" redirects to the newest version and will change when the publisher releases again. A dated version never changes.
https://publicdata.au/d/vic-road-crashes/latest/data.csv
Download

In your own tools

Use it in Excel, R, Python and more

Excel and Power BI read the CSV from its address and refresh from it. The R and Python packages take any dataset on this site by its slug, so a new dataset needs no new release. The DuckDB file attaches read-only over HTTPS, and a query reads only the blocks it touches.

The dated URL in the code never changes. https://publicdata.au/d/vic-road-crashes/latest/ redirects to the newest version.

https://publicdata.au/d/vic-road-crashes/latest/data.csv

In Excel choose Data, then From Web, and paste this address. Excel keeps it, so Refresh All reads the newest version. A sheet holds about a million rows; past that, load the query to the Data Model.

What is in it

Column names are made snake_case and the publisher's original header is kept beside each one. Blank cells are null. Nothing is added, removed, ranked or summarised. Cells were typed and headers were made snake_case. The publisher's header is kept beside every field in schema.json. Rows were left alone.

FieldTypePublisher's headerNote
accident_nostringACCIDENT_NOThe publisher's identifier for the crash.
accident_datedateACCIDENT_DATE
accident_timestringACCIDENT_TIME24-hour time.
accident_typestringACCIDENT_TYPE
day_of_weekstringDAY_OF_WEEK
dca_codestringDCA_CODEDCA (Definitions for Classifying Accidents) code. Kept as text.
dca_code_descriptionstringDCA_CODE_DESCRIPTION
light_conditionstringLIGHT_CONDITION
police_attendstringPOLICE_ATTENDYes, No or Not known.
road_geometrystringROAD_GEOMETRY
severitystringSEVERITYFatal accident, Serious injury accident, Other injury accident or Non injury accident.
speed_zonestringSPEED_ZONEA band such as 60 km/hr. Kept as text because the publisher uses bands.
run_offroadstringRUN_OFFROAD
road_namestringROAD_NAME
road_typestringROAD_TYPE
road_route_1stringROAD_ROUTE_1Kept as text.
lga_namestringLGA_NAME
dtp_regionstringDTP_REGION
latitudenumberLATITUDEDecimal degrees. Blank for 85 crashes in the September 2026 release.
longitudenumberLONGITUDEDecimal degrees.
vicgrid_xnumberVICGRID_X
vicgrid_ynumberVICGRID_Y
total_personsintegerTOTAL_PERSONS
inj_or_fatalintegerINJ_OR_FATAL
fatalityintegerFATALITY
seriousinjuryintegerSERIOUSINJURY
otherinjuryintegerOTHERINJURY
noninjuredintegerNONINJURED
malesintegerMALES
femalesintegerFEMALES
bicyclistintegerBICYCLIST
passengerintegerPASSENGER
driverintegerDRIVER
pedestrianintegerPEDESTRIAN
pillionintegerPILLION
motorcyclistintegerMOTORCYCLIST
unknownintegerUNKNOWN
ped_cyclist_5_12integerPED_CYCLIST_5_12
ped_cyclist_13_18integerPED_CYCLIST_13_18
old_ped_65_and_overintegerOLD_PED_65_AND_OVER
old_driver_75_and_overintegerOLD_DRIVER_75_AND_OVER
young_driver_18_25integerYOUNG_DRIVER_18_25
no_of_vehiclesintegerNO_OF_VEHICLES
heavyvehicleintegerHEAVYVEHICLE
passengervehicleintegerPASSENGERVEHICLE
motorcycleintegerMOTORCYCLE
pt_vehicleintegerPT_VEHICLE
deg_urban_namestringDEG_URBAN_NAME
srnsstringSRNS
rmastringRMARoad Management Act class, such as Freeway, Arterial Highway or Local Road.
dividedstringDIVIDED
stat_div_namestringSTAT_DIV_NAME
sa2_2021_codestring(spine: sa2)Code of the Statistical Area Level 2 (2021) the point falls in. Joined by location from abs-sa2-2021, not published by the publisher.
sa2_2021_namestring(spine: sa2)Name of the Statistical Area Level 2 (2021) the point falls in. Joined by location from abs-sa2-2021, not published by the publisher.
lga_2025_codestring(spine: lga)Code of the Local Government Area (2025) the point falls in. Joined by location from abs-lga-2025, not published by the publisher.
lga_2025_namestring(spine: lga)Name of the Local Government Area (2025) the point falls in. Joined by location from abs-lga-2025, not published by the publisher.
sal_2021_codestring(spine: suburb)Code of the Suburb and Locality (2021) the point falls in. Joined by location from abs-suburbs-localities-2021, not published by the publisher.
sal_2021_namestring(spine: suburb)Name of the Suburb and Locality (2021) the point falls in. Joined by location from abs-suburbs-localities-2021, not published by the publisher.
poa_2021_codestring(spine: postcode)Code of the Postal Area (2021) the point falls in. Joined by location from abs-postal-areas-2021, not published by the publisher.
poa_2021_namestring(spine: postcode)Name of the Postal Area (2021) the point falls in. Joined by location from abs-postal-areas-2021, not published by the publisher.
sed_2025_codestring(spine: state_electorate)Code of the State Electoral Division (2025) the point falls in. Joined by location from abs-state-electoral-divisions-2025, not published by the publisher.
sed_2025_namestring(spine: state_electorate)Name of the State Electoral Division (2025) the point falls in. Joined by location from abs-state-electoral-divisions-2025, not published by the publisher.
ced_2025_codestring(spine: federal_electorate)Code of the Commonwealth Electoral Division (2025) the point falls in. Joined by location from abs-federal-electoral-divisions-2025, not published by the publisher.
ced_2025_namestring(spine: federal_electorate)Name of the Commonwealth Electoral Division (2025) the point falls in. Joined by location from abs-federal-electoral-divisions-2025, not published by the publisher.

Download this table as a data dictionary (Excel), or read it as a Frictionless Table Schema at schema.json. The key is accident_no.

A sample of 10 rows

From the latest version, newest first by date, each council area in turn, then in the publisher's order, with every field. A blank cell is shown as null.

accident_noaccident_dateaccident_timeaccident_typeday_of_weekdca_codedca_code_descriptionlight_conditionpolice_attendroad_geometryseverityspeed_zonerun_offroadroad_nameroad_typeroad_route_1lga_namedtp_regionlatitudelongitudevicgrid_xvicgrid_ytotal_personsinj_or_fatalfatalityseriousinjuryotherinjurynoninjuredmalesfemalesbicyclistpassengerdriverpedestrianpillionmotorcyclistunknownped_cyclist_5_12ped_cyclist_13_18old_ped_65_and_overold_driver_75_and_overyoung_driver_18_25no_of_vehiclesheavyvehiclepassengervehiclemotorcyclept_vehicledeg_urban_namesrnsrmadividedstat_div_namesa2_2021_codesa2_2021_namelga_2025_codelga_2025_namesal_2021_codesal_2021_namepoa_2021_codepoa_2021_namesed_2025_codesed_2025_nameced_2025_codeced_2025_name
T202600025732026-01-3113:55:00Collision with vehicleSaturday134LANE CHANGE RIGHT (NOT OVERTAKING)DayYesNot at intersectionSerious injury accident100 km/hrNoMONASHFREEWAY2000CASEYGREATER METRO-37.995224145.265762523343.8482389521.6333101021201200000000020200MELB_URBANMFreewayDividedMetro212021454Endeavour Hills - South21610Casey20871Endeavour Hills3803380325805Narre Warren North (South-Eastern Metropolitan)204Bruce
T202600024922026-01-3014:45:00Vehicle overturned (no collision)Friday172OFF CARRIAGEWAY TO RIGHTDayYesNot at intersectionSerious injury accident100 km/hrYesHUNTSROAD9999SURF COASTBARWON SOUTH WEST-38.25931144.200242429997.6352359945.8711101000100100000000010100RURAL_VICTORIAnullLocal RoadUndividedCountry203011036Winchelsea26490Surf Coast20954Freshwater Creek3217321727708South Barwon (Western Victoria)237Wannon
T202600024822026-01-3010:10:00Collision with a fixed objectFriday173RIGHT OFF CARRIAGEWAY INTO OBJECT/PARKED VEHICLEDayYesNot at intersectionFatal accident100 km/hrYesWOORNDOO-CHATSWORTHROAD9999MOYNEBARWON SOUTH WEST-37.873398142.691022296876.6012400613.0081110001000100000000011000RURAL_VICTORIAnullLocal RoadUndividedCountry217041477Moyne - East25490Moyne20536Chatsworth (Vic.)3379337924408Lowan (Western Victoria)237Wannon
T202600023662026-01-2912:15:00Struck PedestrianThursday100PED NEAR SIDE. PED HIT BY VEHICLE FROM THE RIGHT.DayYesT intersectionFatal accident60 km/hrNoBALLARATROAD5520MARIBYRNONGINNER METRO-37.784107144.8722488725.3512412978.6712110011100110000010010100MELB_URBANnullArterial OtherUndividedMetro213031347Braybrook24330Maribyrnong21575Maidstone3012301222907Footscray (Western Metropolitan)214Fraser
T202600023112026-01-2821:25:00Collision with vehicleWednesday121RIGHT THROUGHDark Street lights onYesCross intersectionSerious injury accident60 km/hrNoDANDENONG ROAD E-OVERTONROAD2090FRANKSTONGREATER METRO-38.130184145.131882511563.9442374565.6592101012000200000000120200MELB_URBANnullArterial HighwayDividedMetro214011371Frankston22170Frankston20947Frankston3199319923005Frankston (South-Eastern Metropolitan)212Dunkley
T202600038002026-01-2807:50:00Collision with vehicleWednesday134LANE CHANGE RIGHT (NOT OVERTAKING)DayYesNot at intersectionSerious injury accident80 km/hrNoDANDENONG ROAD SERVICEROAD9999GLEN EIRAINNER METRO-37.883488145.053472504703.8492401955.0613101023000101100000020110MELB_URBANnullArterial HighwayUndividedMetro208021176Carnegie22310Glen Eira20498Carnegie3163316326306Oakleigh (Southern Metropolitan)221Hotham
T202600022912026-01-2816:00:00Collision with vehicleWednesday160VEHICLE COLLIDES WITH VEHICLE PARKED ON LEFT OF ROADDayYesNot at intersectionSerious injury accident50 km/hrNoANTHONYDRIVE9999YARRA RANGESGREATER METRO-37.754593145.308822527212.4712416217.871101001000100000000020200MELB_URBANnullLocal RoadUndividedMetro211051275Chirnside Park27450Yarra Ranges20556Chirnside Park3116311628402Warrandyte (North-Eastern Metropolitan)206Casey
T202600022812026-01-2815:05:00Collision with vehicleWednesday120HEAD ON (NOT OVERTAKING)DayYesNot at intersectionSerious injury accident60 km/hrNoBLACKSHAWSROAD5450HOBSONS BAYINNER METRO-37.829414144.833052485302.9992407945.0522202000200200000000020200MELB_URBANnullArterial OtherUndividedMetro213021343Altona North23110Hobsons Bay20037Altona North3025302528707Williamstown (Western Metropolitan)215Gellibrand
T202600024292026-01-2817:30:00Collision with vehicleWednesday160VEHICLE COLLIDES WITH VEHICLE PARKED ON LEFT OF ROADDayNoT intersectionSerious injury accident60 km/hrNoBEACHROAD5840KINGSTONINNER METRO-38.005833145.082522507246.682388373.5352101011010100000000020100MELB_URBANnullArterial OtherUndividedMetro208031193Mordialloc - Parkdale23430Kingston (Vic.)21760Mordialloc3195319525205Mordialloc (South-Eastern Metropolitan)223Isaacs
T202600021492026-01-2708:58:00Struck PedestrianTuesday100PED NEAR SIDE. PED HIT BY VEHICLE FROM THE RIGHT.DayYesNot at intersectionSerious injury accident50 km/hrNoPEARLSTREET9999GEELONGBARWON SOUTH WEST-38.256027144.52082458054.1232360498.8422101012000110000100110100SMALL_CITIESnullLocal RoadUndividedCountry203031490Ocean Grove22750Greater Geelong22005Ocean Grove3226322620508Bellarine (Western Victoria)209Corangamite
The first row as JSON

As it appears in data.json.

GET https://publicdata.au/d/vic-road-crashes/latest/data.json
{
  "accident_no": "T20140024624",
  "accident_date": "2014-11-27",
  "accident_time": "18:35:00",
  "accident_type": "Collision with vehicle",
  "day_of_week": "Thursday",
  "dca_code": "110",
  "dca_code_description": "CROSS TRAFFIC(INTERSECTIONS ONLY)",
  "light_condition": "Day",
  "police_attend": "Yes",
  "road_geometry": "Cross intersection",
  "severity": "Other injury accident",
  "speed_zone": "50 km/hr",
  "run_offroad": "No",
  "road_name": "ALFRED",
  "road_type": "STREET",
  "road_route_1": "9999",
  "lga_name": "WELLINGTON",
  "dtp_region": "GIPPSLAND",
  "latitude": -37.96197,
  "longitude": 146.98431,
  "vicgrid_x": 2674362.051,
  "vicgrid_y": 2391427.834,
  "total_persons": 3,
  "inj_or_fatal": 1,
  "fatality": 0,
  "seriousinjury": 0,
  "otherinjury": 1,
  "noninjured": 2,
  "males": 3,
  "females": 0,
  "bicyclist": 0,
  "passenger": 1,
  "driver": 2,
  "pedestrian": 0,
  "pillion": 0,
  "motorcyclist": 0,
  "unknown": 0,
  "ped_cyclist_5_12": 0,
  "ped_cyclist_13_18": 0,
  "old_ped_65_and_over": 0,
  "old_driver_75_and_over": 0,
  "young_driver_18_25": 1,
  "no_of_vehicles": 2,
  "heavyvehicle": 0,
  "passengervehicle": 2,
  "motorcycle": 0,
  "pt_vehicle": 0,
  "deg_urban_name": "TOWNS",
  "srns": null,
  "rma": "Local Road",
  "divided": "Undivided",
  "stat_div_name": "Country",
  "sa2_2021_code": "205051101",
  "sa2_2021_name": "Maffra",
  "lga_2025_code": "26810",
  "lga_2025_name": "Wellington",
  "sal_2021_code": "21571",
  "sal_2021_name": "Maffra (Vic.)",
  "poa_2021_code": "3860",
  "poa_2021_name": "3860",
  "sed_2025_code": "23201",
  "sed_2025_name": "Gippsland East (Eastern Victoria)",
  "ced_2025_code": "216",
  "ced_2025_name": "Gippsland"
}

Query it without downloading

The query API returns only the rows you ask for, as JSON, NDJSON or CSV, from the same typed rows as the files. It needs no key. Build a query here and run it, then copy the URL or the code into your own work.

Try rows or aggregate for this dataset. The query builder needs JavaScript.

How filters work

Each filter is field=operator.value in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive except with ilike. Prefix not. to negate a filter, as not.eq.value.

OperatorWhat it matches
eq.valueEqual to the value.
neq.valueNot equal to the value. A blank cell does not match.
gt.valueGreater than the value.
gte.valueGreater than or equal to the value.
lt.valueLess than the value.
lte.valueLess than or equal to the value.
like.*text*Matches a pattern where * stands for any run of characters. Case-sensitive.
ilike.*text*The same as like, ignoring case.
in.(a,b,c)Equal to any value in the list. A value cannot contain a comma.
is.nullBlank in the source, or suppressed by the publisher.
ParameterWhat it does
selectFields to return, comma-separated. Every field when absent.
orderfield.asc or field.desc, comma-separated. The publisher's row order when absent.
limitRows per page, 1 to 10,000. 100 when absent.
offsetRows to skip. The next URL in each answer sets it for you.
groupOn aggregate, fields to group by, comma-separated.
metricOn aggregate, count, sum.field, avg.field, min.field or max.field, comma-separated. count when absent.
formatjson, ndjson or csv. JSON carries the provenance header, and the others carry it in response headers.

Without a version the API answers from the newest loaded version, and that answer changes when the publisher releases again. Put versions/<date>/ before rows or aggregate for an answer that never changes. /api/v1/datasets/<slug>/versions lists the loaded versions. The 1 newest version is loaded; versions lists them.

The API allows 60 requests in 10 seconds from one address. Above that it answers 429 for 10 seconds with a Retry-After header, a RateLimit-Policy header and a JSON body that gives the limit. Every API answer carries the same RateLimit-Policy. A client should wait the Retry-After seconds, or read the files, which have no limit. openapi.json describes this dataset's query paths for client generators and agents.

https://publicdata.au/mcp is a remote MCP server over Streamable HTTP with the same tools, defined in the same place, so a tool added to the pages is added here too. It needs no key and no account. The row tools are held to the query API's limit of 60 queries in 10 seconds from one address, and each call is two queries because it also counts the matching rows. Add it to Claude Code with claude mcp add --transport http publicdata https://publicdata.au/mcp, add the URL in Claude as a custom connector, or give it to any client that connects to remote MCP servers. Each queryable dataset is also a resource at https://publicdata.au/d/<slug>/fields.json, which lists its fields with their types, the publisher's descriptions, their ranges and the values they hold, so an agent can read a dataset's shape before it writes a query.

Smaller files

The same rows split by a field, one JSON file each with a GeoJSON beside it. Each file carries the same provenance header.

By lga_name (88 files)

by/lga_name/index.json lists every file with its row count.

What changed

One version for every release the publisher has made since this site started following the dataset. The date is the day the file changed on the portal.

  • 2026-09-15
    200,754 rows64 fieldsutf-8-sig5d1621deef51

versions.json · changes.json · history.tar.zst (11 MB, every version's Parquet and manifest)

Questions

How do I download Road crashes as a CSV file?

Open https://publicdata.au/d/vic-road-crashes/latest/data.csv. It redirects to the newest dated version, which is https://publicdata.au/d/vic-road-crashes/v/2026-09-15/data.csv today. The same path serves Excel, JSON, GeoJSON, Parquet, SQLite, DuckDB, GeoPackage, GeoParquet, NDJSON, Arrow. A dated URL never changes, so use it when the file must stay the same.

Can I open Road crashes in Excel?

Yes. https://publicdata.au/d/vic-road-crashes/v/2026-09-15/data.xlsx is a workbook with the 200,754 rows on a records sheet, the field list on a second sheet and the provenance on a third. The CSV also opens in Excel. https://publicdata.au/d/vic-road-crashes/v/2026-09-15/data.csv.gz is the CSV at about a tenth of the size.

What years does Road crashes cover?

The current version covers 2012 to 2025. Each release from Transport and Planning becomes a new dated version here, and earlier versions stay online.

How often is Road crashes updated?

Transport and Planning releases it monthly. This site checks the portal every week and adds a dated version when the file changes.

Can I use Road crashes commercially?

Yes. CC BY 4.0 allows commercial use, redistribution and derived works as long as the attribution is kept. The attribution string is in this page's side column and inside every file.

Is this the official source for Road crashes?

No. The publisher is Department of Transport and Planning, and its page is https://discover.data.vic.gov.au/dataset/victoria-road-crash-data. This site republishes the publisher's file without changing its content. The original sits beside every version as source.csv with its SHA-256, so the two can be compared.

How do I get only the rows for one lga name?

Every version has one JSON file per value of lga_name, 88 files in the current version, listed with row counts at https://publicdata.au/d/vic-road-crashes/v/2026-09-15/by/lga_name/index.json. For example https://publicdata.au/d/vic-road-crashes/v/2026-09-15/by/lga_name/melbourne.json holds the 10,422 rows where lga_name is MELBOURNE. A GeoJSON file sits beside each one.

What coordinate system does Road crashes use?

Latitude and longitude in decimal degrees as published, with the publisher's VicGrid easting and northing beside them. The publisher does not name the datum in the file; GDA94 is the Victorian Government's standard and differs from GDA2020 and WGS84 by under 2 metres. The GeoJSON file uses the same coordinates, which is what GeoJSON expects.

Which SA2, council area, suburb, postcode, state electorate and federal electorate is each row of Road crashes in?

Each row with coordinates carries the SA2 (2021), Council area (LGA 2025), Suburb or locality (2021), Postcode (postal area 2021), State electorate (2025) and Federal electorate (2025) its point falls in, with the code of each. This site joins them by location against the ABS boundaries, https://publicdata.au/d/abs-sa2-2021/, https://publicdata.au/d/abs-lga-2025/, https://publicdata.au/d/abs-suburbs-localities-2021/, https://publicdata.au/d/abs-postal-areas-2021/, https://publicdata.au/d/abs-state-electoral-divisions-2025/, https://publicdata.au/d/abs-federal-electoral-divisions-2025/, and Transport and Planning did not publish them. The schema marks each one as joined and names the boundary version. A row without coordinates, or a point outside every area, has them blank. Place columns from Australian Statistical Geography Standard (ASGS) Edition 3 boundaries, Australian Bureau of Statistics, licensed under CC BY 4.0.

What this site did to the data. Cells were typed, headers were renamed and the encoding was made UTF-8. Rows were left alone. The publisher's file sits beside every version as source.csv so the change can be checked.