Understanding Zip Code Data for Community Planning
Most people look at a zip code and see nothing more than a mailing label. I used to do the same until I started pulling ACS five-year estimates for my own neighborhood mapping projects and realized the data was sitting there, mostly unused, sitting inside every census block in places like zip 23230.Here is the practical breakdown of how to actually use zip code-level demographic and economic data to understand community development trends, using Richmond, Virginia (23230) as a working example. The Census Bureau's American Community Survey provides the most reliable publicly available dataset at the zip code tabulation area (ZCTA) level. You can access it through data.census.gov or download raw tables directly from the Census API. The key tables you want are B19013 for median household income, B25077 for median gross rent, B23025 for educational attainment, and B28002 for poverty status. I spent about three weeks trying to overlay multiple ACS variables onto a single map using QGIS because the shapefiles for ZCTAs don't always align cleanly with actual municipal boundaries. What I learned is that 23230 in Richmond has a median household income hovering around $48,000 to $52,000 depending on the ACS release year, a rent burden that pushes most households above the 30% affordability threshold, and an educational attainment rate where roughly 42% of adults hold a bachelor's degree or higher. That combination tells a specific story about where investment flows and where it stalls.
Here is the step-by-step method I use when researching any zip code for development potential:
Step 1: Pull the Baseline Demographics
Go to data.census.gov and search for your target ZCTA. Enter the five-digit zip code in the place field. Apply the American Community Survey filters and select the most recent five-year estimate. Download the CSV for the variables I listed above. Do this before you look at any other data because the income and poverty figures anchor everything else. Download the same tables for the prior two ACS release cycles. The five-year estimates get published every year, so you should have at least three data points for each variable. I build a simple spreadsheet that tracks year-over-year change in median income, change in rent levels, and change in the college-educated population percentage. A rising median income alongside rising rent is not automatically a positive signal. It usually means displacement pressure is building and long-term residents are getting priced out of the area they have lived in for decades. Richmond's Planning Commission publishes comprehensive plan updates and zoning maps. When I pulled the 23230 data and cross-referenced it with the city's zoning records, I found that large parcels along the corridor near the Interstate 295 interchange were zoned for industrial use but had been gradually rezoned toward mixed-use over a three-year period. That rezoning activity aligned almost exactly with the rent increase trajectory in the ACS data. This is the kind of correlation that matters more than any single income figure.
Get the Full Details

The US Census data tells you what is happening with residents. It does not tell you what businesses are moving in. I pull permit and license data from the city clerk's office and from state business registration databases. In my project for 23230, I found that the number of new retail and food service permits issued annually increased by approximately 18% between 2019 and 2023, while residential building permits in the same window stayed relatively flat. This pattern suggests demand-side growth in commercial services without a matching supply response in housing. I combine the variables into a single scoring system that weights rent burden at 30%, median income growth at 25%, commercial permit velocity at 20%, educational attainment at 15%, and vacancy rate at 10%. The result is not a perfect model, but it gives you a quick comparative number you can use across multiple zip codes. A score in the 60 to 75 range for a mid-density urban zip code like 23230 typically indicates active but uneven growth where some blocks are benefiting while others are being squeezed out. There are real limitations to this approach that most guides skip over. The ACS ZCTA boundaries are statistical approximations, not legal boundaries. A zip code can span multiple neighborhoods or be split by a highway or river in ways that blur the data. For 23230 specifically, the eastern edge blends into areas that are significantly different economically from the western core, and the aggregate numbers mask that variation. Block-level data exists, but it requires more processing time and careful attention to margin of error.
Another issue is timing. The five-year ACS estimates lag by about 18 months from the current date. If you are making decisions based on 2023 data in 2025, you are seeing a picture that is already a little stale. For rapidly changing areas, the three-year estimates or the one-year estimates (available for areas with sufficient population) can help, but they come with wider margins of error. If your goal is community development investment rather than research, I would recommend pairing this data analysis with direct engagement. Talk to the neighborhood associations, check the meeting minutes from the city council's district sessions, and visit the actual blocks. The numbers show you where the pressure points are. They do not show you who is organizing, which landlords are selling, or which small businesses are closing. In 23230, I found that two community land trusts had been quietly acquiring properties on the south side while the median income data looked relatively flat. That detail never showed up in any spreadsheet. The practical takeaway is that zip code data is useful but incomplete. Use it to identify patterns, question the assumptions behind those patterns, and then go outside and verify what the numbers are suggesting before you make any decisions about funding, policy, or investment in the area.