County demographics / DOCUMENTED CSV

2020–2024 ACS County Demographic Profile

Add population, income, education and housing context to county-coded records, with published margins of error and clear source definitions.

2020–2024 ACS five-year estimates · 2024 county geography

3,222counties and equivalents
60main-table fields
13demographic measures
41,886detailed county/measure records

01 / KNOW THE FIT

A useful join starts
with a clear meaning.

What you can do with it

Enrich service-area or market-research records with county demographics. Compare published estimates with their uncertainty, or prepare a county dashboard using one documented table.

What one row means

One county or equivalent in the main CSV, with 13 measures. Each measure has an estimate, 90% margin of error and separate status fields. The detailed CSV has one county/measure record with its universe, source variable IDs, raw values and annotations.

Unique key
county_fips

How to join it

Join county_fips as five-character text. Your records must use compatible county boundaries. This release uses Connecticut’s nine planning regions; our 2020 ZCTA crosswalk uses the former counties and cannot directly provide those region identifiers.

Python guide: add county demographics to a service-area list →

Coverage, with the edges visible

3,222 counties and equivalents across the 50 states, DC and Puerto Rico; 41,886 detailed county/measure records. There are 13 unavailable estimates, kept as blanks with explicit statuses. Controlled estimates can lack a numeric margin of error; those cases remain distinct from an unavailable estimate.

Keep in mind

  • These estimates describe the 2020–2024 period. They are not a 2024 point-in-time population count or a 2026 demographic snapshot.
  • Dollar measures use 2024 inflation-adjusted dollars. A percentage’s margin of error is in percentage points. Missing and controlled margins of error are not numeric zeros.
  • County medians cannot be summed or averaged to obtain a regional median. County context does not establish the characteristics of an individual customer.
  • The ACS unemployment measure is survey-based; it is not the BLS monthly unemployment rate. Geography and overlapping survey periods need review before historical comparisons.
WHAT MAKES IT ACTUALLY CLEAN

We combine reviewed Census profile tables, select the Puerto Rico social table where required, preserve identifiers and published uncertainty, and keep special source values out of numeric columns. Saved source responses, extraction and preparation recipes let us reprocess this edition independently of a future Census update. How we prepare and version our data →

02 / TRY THE SHAPE

Real rows. Before you buy.

These are the first three rows from the delivered CSV, showing 5 of 60 fields. The free download contains the first five rows and all 60 fields; it is a format sample, not a coverage test.

2020–2024 ACS County Demographic Profile · first three rows
county_fipscounty_namepopulationmedian_household_incomemedian_household_income_moe_90
01001Autauga County, Alabama59947724815640
01003Baldwin County, Alabama246989787752602
01005Barbour County, Alabama24643460425089

03 / NO GUESSING

Main table fields, explained.

The main table’s field dictionary from the current download. CSV has no built-in types; these are the intended import types.

