The ZIP Code Resources Page

Tools and Resources Related to U.S. ZIP Codes

Important Note:
This is version 1 of this page. There is now a Version 2 that deals with the latest ZIP related tools and resources. Unless you have a specific interest in vintage 1990 ZIP geography it is strongly recommended that you refer to this later version.



This page describes a series of tools for helping users deal with 5-digit U.S. postal ZIP code areas. We have focused primarily on tools for linking ZIP codes to other geographies (such as counties, cities, metro areas) and to demographic information from the 1990 decennial census. Most of these resources have been publicized elsewhere but this page is an attempt to consolidate everything in a single place.


General Information     |     ZCTAs     |     Geographic Reference Tools     |     Demographic Profiles     |     Links to Other Pages


General Information About ZIP Codes

Problems With Spatial Definition

ZIP codes are a very messy kind of geography. They were created by the U.S. Postal Service as a tool to help deliver the mail more efficiently. ("ZIP" is actually an acronym for "Zone Improvement Plan", a reference to the 2-digit postal zones that were used by the post office prior to implementing nationwide ZIP codes back in the early 1960's. Because it is an acronym we always use the uppercase for it.) ZIP codes have been adopted by marketing people and by all kinds of other researchers as a standard geographic area, like a city or a county. We see maps of ZIP codes in telephone books and from commercial vendors that make us think of them as spatially defined areas with precise boundaries, similar to counties. But, from the perspective of the post office, ZIP codes are not and never have been such spatial entities. They are simply categories for grouping mailing addresses. As such, ZIP codes do in most cases resemble spatial areas since they are comprised of spatially clustered street ranges. But not always. In rural areas, ZIP codes can be collections of lines (rural delivery routes) that in reality do no look much like a closed spatial area. In areas where there is no mail delivery (deserts, mountains, lakes, most of Nevada) ZIP codes are really not defined. You may see maps that show ZIP code boundaries that include such areas, but these are not post-office-defined official definitions. They will not be assigned a code until there is a reason for it, i.e. until there needs to be mail delivered there. What this means is that the actual defintion of a ZIP code "boundary" is quite fuzzy at best, and a purely extrapolated guess (at what it would be if someone were to start receiving mail there) at worst. If you have an application that requires extreme geographic precision then you need to avoid using ZIP codes.

The Time Dimension: Current Versus 1991 ZIP Codes

An important thing to keep in mind about ZIP codes is that they change over time. In some cases these changes can be quite dramatic, but more commonly they are small and subtle. When a ZIP codes changes its definition it does not change its name like a census tract. The ZIP code that was called '63301' in St. Charles county, Mo in 1985 has since been broken into first two and now three ZIP codes. These new codes were not called 63301.01, 63301.02 and 63301.03; they were called 63301, 63303 and 63304. So what is referred to as 63301 today represents about a third of the area that it referred to in 1985. The new code 63303 did not exist 12 years ago and it has already changed its definition so that it now represents about half of the area it included when it was intitially created. What this means, of course, is that ZIP codes are really terrible units for doing any kind of time-series analysis unless you have some way of keeping track of all the changes over time. Otherwise, you may wind up concluding that there has been a dramatic downward trend in the population of 63301 since 1980, when in fact just the opposite is true.

What the world really needs to deal with ZIP code geography properly is a large geographic equivalency file relating ZIP codes to other relevant geographies with a time dimension. Instead, what we have is such an equivalency file that relates ZIP codes to geographic entities primarily used for taking the 1990 census. This file uses ZIP codes as they were defined around July of 1991. (Because it takes a long time to do the research, it may be that the currency of the ZIP codes used varied somewhat from area to area.) What we are referring to here is the MABLE database and the corresponding Geocorr web application which we'll be talking about in more detail below. For now, what we want to emphasize is that when we talk about ZIP codes we really need to keep a time reference in mind. Just as when you work with census tracts you need to know whether you mean 1980 or 1990 tracts, or when you are talking about the countries of Europe -- time is an important dimension.

You might think that what we should always assume is that if we do not specify a time, then we are probably referring to the most current definitions of ZIP codes, and that any reference materials should be periodically updated to reflect these definitions. Easier said than done, of course. This would be a huge task. But even if you could maintain all your lists with the latest definitions in some cases there are reasons why it may be preferable not to. This has to do with the fact that the Census Bureau tabulated the results of the 1990 census to produce a file called "Summary Tape File 3B" (aka "STF3B"). The data tables on that file describe the characteristics of the residential ZIP codes as they were (more or less) defined at the time the special tabulations were prepared (circa July, 1991.) "More or less"? Yes - for the purposes of creating these tabulations the Bureau had private vendors provide them with files that related each of the 1990 census blocks (the smallest geographic unit identified for each 1990 census return) with the current ZIP code definitions ("current" as of that point in time, of course.) The files created by these vendors were used to create a data product called the "ZIP Block Equivalency Files" or "STF3B Headers Files". They define which geographic areas were used to approximate the ZIP code areas being summarized by the STF3B data tables. There is a builtin "fuzz factor" in this equivalency list since - while the Census Bureau has created census blocks so that they do not cross any other census-defined geographic unit - blocks can and do (frequently) cross ZIP codes. Typically, ZIP code "boundaries" fall along back lot lines - they almost never split down the middle of a street. If they did, you would need to have two postal carriers - one from each of the two ZIP codes, travel the same street and deliver just to their side. Census blocks, however, almost always split down the middle of streets. As a result, blocks near the boundaries of ZIP codes typically split ZIP codes, with one side of the street in one ZIP and the other side in a diferrent ZIP. Yet, in the block to ZIP equivalency file prepared by the vendors each block was assigned to one and only one census block.
These ZIP Equivalency Files were the basis of the Master Area Block Level Equivalency ("MABLE") file used in the
MABLE/Geocorr web application.

Most of the various files that we reference from this page will be dealing with ZIP codes as they were defined for the purposes of tabulating the 1990 census ZIP code summaries. In other words, the "default time" for ZIP codes for the sake of this document is approximately July of 1991.

Failure to Conform to Other Geographic Schemes

Another important and exasperating characteristic of ZIP codes is that they do not conform to any other geographic schemes. Most geographic units are part of some hierarchal system, and frequently they will recognize other boundaries such as counties or states. But ZIP codes follow no rules whatsoever with respect to other geographies. ZIP codes can and do cross state lines (rarely, but enough to cause problems and confusion), county lines (about 10% of ZIPs are in more than one county), political jurisdictions (cities, congressional districts), metro areas, etc.

This aspect of ZIPs and several other useful bits of information about them are discussed in the MAGGOT (Master Area Geographic Glossary of Terms) file provided with MABLE/Geocorr.


ZCTAs

ZCTA's (ZIP Census Tabulation Areas) are what the U.S. Census Bureau is now (as of 2000) using as an alternative to ZIP codes as geographic entities for publishing data based on actual ZIP codes. A 5-digit ZCTA (there are 3-digit ZCTAs as well) is typically nearly identical to a 5-digit U.S.P.S. ZIP code, but there are important distinctions. The Census Bureau has created a web site where they explain the differences (among other things.) Note that ZCTA's are new for 2000; there are no historical ZCTA's for doing any time-series analysis. The Bureau is publishing results of the 2000 Census aggregated to these geographic units, starting with Summary File 1. Unlike the ZIP codes used for tabulating earlier censuses, these ZCTA areas are spatially complete and you can easily do mapping with them. There is a special file type in the latest TIGER series that can be used to create ZCTA boundary files. The Bureau created special XX ZCTA's (ZCTA's with a valid 3-digit ZIP but with "XX" as last 2 characters of the code) which represent large unpopulated areas where it made no sense to assign a census block to an actual ZIP code. Similarly, HH ZCTA's represent large bodies of water within a 3-digit ZIP area. There is typically no population in either an XX or HH ZCTA.

Relating ZCTAs to Counties

One of the most frequently asked questions regarding ZIP codes (ZCTAs) is "If I know the ZIP code of my {customer/survey respondent/perpetrator} how can I tell what state and county they live in?" For these kinds of questions, we build thing called "equivalency files" or "corrlation lists" that show the relationship between 2 sets of geographic codes. Using the geographic header data provided on the block-level records on the 2000 Census Summary File 1 series, we were able to build such an equivalency file that relate all combinations of state-5-digit ZCTA to counties in the U.S. (50 states + DC). We stored the result in a SAS data set in our data archive, which can be rather easily accessed using the Uexplore/xtract web interface. This interface lets you generate csv, dbf or simple listing files (no knowledge or or access to SAS software is required.) The URL for going directly to the xtract function with the ZCTA-county equivalency file selected is http://mcdc2.missouri.edu/cgi-bin/callapp.pl?dir=/pub/data/corrlst&dset=us_stzcta5_county&form=xtract.html. . (I know it looks hairy - but the system is designed so that you should never have to see this URL, much less have to type it.)

From here, just select the output format(s) of interest and click "continue". On the next page, the "Filter Specifications..." form, you can tell the application which observations (rows) you are interested in. To get all of them just click on the "here" button at the top that will take you straight to the next page. Some common filters that you might want to apply are:

After entering your filtering specs, click on Continue at the bottom of the page. This takes you to the variable selection page, which is a lot simpler. Just choose the variables you want to keep on your extract. A typical output record (row) would contain the following variables:

Note that if you are using microsoft's IE browser and you have Excel installed on your machine, then when you click on the .csv file on the output menu, it will automatically load the file into Excel, with the variable names stored in the first row. (You can also make this happen with Netscape or other browsers but it is not automatic - you have to configure it.)

Geographic Header Files with ZCTAs

The Missouri Census Data Center has created a directory on their public census data server which has a complete set of geographic header data as distributed with the Summary File 1 data from the 2000 census. These header records have information about the geographic entities summarized on the SF1 data files. There are a great many such entities, and they range from state and county level records all the way down to 2000 census blocks. There are over 9 million of the latter entities nationwide. There are two reasons that people interested in ZIP/ZCTA geography may be interested in this collection.
  1. There are records (observations) on these data sets that contain data specifically related to the ZCTA-within-state and ZCTA-within-county summary levels (SumLev codes 871 and 881, resp.) These observations contain the 2000 population and housing unit counts from the census as well as the land area, an internal point latitude, longitude coordinates,etc.
  2. At the census block level (SumLev=101) all the other geocodes are reported (such as census tract, place, county subdivision, etc.) along with the ZCTA code. (Actually there are two fields/variables called ZCTA on these files/data sets: ZCTA3 and ZCTA5 -- when we reference ZCTA here we are referring to the full 5-digit version; 3-digit ZCTA's are just 3-digit ZIP code areas.)
While there is not yet an update MABLE/Geocorr application that accesses such data and builds geographic correlation files for you, the raw data needed to so on your own is contained in these files. You need to be able to access the block level headers files using the MCDC's uexplore/xtract software and then you will have to be able to take the extracts you get and postprocess them to get what you want.

For example, say you are interested in examining the correspondence between ZCTA codes and census tracts for the state of Oklahoma. You would need to access the data in the special SF1 geographic headers directory. The URL for doing this is:
http://mcdc2.missouri.edu/cgi-bin/uexplore?/pub/data/sf12000/xxgeos .
From the menu of available data sets in this directory you select the one for the block level headers for the state of interest. This would be okblks.sas7bdat -- "ok" is the state, "blks" says it is the block-level data (you would select "geos" if you wanted data for any other summary level), and the ".sas7bdat" is just the suffix indicating a SAS Version 7 data set. The URL for going straight to selecting this data set is
http://mcdc2.missouri.edu/cgi-bin/sasapps.pl?dir=/pub/data/sf12000/xxgeos&dset=okblks&form=sasapps.html .
From the page presented take the default application (Data Set Extraction) by just clicking on the "Submit Request" button. On the next page you get to select your output file format(s). The default of comma-delimited only is probably what most users will want. Click on the "Continue" button to go to the Filter Specifications page. This is where you could specify a subset of the data. For example, if you only wanted data for a certain county and you knew the FIPS code for that county you could specify a "filter" by selecting County from the drop-down menu of Variables, "Equal to (=)" from the list of Operators, and entering "40xxx" in the box for Value (where you would not actually type "xxx" but rather the actual FIPS code for the county; "40" is the state portion of the county code for Oklahoma.) If you want the whole state, just skip this page by clicking on the button labeled " Click here to skip this page and go straight to variable selection ".

On the 3rd and final page you get to choose which variables you want. You would definitely need to keep county, tract, ZCTA5 and pop100 variables. You could keep many others, but these would be the ones essential to getting a handle on how census tracts correspond to ZCTA's. Here is an example of what an output CSV file would look like:

 "County","Tract","Block","ZIP Census Tabulation Area","Pop100","HU100","Total Area Sq Mls"
"40001","9766.00","1000","74964",5,2,0.1 
"40001","9766.00","1001","74964",48,18,0.7 
"40001","9766.00","1002","74964",89,34,1.1 
"40001","9766.00","1003","74964",31,13,0.5 
"40001","9766.00","1004","74964",33,12,0.6 
"40001","9766.00","1005","74964",43,20,1.2 
"40001","9766.00","1006","74964",0,0,0 
"40001","9766.00","1007","74964",9,6,0.9 
"40001","9766.00","1008","74964",22,15,1.4 
"40001","9766.00","1009","74964",62,25,1.2 
"40001","9766.00","1010","74964",85,40,1.3 
"40001","9766.00","1011","74964",69,25,0.4 
"40001","9766.00","1012","74964",10,4,0.3 
"40001","9766.00","1013","74964",5,2,0 
"40001","9766.00","1014","74964",5,1,0.1 
"40001","9766.00","1015","74964",3,1,0 
"40001","9766.00","1016","74964",5,2,0.3 
 .... 

Each record on this file represents a small geographic portion (one 2000 census block) of a ZCTA. The first line, for example, says that 2000 census tract 9766, block 1000 in county 40001 (Adair, OK) is in ZCTA 74964. This area contains 5 persons in 2 housing units and occupies .1 square miles (per the 2000 census.) You'll notice that all the sample records shown are for the same tract/ZCTA combination. In order to determine the realtionship between tracts and ZCTA's you would want to collapse (aggregate) these records to create tract/ZCTA summaries. It might turn out that all of the blocks in 9766 correspond to the single ZCTA 74964, or it might turn out that it interesect with several ZCTA's. If the latter case, you'll be able to see what portion of the tract's population, housing units and land area are within each of the intersecting ZCTA's. This is what we would call a "Tract to ZCTA correlation list".


ZIP Code Geographic Reference Tools

Ready to Read Reference Tables

We have created a series of tables which define the correspondence between 1991 ZIP codes and other commonly used geographic areas. The typical use of such files is in processing files which contain ZIP codes. It is often helpful to be able to place an address into a county or a metropolitan area when all you have to go on is the ZIP code.

These "tables" are ascii files that can be easily browsed and downloaded. But they are also in a special form for use within the SAS(r) software package. SAS has a feature that allows creating table-lookup data entities called SAS formats. If you are a SAS programmer you use these modules to create such lookup tables which will let you use the SAS put function to directly convert ZIP codes to these other geographic codes.

Caution: Some of these files are quite large and could cause problems if you do not have enough memory available.

Dynamically Generated Correspondence Files Using Geocorr

The above section is useful for accessing some of the most commonly-used geographic correspondences between ZIPs and other geographic units. But there are lots of other possibilities. Like relating ZIPs to census tracts, congressional districts, 10-mile radius of the proposed atomic waste dump site, etc. These lists can be generated using the MABLE/Geocorr geographic correspondence engine. It can also be used just to get lists of ZIP codes and 1990 population counts for anywhere in the U.S.

Note: MABLE/Geocorr was developed by SEDAC (Social and Economic Data Access Center) at CIESIN (Consortium for International Earth Sciences Information Network) with the bulk of the programming work done under contract by John Blodgett, then of the University of Missouri St. Louis.

Recent ZIP code names and County/Metro Codes via MSCDC's uexplore/xtract

The Missouri Census Data Center's web-accessible data archive can be "explored" using the uexplore cgi-bin application. Using this directory navigating tool, you can access metadata and then the data itself using the hypercon and xtract applications. One of the files (SAS datasets, actually) on the archive has data about all current US ZIP codes and includes primary FIPS state and county codes, plus lists of place names associated with each ZIP. This is all derived from the U.S. Postal Service's City State file. Not everyone can easily use these extraction tools (it helps of you are comfortable with SQL queries), but if you click here you will be dropped into a uexplore session to view the main zipcit directory. A number of html files can be viewed prior to clicking on the us96.ssd01 file, and then choosing to do an extaction. It will take a little clicking but it will let you create your own custom extract/report in any of 5 formats for any geographic areas you specify. You may want to have your FIPS codes handy if you want to use them to filter your data.

Demographic Profiles of 2000 ZCTA Codes

These profiles are based on Summary File 1, 2000 Census. This is a menu-driven application that allows you to selct any 5-digit ZIP code (aka "ZCTA") in the country and see a basic demographic profile.

Expect a corresponding set of profiles based on SF3 (long form data) by the fall of 2002.

You can also access 2000 census data at the ZCTA level via the Census Bureau's American Fact Finder web application. Not just data, but reference and thematic maps as well. (Select the "Data Sets" option at the top left of the page, and select "Census 2000 Summary File 1" as the data set (until Summary File 3 becomes avaialable). Then you should be able to choose your geography, including 5-digit ZCTAs.)

Demographic Profiles of 1991 ZIP Codes

This application lets you enter a ZIP code and get a brief demographic summary of that area as derived (by the Missouri Census Data Center) from the above-mentioned 1990 STF3B tabulations. (Enter the codes in the boxes and click on "Submit Request").
Note: If the ZIP code did not exist in 1991 then there will not be a profile for it. If it existed then but has changed its definition since, the profile is for the old (1991) definition.

State postal abbreviation (not required)     5-digit ZIP code (include leading zeroes)

Note:   There is also a web application that lets you do this (generate ZIP profiles) with a menu-driven interface (not just to ZIP codes but to most other popular geographic levels as well.)

The Missouri Census Data Center maintains a complete collection of census data for all U.S. ZIP codes for 1980 and 1990 (and for 2000 as they become available). We can provide custom programming services related to these data.


Links to Other ZIP-related Resources


This page maintained by:
John Blodgett     blodgettj@umsystem.edu
Office of Social and Economic Data Analysis (OSEDA)
(Formerly with the Urban Information Center, U of Missouri St. Louis)
626 Clark Hall   / University of Missouri   / Columbia, MO 65211

John Blodgett's Home Page   |   Missouri Census Data Center   |   OSEDA


URL: http://oseda.missouri.edu/jgb/ZIP.resources.html