Measurement one of two
How complete is California's historical fire perimeter record?
FRAP publishes the answer in prose: the dataset is the most complete digital record of fire perimeters in California, and it is still incomplete. This page turns that sentence into counts, per year and per field, so anyone building on the data can see the shape of what is there before they rely on it.
- 23,334Perimeter records in the layer
- 1878 to 2025Fire years represented
- 77Records carrying no fire year
- 3,633 (15.6%)Records carrying an IRWIN ID
Three states, field by field
A cell can hold a value, hold a published code or marker meaning the value could not be determined, or hold nothing. Counting only the third of those would make several fields here look complete when they are not. Cause is the clearest case: no cause cell is empty, and a large share of them carry the published code for Unknown / Unidentified. Collection method behaves the same way, which is what FRAP's release note about editing null collection methods to Unknown describes.
- Recorded value
- Recorded as unknown
- Empty cell
| Field | Recorded value | Recorded as unknown | Empty cell | Value present | Split |
|---|---|---|---|---|---|
| Year YEAR_ | 23,257 | 0 | 77 | 99.7% | |
| IRWIN ID IRWINID | 3,633 | 0 | 19,701 | 15.6% | |
| Alarm date ALARM_DATE | 17,950 | 0 | 5,384 | 76.9% | |
| Containment date CONT_DATE | 10,716 | 0 | 12,618 | 45.9% | |
| Fire name markers: n/a (72), none (1), unknown (12). Basis: inferred. At least one value this field declares is documented nowhere, and was read off the acquired file by this project. See docs/MARKERS.md FIRE_NAME | 16,666 | 85 | 6,583 | 71.4% | |
| Local incident number markers: 00000000 (12,469). Basis: inferred. At least one value this field declares is documented nowhere, and was read off the acquired file by this project. See docs/MARKERS.md INC_NUM | 9,910 | 12,469 | 955 | 42.5% | |
| Fire number (historical use) markers: 00000000 (3,620), <null> (3). Basis: inferred. At least one value this field declares is documented nowhere, and was read off the acquired file by this project. See docs/MARKERS.md FIRE_NUM | 13,521 | 3,623 | 6,190 | 57.9% | |
| Cause markers: 14 (10,514). Basis: published. Every value this field declares is a code in the layer's own coded-value domain, or a value the publisher's documentation states CAUSE | 12,820 | 10,514 | 0 | 54.9% | |
| Collection method markers: 8 (15,081). Basis: published. Every value this field declares is a code in the layer's own coded-value domain, or a value the publisher's documentation states C_METHOD | 8,253 | 15,081 | 0 | 35.4% | |
| Management objective OBJECTIVE | 23,063 | 0 | 271 | 98.8% | |
| Reporting agency AGENCY | 23,286 | 0 | 48 | 99.8% | |
| Unit UNIT_ID | 23,274 | 0 | 60 | 99.7% | |
| State STATE | 23,334 | 0 | 0 | 100.0% | |
| GIS calculated acres GIS_ACRES | 23,334 | 0 | 0 | 100.0% | |
| Complex name COMPLEX_NAME | 618 | 0 | 22,716 | 2.6% | |
| Complex ID markers: 00000000 (1). Basis: inferred. At least one value this field declares is documented nowhere, and was read off the acquired file by this project. See docs/MARKERS.md COMPLEX_ID | 583 | 1 | 22,750 | 2.5% | |
| Decade DECADES | 18,064 | 0 | 5,270 | 77.4% |
Markers listed under a field name are the exact text this project reviewed for that field before counting it as a marker rather than as a value. A field number of all zeros, for instance, is counted apart from recorded numbers, because reading it as an identifier would make thousands of unrelated fires appear to share one incident.
Each field also carries the basis its markers rest
on. A published basis means the value is a code in the layer's own domain, which anyone
can re-read at the endpoint listed under Provenance below. An inferred basis means the
publisher documents no such code and this project read the value off the file. Both are
counted the same way; they are not worth the same confidence, so the page says which is
which rather than leaving a reader to assume. The full audit, with the evidence and the
effect of each call on the numbers above, is in docs/MARKERS.md.
Records per year, and IRWIN linkage inside each year
IRWIN is the federal incident identifier that links a perimeter to a federal incident record. FRAP's own release notes describe the newly added Global ID as covering records "pre-dating IRWIN IDs", so its absence on older records is expected rather than surprising. What the dataset does not publish alongside itself is where the identifier starts appearing and how much of each recent year carries one. Years no record names are absent from this table rather than shown as years with zero fires, because the data cannot tell the difference between a year with no fires and a year whose fires are missing.
| Fire year | Records | IRWIN ID present | IRWIN ID absent | Present | Split |
|---|---|---|---|---|---|
| 1878 | 1 | 0 | 1 | 0.0% | |
| 1895 | 1 | 0 | 1 | 0.0% | |
| 1896 | 1 | 0 | 1 | 0.0% | |
| 1898 | 5 | 0 | 5 | 0.0% | |
| 1900 | 12 | 0 | 12 | 0.0% | |
| 1902 | 1 | 0 | 1 | 0.0% | |
| 1903 | 2 | 0 | 2 | 0.0% | |
| 1905 | 1 | 0 | 1 | 0.0% | |
| 1906 | 4 | 0 | 4 | 0.0% | |
| 1907 | 10 | 0 | 10 | 0.0% | |
| 1908 | 16 | 0 | 16 | 0.0% | |
| 1909 | 24 | 0 | 24 | 0.0% | |
| 1910 | 90 | 0 | 90 | 0.0% | |
| 1911 | 166 | 0 | 166 | 0.0% | |
| 1912 | 56 | 0 | 56 | 0.0% | |
| 1913 | 84 | 0 | 84 | 0.0% | |
| 1914 | 105 | 0 | 105 | 0.0% | |
| 1915 | 132 | 0 | 132 | 0.0% | |
| 1916 | 131 | 0 | 131 | 0.0% | |
| 1917 | 266 | 0 | 266 | 0.0% | |
| 1918 | 129 | 0 | 129 | 0.0% | |
| 1919 | 165 | 0 | 165 | 0.0% | |
| 1920 | 131 | 0 | 131 | 0.0% | |
| 1921 | 160 | 0 | 160 | 0.0% | |
| 1922 | 116 | 0 | 116 | 0.0% | |
| 1923 | 125 | 0 | 125 | 0.0% | |
| 1924 | 248 | 0 | 248 | 0.0% | |
| 1925 | 91 | 0 | 91 | 0.0% | |
| 1926 | 188 | 0 | 188 | 0.0% | |
| 1927 | 99 | 0 | 99 | 0.0% | |
| 1928 | 167 | 0 | 167 | 0.0% | |
| 1929 | 154 | 0 | 154 | 0.0% | |
| 1930 | 107 | 0 | 107 | 0.0% | |
| 1931 | 215 | 0 | 215 | 0.0% | |
| 1932 | 116 | 0 | 116 | 0.0% | |
| 1933 | 73 | 0 | 73 | 0.0% | |
| 1934 | 132 | 0 | 132 | 0.0% | |
| 1935 | 81 | 0 | 81 | 0.0% | |
| 1936 | 123 | 0 | 123 | 0.0% | |
| 1937 | 59 | 0 | 59 | 0.0% | |
| 1938 | 100 | 0 | 100 | 0.0% | |
| 1939 | 151 | 0 | 151 | 0.0% | |
| 1940 | 88 | 0 | 88 | 0.0% | |
| 1941 | 111 | 0 | 111 | 0.0% | |
| 1942 | 101 | 0 | 101 | 0.0% | |
| 1943 | 114 | 0 | 114 | 0.0% | |
| 1944 | 135 | 0 | 135 | 0.0% | |
| 1945 | 148 | 0 | 148 | 0.0% | |
| 1946 | 102 | 0 | 102 | 0.0% | |
| 1947 | 121 | 0 | 121 | 0.0% | |
| 1948 | 65 | 0 | 65 | 0.0% | |
| 1949 | 170 | 0 | 170 | 0.0% | |
| 1950 | 226 | 0 | 226 | 0.0% | |
| 1951 | 219 | 0 | 219 | 0.0% | |
| 1952 | 172 | 0 | 172 | 0.0% | |
| 1953 | 217 | 0 | 217 | 0.0% | |
| 1954 | 157 | 0 | 157 | 0.0% | |
| 1955 | 171 | 0 | 171 | 0.0% | |
| 1956 | 133 | 0 | 133 | 0.0% | |
| 1957 | 153 | 0 | 153 | 0.0% | |
| 1958 | 167 | 0 | 167 | 0.0% | |
| 1959 | 204 | 0 | 204 | 0.0% | |
| 1960 | 142 | 0 | 142 | 0.0% | |
| 1961 | 167 | 0 | 167 | 0.0% | |
| 1962 | 109 | 0 | 109 | 0.0% | |
| 1963 | 78 | 0 | 78 | 0.0% | |
| 1964 | 137 | 0 | 137 | 0.0% | |
| 1965 | 59 | 0 | 59 | 0.0% | |
| 1966 | 132 | 0 | 132 | 0.0% | |
| 1967 | 111 | 0 | 111 | 0.0% | |
| 1968 | 210 | 0 | 210 | 0.0% | |
| 1969 | 131 | 0 | 131 | 0.0% | |
| 1970 | 233 | 0 | 233 | 0.0% | |
| 1971 | 109 | 0 | 109 | 0.0% | |
| 1972 | 154 | 0 | 154 | 0.0% | |
| 1973 | 150 | 0 | 150 | 0.0% | |
| 1974 | 206 | 0 | 206 | 0.0% | |
| 1975 | 210 | 0 | 210 | 0.0% | |
| 1976 | 133 | 0 | 133 | 0.0% | |
| 1977 | 167 | 0 | 167 | 0.0% | |
| 1978 | 152 | 0 | 152 | 0.0% | |
| 1979 | 365 | 0 | 365 | 0.0% | |
| 1980 | 319 | 0 | 319 | 0.0% | |
| 1981 | 271 | 0 | 271 | 0.0% | |
| 1982 | 145 | 0 | 145 | 0.0% | |
| 1983 | 159 | 0 | 159 | 0.0% | |
| 1984 | 211 | 0 | 211 | 0.0% | |
| 1985 | 210 | 0 | 210 | 0.0% | |
| 1986 | 172 | 0 | 172 | 0.0% | |
| 1987 | 284 | 0 | 284 | 0.0% | |
| 1988 | 256 | 0 | 256 | 0.0% | |
| 1989 | 179 | 0 | 179 | 0.0% | |
| 1990 | 174 | 0 | 174 | 0.0% | |
| 1991 | 87 | 0 | 87 | 0.0% | |
| 1992 | 195 | 0 | 195 | 0.0% | |
| 1993 | 171 | 0 | 171 | 0.0% | |
| 1994 | 217 | 0 | 217 | 0.0% | |
| 1995 | 206 | 0 | 206 | 0.0% | |
| 1996 | 317 | 0 | 317 | 0.0% | |
| 1997 | 188 | 0 | 188 | 0.0% | |
| 1998 | 163 | 0 | 163 | 0.0% | |
| 1999 | 274 | 0 | 274 | 0.0% | |
| 2000 | 180 | 0 | 180 | 0.0% | |
| 2001 | 207 | 0 | 207 | 0.0% | |
| 2002 | 244 | 0 | 244 | 0.0% | |
| 2003 | 339 | 0 | 339 | 0.0% | |
| 2004 | 276 | 0 | 276 | 0.0% | |
| 2005 | 304 | 0 | 304 | 0.0% | |
| 2006 | 314 | 0 | 314 | 0.0% | |
| 2007 | 348 | 0 | 348 | 0.0% | |
| 2008 | 439 | 0 | 439 | 0.0% | |
| 2009 | 254 | 0 | 254 | 0.0% | |
| 2010 | 207 | 0 | 207 | 0.0% | |
| 2011 | 317 | 0 | 317 | 0.0% | |
| 2012 | 351 | 0 | 351 | 0.0% | |
| 2013 | 296 | 0 | 296 | 0.0% | |
| 2014 | 236 | 152 | 84 | 64.4% | |
| 2015 | 314 | 173 | 141 | 55.1% | |
| 2016 | 363 | 212 | 151 | 58.4% | |
| 2017 | 611 | 414 | 197 | 67.8% | |
| 2018 | 416 | 211 | 205 | 50.7% | |
| 2019 | 318 | 228 | 90 | 71.7% | |
| 2020 | 504 | 457 | 47 | 90.7% | |
| 2021 | 388 | 321 | 67 | 82.7% | |
| 2022 | 307 | 291 | 16 | 94.8% | |
| 2023 | 285 | 269 | 16 | 94.4% | |
| 2024 | 553 | 436 | 117 | 78.8% | |
| 2025 | 521 | 469 | 52 | 90.0% | |
| No year recorded | 77 | 0 | 77 | 0.0% |
Surviving records against the published collection criteria
FRAP names the acreages agencies submit against, and separately records that some fires are missing for having been "too small for the minimum cutoffs". These are counts of records that are present and sit below each named acreage. A record below a threshold is not an error and is not evidence of one: the criteria quoted are the current ones, earlier eras used different cutoffs that this project has not established, and a fire may be submitted for reasons other than size. The counts are here so that a reader can see how much of each decade sits near the numbers FRAP names.
| Decade | Records | Acreage recorded | Under 10 acres | Under 50 acres | Under 300 acres |
|---|---|---|---|---|---|
| 1870s | 1 | 1 | 0 | 0 | 0 |
| 1890s | 7 | 7 | 0 | 0 | 0 |
| 1900s | 70 | 70 | 2 | 13 | 39 |
| 1910s | 1,324 | 1,324 | 73 | 236 | 774 |
| 1920s | 1,479 | 1,479 | 81 | 233 | 748 |
| 1930s | 1,157 | 1,157 | 108 | 270 | 694 |
| 1940s | 1,155 | 1,155 | 70 | 226 | 564 |
| 1950s | 1,819 | 1,819 | 122 | 320 | 737 |
| 1960s | 1,276 | 1,276 | 99 | 316 | 627 |
| 1970s | 1,879 | 1,879 | 270 | 622 | 1,138 |
| 1980s | 2,206 | 2,206 | 184 | 568 | 1,291 |
| 1990s | 1,992 | 1,992 | 179 | 571 | 1,170 |
| 2000s | 2,905 | 2,905 | 265 | 1,139 | 2,018 |
| 2010s | 3,429 | 3,429 | 843 | 1,929 | 2,734 |
| 2020s | 2,558 | 2,558 | 705 | 1,598 | 2,112 |
| No year recorded | 77 | 77 | 0 | 7 | 43 |
Records sharing an identifier
FRAP states that known errors "include duplicate fires". These are counts of records that share an identifier or an identifying combination. They are candidates and nothing more. Deciding that two records describe one fire is a judgment about geometry and history, and this project downloads no geometry and makes no such judgment. Each row keys only the records carrying every part of that key, so a low count is never produced by missing values quietly padding the total.
The year, unit and incident-number row depends on one judgment call
worth stating plainly. The all-zeros local incident number is counted as a placeholder
rather than as a number, so records carrying it are not keyed. Reading it as a number
instead would key 22,361 records and
report 12,230 of them as sharing
a key, nearly all of that produced by unrelated fires in one unit and one year sharing a
value that stands in for no number. That counterfactual is counted rather than asserted:
it is in the JSON artifact beside this page under
marker_counterfactuals. Nothing FRAP publishes documents the all-zeros
value, so the call is an inference from the file, and docs/MARKERS.md sets
out the evidence behind it.
| Key | Records carrying the whole key | Distinct keys | Keys used more than once | Records sharing a key |
|---|---|---|---|---|
| irwin_id Records sharing one IRWIN ID. IRWIN is the federal incident identifier, so a repeat means two perimeter records point at one federal incident. | 3,633 | 3,618 | 8 | 23 |
| year_unit_incident_number Records sharing a fire year, reporting unit and local incident number. Local incident numbers repeat between units by design, so the unit is part of the key; without it this count would be inflated by unrelated fires. | 9,901 | 9,644 | 119 | 376 |
| year_name_acres Records sharing a fire year, fire name and GIS acreage rounded to the nearest acre. | 16,596 | 16,561 | 31 | 66 |
Methodology and the caveats this page operationalizes
Every measurement on this page exists because the dataset's own documentation says the limitation is there. The quotes below are California Department of Forestry and Fire Protection's words, taken from the dataset description on the retrieval date, beside what this project counted in response.
Completeness
Although the dataset represents the most complete digital record of fire perimeters in California, it is still incomplete, and users should be cautious when drawing conclusions based on the data.
Counted as: Records per fire year, published as counts of what is present, with no year interpolated and no year invented for a record that carries none.
Missing perimeters
This data should be used carefully for statistical analysis and reporting due to missing perimeters (see Use Limitation in metadata). Some fires are missing because historical records were lost or damaged, were too small for the minimum cutoffs, had inadequate documentation or have not yet been incorporated into the database.
Counted as: Records per decade counted against each acreage named in the published collection criteria, so a reader can see how much of each decade sits near the cutoffs.
Collection criteria
CAL FIRE (including contract counties) submit perimeters ≥10 acres in timber, ≥50 acres in brush, or ≥300 acres in grass, and/or ≥3 impacted residential or commercial structures, and/or caused ≥1 fatality. All cooperating agencies submit perimeters ≥10 acres.
Counted as: The 10, 50 and 300 acre thresholds are the ones counted against, and they are labelled as the current criteria rather than applied backwards to eras whose cutoffs this project has not established.
Duplicates and generalization
Other errors with the fire perimeter database include duplicate fires and over-generalization. Additionally, over-generalization, particularly with large old fires, may show unburned “islands” within the final perimeter as burned.
Counted as: Counts of records sharing an identifier or an identifying combination, published as candidates. Over-generalization is a property of the polygons, which this project does not download and does not assess.
IRWIN linkage
A new field, Global ID, was added to provide a unique ID to track all fire records in this dataset including those pre-dating IRWIN IDs.
Counted as: IRWIN ID coverage per year, which shows where the federal identifier begins to appear and how much of each recent year carries one.
Null to Unknown
A count of 12,097 fires' collection methods were edited from Null values to Unknown.
Counted as: Collection method counted in three states rather than two, so the cells this edit moved are visible as recorded unknowns instead of disappearing into an apparently complete field.
Provenance
Attributes were read without geometry, so nothing on this page describes the shape, extent or accuracy of any polygon. Over-generalization, which FRAP lists among the known issues, is a property of the geometry and is therefore outside what this page measures.