All 60 fields in CSV order
FieldTypeMeaning
county_fipstextFive-character county/equivalent FIPS; import as text
county_nametextSource county/equivalent name including state or Puerto Rico
state_fipstextTwo-character state/territory FIPS; import as text
state_nametextState or Puerto Rico label from the source NAME field
geo_idtextSource Census summary-level-050 geographic identifier
period_starttextFirst year of the five-year estimation period
period_endtextLast year of the five-year estimation period
geography_vintagetextGeography used by this ACS release, including Connecticut planning regions
populationdecimal or blankPopulation; people; universe: Total population. Published DP05_0001E; blank unless status is reported.
population_moe_90decimal or blank90% margin of error for population; people. Published DP05_0001M. Blank does not mean zero; read the MOE status.
population_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
population_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_agedecimal or blankMedian age; years; universe: Total population. Published DP05_0018E; blank unless status is reported.
median_age_moe_90decimal or blank90% margin of error for median_age; years. Published DP05_0018M. Blank does not mean zero; read the MOE status.
median_age_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_age_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
under_18_pctdecimal or blankPopulation under 18; percent; universe: Total population. Published DP05_0019PE; blank unless status is reported.
under_18_pct_moe_90decimal or blank90% margin of error for under_18_pct; percentage points. Published DP05_0019PM. Blank does not mean zero; read the MOE status.
under_18_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
under_18_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
age_65_plus_pctdecimal or blankPopulation age 65 and over; percent; universe: Total population. Published DP05_0024PE; blank unless status is reported.
age_65_plus_pct_moe_90decimal or blank90% margin of error for age_65_plus_pct; percentage points. Published DP05_0024PM. Blank does not mean zero; read the MOE status.
age_65_plus_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
age_65_plus_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
householdsdecimal or blankHouseholds; households; universe: Households. Published DP02_0001E (DP02PR equivalent for Puerto Rico); blank unless status is reported.
households_moe_90decimal or blank90% margin of error for households; households. Published DP02_0001M (DP02PR equivalent for Puerto Rico). Blank does not mean zero; read the MOE status.
households_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
households_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_household_incomedecimal or blankMedian household income; 2024 inflation-adjusted dollars; universe: Households. Published DP03_0062E; blank unless status is reported.
median_household_income_moe_90decimal or blank90% margin of error for median_household_income; 2024 inflation-adjusted dollars. Published DP03_0062M. Blank does not mean zero; read the MOE status.
median_household_income_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_household_income_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
poverty_pctdecimal or blankPeople below the poverty level; percent; universe: Population for whom poverty status is determined. Published DP03_0128PE; blank unless status is reported.
poverty_pct_moe_90decimal or blank90% margin of error for poverty_pct; percentage points. Published DP03_0128PM. Blank does not mean zero; read the MOE status.
poverty_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
poverty_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
unemployment_pctdecimal or blankUnemployment rate; percent; universe: Civilian labor force age 16 and over. Published DP03_0009PE; blank unless status is reported.
unemployment_pct_moe_90decimal or blank90% margin of error for unemployment_pct; percentage points. Published DP03_0009PM. Blank does not mean zero; read the MOE status.
unemployment_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
unemployment_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
bachelors_or_higher_pctdecimal or blankBachelor’s degree or higher; percent; universe: Population age 25 and over. Published DP02_0068PE (DP02PR equivalent for Puerto Rico); blank unless status is reported.
bachelors_or_higher_pct_moe_90decimal or blank90% margin of error for bachelors_or_higher_pct; percentage points. Published DP02_0068PM (DP02PR equivalent for Puerto Rico). Blank does not mean zero; read the MOE status.
bachelors_or_higher_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
bachelors_or_higher_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
housing_unitsdecimal or blankHousing units; housing units; universe: Housing units. Published DP04_0001E; blank unless status is reported.
housing_units_moe_90decimal or blank90% margin of error for housing_units; housing units. Published DP04_0001M. Blank does not mean zero; read the MOE status.
housing_units_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
housing_units_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
owner_occupied_pctdecimal or blankOwner-occupied housing; percent; universe: Occupied housing units. Published DP04_0046PE; blank unless status is reported.
owner_occupied_pct_moe_90decimal or blank90% margin of error for owner_occupied_pct; percentage points. Published DP04_0046PM. Blank does not mean zero; read the MOE status.
owner_occupied_pct_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
owner_occupied_pct_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_gross_rentdecimal or blankMedian monthly gross rent; 2024 inflation-adjusted dollars per month; universe: Renter-occupied housing units paying cash rent. Published DP04_0134E; blank unless status is reported.
median_gross_rent_moe_90decimal or blank90% margin of error for median_gross_rent; 2024 inflation-adjusted dollars per month. Published DP04_0134M. Blank does not mean zero; read the MOE status.
median_gross_rent_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_gross_rent_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_home_valuedecimal or blankMedian home value; 2024 inflation-adjusted dollars; universe: Owner-occupied housing units. Published DP04_0089E; blank unless status is reported.
median_home_value_moe_90decimal or blank90% margin of error for median_home_value; 2024 inflation-adjusted dollars. Published DP04_0089M. Blank does not mean zero; read the MOE status.
median_home_value_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.
median_home_value_moe_statustextSource value status: reported, missing, unavailable_estimate, insufficient_sample_moe, open_interval_moe, controlled_moe, insufficient_sample, not_applicable, annotated_value. See README and raw cells in county_measures.csv.

04 / INSIDE THE DOWNLOAD

Data, with its context.

One ZIP · 803 KB · 15 files. No account or subscription required.

05 / DATES THAT MEAN SOMETHING

Sources, versions & changes.

Source versions identify the inputs. Our processing revision describes how we prepare them. Either kind of change creates a new ACD release; the package date records when it was built.

Current source versions

Survey period
2020–2024 ACS five-year estimates
County boundaries
2024 geography, including Connecticut planning regions
Census release date
2026-01-29
ACD preparation revision
1 · initial paid release
Package prepared (UTC)

Source: U.S. Census Bureau, American Community Survey and Puerto Rico Community Survey. Independent preparation by Actually Clean Data; no Census endorsement.

RELEASE HISTORY

Oct 16, 2026 · current package (UTC)

Initial paid release: 13 measures in wide and detailed tables, source annotations, field dictionaries, quality checks and a working Python example. This is an ACD product release using the Census edition released January 29, 2026.

The earlier free research prototype contained four measures from the same survey period. All 25,776 raw estimate/MOE cells shared with that prototype agree. The expanded product adds measures and preparation features; it does not claim a new Census release.

Read the initial release record

Processing corrections and improvements for your purchased source edition are free. Genuinely new source editions may be sold separately. See the update policy and access instructions.

Check the downloaded CSV’s integrity

The metadata file inside the ZIP records this SHA-256 checksum for county_profile.csv. A matching checksum confirms identical CSV bytes.

56200b7401e10c6c07d1674b324086c3c11a1717c8c695662ced6f0e8c118fbb

READY TO PUT IT TO WORK?

2020–2024 ACS County Demographic Profile

$19 USD · one time · 3,222 counties and equivalents

Get the full dataset