ZIP Code Database mapping visualization of the United States of America

Technical Specifications & Data Dictionary

Complete technical documentation for developers, data architects, and technical decision-makers. Every field, every format, fully documented. It's long, but we got jokes and redbull.

Multiple Formats
Field-Level Docs
Sample Data
Integration Guides
Schema Examples
41,558
Active ZIP Codes
94+
Data Fields
4
File Formats
CSV • Excel • SQL • Access
October
Latest Update 2025
Updated monthly on the 1st

Complete Field Reference & Edition Comparison

All 94+ data fields documented with descriptions, data types, examples, and edition availability.

Field Name Description & Example Data Type Standard Deluxe Business
ZIP 5-digit ZIP Code
Example: 12533
VARCHAR(5)
City USPS preferred city name (uppercase)
Example: HOPEWELL JUNCTION
VARCHAR(35)
State 2-character state abbreviation
Example: NY
CHAR(2)
StateFullName Full state name
Example: New York
VARCHAR(50)
County Primary county name (proper case)
Example: Dutchess
Multi-county ZIPs use supplemental file in Business edition
VARCHAR(25)
AreaCode Area code(s) separated by forward slash
Example: 845/914
VARCHAR(20)
Latitude ZIP Code centroid latitude (WGS84 datum)
Example: 41.583325
DECIMAL(10,6)
Longitude ZIP Code centroid longitude (WGS84 datum)
Example: -73.780928
DECIMAL(10,6)

Field Name Description & Example Data Type Standard Deluxe Business
Population Total population from Census 2020
Example: 28945
INT
CurrentPopulation Estimated current population
Example: 29450
Proprietary estimate based on active delivery points. For official counts, use Population field (Census 2020).
INT
Households Number of households
Example: 11234
INT
PersonsPerHousehold Average persons per household
Example: 2.58
DECIMAL(3,2)
MedianIncome Median household income (annual)
Example: 72500
From American Community Survey (ACS)
INT
MedianHouseValue Median home value
Example: 325000
INT
MedianAge Median age of population
Example: 42.5
DECIMAL(4,1)
MedianAgeMale Median age of male population
Example: 41.3
DECIMAL(4,1)
MedianAgeFemale Median age of female population
Example: 43.7
DECIMAL(4,1)
WhitePopulation White alone population count
Example: 22450
INT
BlackPopulation Black or African American alone population count
Example: 3200
INT
HispanicPopulation Hispanic or Latino population count
Example: 2100
INT
AsianPopulation Asian alone population count
Example: 1850
INT
NativeHawaiianPopulation Native Hawaiian and Other Pacific Islander alone population count
Example: 25
INT
AmericanIndianPopulation American Indian and Alaska Native alone population count
Example: 120
INT
OtherRacePopulation Some other race alone population count
Example: 850
INT
MalePopulation Male population count
Example: 14120
INT
FemalePopulation Female population count
Example: 14825
INT

Note on Statistical Areas: MSA/PMSA are legacy OMB definitions (pre-2003). CBSA/CSA are current standards. Most applications should use CBSA data.
Field Name Description & Example Data Type Standard Deluxe Business
MSACode Metropolitan Statistical Area code (legacy)
Example: 5602
VARCHAR(4)
MSAName Metropolitan Statistical Area name (legacy)
Example: New York-Northern New Jersey-Long Island, NY-NJ-CT-PA
VARCHAR(100)
PMSACode Primary Metropolitan Statistical Area code (legacy)
Example: 5380
VARCHAR(4)
PMSAName Primary Metropolitan Statistical Area name (legacy)
Example: Nassau-Suffolk, NY PMSA
VARCHAR(100)
CSACode Combined Statistical Area code (legacy)
Example: 408
VARCHAR(3)
CSAName Combined Statistical Area name (legacy)
Example: New York-Newark, NY-NJ-CT-PA
VARCHAR(100)
CBSACode Core Based Statistical Area code (current standard)
Example: 35620
VARCHAR(5)
CBSAType CBSA classification type
Example: Metro or Micro
VARCHAR(10)
CBSAName Core Based Statistical Area name
Example: New York-Newark-Jersey City, NY-NJ
VARCHAR(100)
CBSADivisionCode Metropolitan Division code (subdivisions of large CBSAs)
Example: 35004
VARCHAR(5)
CBSADivisionName Metropolitan Division name
Example: Nassau County-Suffolk County, NY
VARCHAR(100)
CBSAPopulation Total population of the CBSA
Example: 18897109
INT
CBSADivisionPopulation Total population of the Metropolitan Division
Example: 2832882
INT
Region U.S. Census Bureau region
Example: Northeast
Four regions: Northeast, Midwest, South, West
VARCHAR(20)
Division U.S. Census Bureau division
Example: Middle Atlantic
Nine divisions subdivide the four regions
VARCHAR(25)
CongressionalDistrict Congressional district number (Latest Congress)
Example: 18
VARCHAR(2)
CongressionalLandArea Land area of congressional district in square miles
Example: 182.01
DECIMAL(10,2)

USPS operational data including delivery infrastructure, facility information, and ZIP Code lifecycle dates.

Field Name Description & Example Data Type Standard Deluxe Business
ResidentialMailboxes Number of residential delivery points
Example: 8946
INT
BusinessMailboxes Number of business delivery points
Example: 686
INT
TotalActiveDeliveries Total active delivery points (residential + business)
Example: 11452
INT
BoxCount Number of PO boxes
Example: 1303
INT
SingleFamilyDeliveryUnits Single family delivery unit count
Example: 5662
INT
MultiFamilyDeliveryUnits Multi-family delivery unit count
Example: 814
INT
ZIPIntroDate Date ZIP Code was introduced
Example: <2004-10
Format: YYYY-MM or <YYYY-MM for dates before our records began
VARCHAR(10)
AliasIntroDate Date city alias was introduced
Example: 2012-08
When USPS added alternate city names for this ZIP
VARCHAR(10)
FacilityCode USPS facility type code
Example: P (Post Office), B (Branch), S (Station), U (Unique)
CHAR(1)
CityDeliveryIndicator City delivery service indicator
Example: Y (Yes) or N (No)
CHAR(1)
CarrierRouteSortation Carrier route sortation facility indicator
Example: C (City), R (Rural), H (Highway Contract)
CHAR(1)
FinanceNumber USPS finance number
Example: 353910
VARCHAR(6)
UniqueZIPName Unique ZIP indicator (Y/N blank)
Example: Y
Indicates if this is the only ZIP for this city name
CHAR(1)

Physical location characteristics including elevation, time zones, and geographic area measurements.

Field Name Description & Example Data Type Standard Deluxe Business
Elevation Elevation above sea level in feet
Example: 364
INT
Timezone Time zone offset from UTC
Example: 5 (Eastern = UTC-5), 6 (Central = UTC-6)
Standard time offset, not accounting for DST
INT
DaylightSaving Daylight Saving Time observance
Example: Y (Yes) or N (No)
CHAR(1)
LandArea Land area in square miles
Example: 64.416
DECIMAL(10,3)
WaterArea Water area in square miles
Example: 0.308
DECIMAL(10,3)

Federal government coding systems (FIPS, ANSI, SSA) used for data matching and integration with government datasets.

Field Name Description & Example Data Type Standard Deluxe Business
CountyFIPS 3-digit county FIPS code
Example: 027
Federal Information Processing Standard code for counties
CHAR(3)
StateFIPS 2-digit state FIPS code
Example: 36
CHAR(2)
StateFIPSCode 5-digit combined state+county FIPS code
Example: 36027
Concatenation of StateFIPS + CountyFIPS for easier querying
VARCHAR(5)
CountyANSI County ANSI code
Example: 00809654
American National Standards Institute geographic code
VARCHAR(8)
StateANSI State ANSI code
Example: 01779809
VARCHAR(8)
PlaceFIPS Census place FIPS code
Example: 34045
Identifies incorporated places and Census-designated places
VARCHAR(5)
SSACountyCode Social Security Administration state-county code
Example: 33700
Used by SSA for benefit administration
VARCHAR(5)

Economic activity metrics from the U.S. Census Bureau's County Business Patterns program.

Field Name Description & Example Data Type Standard Deluxe Business
NumberOfBusinesses Total number of business establishments
Example: 1247
From Census Bureau County Business Patterns
INT
NumberOfEmployees Total number of employees
Example: 18450
INT
Q1Payroll First quarter payroll (in thousands)
Example: 145250 ($145,250,000)
INT
AnnualPayroll Annual payroll (in thousands)
Example: 598750 ($598,750,000)
INT
EmploymentFlag Data suppression flag (blank or space)
Example: (blank = data available)
Census suppresses data for privacy when establishment counts are very low
CHAR(1)

Medicare geographic classifications and health insurance rating areas used by CMS and healthcare organizations.

Field Name Description & Example Data Type Standard Deluxe Business
MedicareCBSACode Medicare-specific CBSA code
Example: 35004
Used by CMS (Centers for Medicare & Medicaid Services) for reimbursement rates
VARCHAR(5)
MedicareCBSAName Medicare CBSA name
Example: Nassau County-Suffolk County, NY
VARCHAR(100)
MedicareCBSAType Medicare CBSA classification
Example: Metro or Micro
Affects Medicare payment adjustments
VARCHAR(10)
MarketRatingAreaID Health insurance rating area identifier
Example: 8
Used by insurance companies for ACA marketplace premium calculations
VARCHAR(5)

Ready to Purchase?

Choose the edition that fits your needs

File Format Specifications

Detailed technical specifications for seamless integration with your systems.

CSV (Comma-Separated Values)

Delimiter: , (comma)
Text Qualifier: " (double quote) - used when fields contain commas
Character Encoding: UTF-8 (Unicode)
Line Endings: CRLF (Windows-style: \r\n)
Header Row: Yes - First row contains field names
Supplemental: Business has Files: census-2010-zcta.csv, census-2020-zcta.csv, census-acs-{YYYY}-{YYYY}-zcta.csv, zip-codes-database-DELUXE-BUSINESS.csv, and zip-codes-database-MULTI-COUNTY.csv
BOM: No byte order mark (UTF-8 without BOM)
Null Values: Empty string (no quotes between delimiters)
File Sizes:
Standard: ~17MB | Deluxe: ~35MB | Business: ~53MB

SQL Scripts

Versions Available: MySQL 5.7+ and SQL Server 2008+
Script Structure: 1. DROP TABLE (if exists)
2. CREATE TABLE with schema
3. INSERT INTO statements
Table Name: ZIPCodes (Actual case)
Primary Key: None - Can define in CREATE statement, duplicates exist
Supplemental: Business has Tables: PlaceFIPS, MultiCounty, Census_ACS
Character Set: UTF-8 (utf8mb4 for MySQL)
Batch Size: MySQL: 1000 rows/INSERT | SQL Server: 1000 rows/INSERT
NULL Handling: NULL keyword (not quoted)
File Sizes:
Standard: ~20MB | Deluxe: ~38MB | Business: ~56MB
-- MySQL Example
CREATE TABLE zipcodes (
  ZIP VARCHAR(5) PRIMARY KEY,
  City VARCHAR(35),
  State CHAR(2),
  County VARCHAR(25),
  Latitude DECIMAL(10,6),
  Longitude DECIMAL(10,6),
  -- ... additional fields
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Microsoft Access

Format: .mdb (Access 2007+)
Compatibility: Access 2007, 2010, 2013, 2016, 2019, 365
Table Name: ZipCodeDatabase_{Edition}
Primary Key: None - ZIPCode is Indexed (has Duplicates)
Relationships: None - Single table database
Supplemental: Business has Tables: ZipCodeDatabase_MULTI_COUNTY and ZipCodeDatabase_PLACE_FIPS
Indexes: No Primary Key
Indexes on ZIPCode, State, County
Compression: Yes - Database is compacted
File Sizes:
Standard: ~30MB | Deluxe: ~56MB | Business: ~122MB

Microsoft Excel

Format: .xls (Excel 2007+)
Compatibility: Excel 2007, 2010, 2013, 2016, 2019, 365
Sheet Structure: 2 worksheets: zip-codes-database- and zip-codes-database2-
Header Row: Row 1 - Column headers in text form
Data Starts: Row 2
Total Rows: ~26,000 data rows each (meets old Excel row limit). Recommend CSV version.
Column Widths: You can Auto-size for readability
File Sizes:
Standard: ~17MB | Deluxe: ~35MB | Business: ~53MB

General Technical Notes

Character Encoding

  • All files use UTF-8 encoding to support international characters
  • CSV files: UTF-8 without BOM (byte order mark)
  • SQL scripts: Explicitly declare UTF-8/utf8mb4
  • Excel/Access: Native Unicode support

Field Naming Conventions

  • PascalCase (e.g., MedianIncome, CBSACode)
  • No spaces or special characters
  • Consistent across all formats
  • SQL-safe identifiers (no reserved keywords)

Data Integrity

  • All files contain identical data
  • ZIPCode + Primary is the primary key (Must use this combo)
  • Leading zeros preserved in ZIP codes (e.g., 00501)
  • Some Spreadhseet programs will automatically strip leading zeros

NULL Value Handling

  • CSV: Empty String (no characters between delimiters)
  • SQL: Empty String
  • Excel: Empty cell
  • Access: Empty String

Sample Data Downloads

Evaluate the data quality and format before purchasing. All samples contain real data from our database.

Standard Edition Sample

25 sample records showing core geographic fields including ZIP, city, state, county, coordinates, and more.

Included Fields:
  • ZIP, City, State, County
  • Latitude & Longitude
  • Area Code, Timezone
  • FIPS Codes
  • + more...
No email required • Instant download

Deluxe Edition Sample

25 sample records with demographics, income, statistical areas, and everything in Standard.

Included Fields:
  • All Standard fields
  • Population & Demographics
  • Median Income & Home Value
  • CBSA & Statistical Areas
  • + more...
No email required • Instant download

Business Edition Sample

Most Popular

25 sample records with complete business data, employment stats, Medicare codes, and all 94+ fields.

Included Fields:
  • All Deluxe fields
  • Business & Employment Data
  • USPS Delivery Counts
  • Medicare/Healthcare Codes
  • Land & Water Area
No email required • Instant download

Why Download Samples?

Test integration with your systems, verify data quality, and ensure the format meets your needs - all before purchasing. These are real records from our production database, not mock data.

Integration Guides

Under Construction

Still working on this section. Stay tuned!

Technical FAQ

Real technical questions from real developers in the trenches. We've been doing this since 2003, so we've seen every edge case imaginable. This FAQ covers everything from character encoding to multi-county ZIPs to why the USPS does things that make you scratch your head. Whether you're integrating at 2 PM or 2 AM, this FAQ will save you time and headaches.

We use empty strings ("") rather than NULL values.

Why? Years ago, we worked with small businesses and individuals who understood "empty" but struggled with the null concept. Looking back, we probably should have stuck with NULL, but here we are. The good news: it's consistent across all fields.

Key points:

  • Empty strings appear in fields where data is not applicable or cannot be determined with reasonable certainty.
  • Unknown coordinates (Latitude/Longitude) are set to 0 rather than left empty.
  • The ZIP field is the only exception - it's never empty (it's the primary key).
  • When querying, check for empty strings: if (field === '' || field === null).

Developer tip: Military ZIPs (APO/FPO/DPO), PO Box ZIPs, and Unique ZIPs often have empty values for geographic fields like County, Coordinates, and Time Zone since they don't represent traditional delivery areas.

All files use UTF-8 encoding to support international characters and special symbols.

Platform-specific recommendations:

  • MySQL: Use utf8mb4 character set and collation.
  • PostgreSQL: Set ENCODING 'UTF8' when creating database.
  • SQL Server: Use NVARCHAR data types for Unicode support.
  • CSV files: UTF-8 without BOM (byte order mark).

Using UTF-8 ensures proper handling of place names with diacritics (e.g., San José, Montréal) and special characters in city alias names.

See our File Format Specifications section for detailed encoding information by format.

Approximately 23% of ZIP Codes cross county boundaries. The main database shows the primary county - the one that receives the largest volume of mail.

Business Edition includes a Multi-County supplemental file with over 22,000 records detailing all county associations for ZIPs that cross boundaries.

Supplemental file structure:

ZipCode | StateFIPS | State | CountyFIPS | County

Implementation strategies:

  • Most applications: Use the primary county from the main database - it's sufficient for general purposes.
  • County-level analytics: Import the supplemental file as a separate table and JOIN on ZIP when you need all county associations.
  • Compliance/reporting: Use supplemental file when regulations require complete county coverage.
Important: You cannot accurately compare ZIP Code data aggregated to county level with official county statistics because the boundaries don't align. This is a known limitation of using ZIP Codes for geographic analysis.

Coordinate system: WGS84 (World Geodetic System 1984) datum

Precision: 6 decimal places (DECIMAL(10,6))

What the coordinates represent:

  • Standard ZIPs: Geographic centroid of the ZIP Code's delivery area.
  • PO Box ZIPs: Location of the Post Office building (when known).
  • New ZIPs: May take 60-90 days to receive coordinates as the area becomes established.
  • Military ZIPs: Typically set to 0, 0 since they represent overseas locations.

Coordinate accuracy:

We only assign coordinates when we can determine them with reasonable certainty. If coordinates cannot be reliably determined, we set them to 0, 0 rather than guess. This maintains data integrity - a core principle at ZIP-Codes.com.

For GIS applications: WGS84 is compatible with Google Maps, Leaflet, Mapbox, and most modern mapping libraries. For spatial database queries, create a spatial index on the Latitude/Longitude columns for optimal performance.

Essential indexes:

  • Primary Key: ZIP field + Primary (always index both when you want distinct values only).
  • Most common queries: State, County, City.
  • Business Edition: Add indexes on CBSACode, MSACode if querying statistical areas.
  • Geospatial queries: Create spatial index on Latitude/Longitude for proximity searches.

Sample index creation (MySQL):

CREATE INDEX idx_zipcode ON zipcodes(ZipCode);
        CREATE INDEX idx_state ON zipcodes(State);
        CREATE INDEX idx_county ON zipcodes(County);
        CREATE INDEX idx_city ON zipcodes(City);
        -- For composite queries (ZipCode + Primary Record)
        CREATE INDEX idx_zip_primary ON zipcodes(ZipCode, Primary);
        -- For composite queries (State + City lookups)
        CREATE INDEX idx_state_city ON zipcodes(State, City);
        -- For geospatial (if your DB supports it)
        CREATE SPATIAL INDEX idx_coords ON zipcodes(Latitude, Longitude);

Index strategy tips:

  • Don't over-index - each index adds overhead to INSERT/UPDATE operations.
  • Analyze your actual query patterns and index accordingly.
  • Composite indexes (multi-column) work left-to-right: (State, City) helps State-only queries, but not City-only.

See our Integration Guides section for complete indexing examples by database platform.

With proper indexing, ZIP Code lookups are fast.

Performance benchmarks:

  • Single ZIP lookup: Under 10ms on properly indexed tables, even under production load
  • State-level queries: Sub-150ms for queries returning hundreds of results
  • Full table scans: Minimal concern with only ~42,000 records
  • Optimal hardware: Modern SSD storage recommended, but HDDs work fine for most use cases

Real-world example:

Our production SQL Server handles all website traffic with query times averaging under 100ms - without special performance tuning. A properly indexed table with adequate hardware can achieve significantly faster lookups.

Performance tips:

  • Index your most common query fields (State, County, City).
  • Use the ZIP field for lookups whenever possible (primary key = fastest).
  • For high-traffic applications, consider caching frequently accessed ZIPs in memory.
  • The dataset is small enough (~42K records) that entire tables can fit in database cache.

The database size itself is modest (17-55MB depending on edition), so performance bottlenecks typically come from network latency or unindexed queries, not the data volume.

Short answer: It's no longer valid.

We get this question often, and it's always investigated. The ZIP Code used to be valid but is no longer in service. The USPS revises ZIP Codes regularly to match current delivery needs. ZIP-Codes.com is a licensed USPS distributor and only publishes currently active ZIP Codes.

Common scenarios:

  • The ZIP was discontinued months or years ago.
  • A customer has old records that predate a ZIP Code change.
  • Another website lists it because they use outdated or unverified data.
  • It was a temporary or test ZIP Code that's been retired.

Verify it yourself:

Use the official USPS ZIP Code Lookup tool at https://tools.usps.com/zip-code-lookup.htm. If the USPS reports it as invalid and you believe this is an error, contact us and we'll research it immediately.

Data quality matters:

Other websites and free datasets don't adhere to the same data quality standards we do. Many use Census ZCTA data or simply never remove discontinued ZIPs. We update monthly with verified USPS data to ensure you're always working with accurate, current information.

We use real USPS ZIP Codes, not Census approximations.

ZIP Code Tabulation Areas (ZCTAs) are generalized area representations created by the U.S. Census Bureau. They only update every 10 years with each decennial census, which means they diverge from actual ZIP Code boundaries over time.

Many providers use Census ZCTA data and market it as "ZIP Codes." ZIP-Codes.com licenses true ZIP Code data directly from the USPS and updates it monthly as changes occur. When your business depends on accurate data, "close enough" isn't good enough.

Why this matters:

  • ZCTAs are static for 10 years; real ZIP Codes change monthly.
  • ZCTA boundaries don't match actual USPS delivery routes.
  • Using ZCTAs for business decisions leads to inaccurate targeting and analysis.

The exception:

Some demographic fields (like Census population data) are only available at the ZCTA level - we clearly label these fields. To counter this limitation, we provide our own CurrentPopulation estimate calculated from active delivery points.

Pie Chart showing break down of the different ZIP Code types.

There are currently 41,558 active ZIP Codes in the United States and territories, as of October, 2025.

ZIP Code types (by Classification Code):

  • <BLANK> - Standard: Used for general mail delivery (29,800 ZIPs).
  • P - PO Box: Post Office boxes and contract delivery (9,129 ZIPs).
  • U - Unique: Businesses, government agencies, universities receiving high mail volume (2,030 ZIPs).
  • M - Military: APO/FPO addresses for service members overseas (599 ZIPs).

It should be noted that on occassion, a ZIP Code classified as a PO Box can also have limited street delivery as well. When this happens, you usually see some added population and demographic data.

All versions include all ZIP Code types. Each record contains a ClassificationCode field so you can filter by type or check if a ZIP has special limitations (many companies can't ship to Military ZIPs, for example).

Additional statistics:

  • ~23% of ZIP Codes cross county boundaries.
  • The USPS maintains 29,616 city names and aliases.
  • A few rare ZIP Codes even cross state lines.

Numbers can fluctuate monthly as the USPS creates new ZIPs and discontinues old ones. View detailed ZIP Code statistics →

Because people can identify with multiple races on the Census.

Since the 2000 Census, Americans have been able to select more than one racial category. The 2010 Census alone had 63 possible race categories (6 individual races and 57 combinations). Over 9 million Americans (2.9% of the population) chose multiple races in 2010, but in 2020, 10.2% of the population chose multiple races.

How this affects the math:

  • A person is counted once in the total population.
  • If they select "White" and "Black," they're counted once in WhitePopulation AND once in BlackPopulation.
  • When you add all race categories together, multi-racial individuals get counted multiple times.
  • Therefore: Sum of race categories > Total population.

Hispanic or Latino: Hispanic or Latino is an ethnicity, not a race. This means individuals who identify as Hispanic will also be included in one of the race categories (such as White or Black). As a result, the totals shown here may exceed 100% when Hispanic is displayed alongside racial groups. Customers have explicitly asked for Hispanic Population numbers, so they are presented alongside the racial categories. However, the fact it has it's own distinct definition is usually lost. It is a critical distinction.

This applies at all geographic levels: ZIP Code, City, County, and State data all exhibit this behavior. It's not an error - it's how the Census Bureau reports race data.

Learn more about Census race and ethnicity methodology at the Census Bureau website.

Because not everyone lives in a ZIP Code.

ZIP Codes exist for mail delivery, not population enumeration. Several factors cause discrepancies between ZIP-level population sums and higher-level Census totals:

People not in ZIP Codes:

  • Residents in extremely remote areas where USPS doesn't deliver mail.
  • People living 20+ miles from postal facilities in rough terrain.
  • These individuals are counted in County/State populations but not assigned to a ZIP Code.

Special populations:

  • The Census doesn't count incarcerated individuals at their pre-incarceration ZIP Code.
  • Nursing home residents may be counted at the facility, not their home ZIP.
  • These populations are included in County/State totals but may not align with ZIP-level data.

Census methodology:

  • The Census aggregates data at the Census Block level, then rolls up to ZIP Code Tabulation Areas (ZCTAs).
  • ZCTAs don't perfectly align with actual ZIP Code boundaries.
  • Small population discrepancies are expected and normal.

Bottom line: ZIP-level population sums will not match state/national totals exactly. Use ZIP Code demographics for local analysis and targeting, not for verifying Census Bureau totals.

FTP access is included with your subscription at no extra cost.

Setup process:

  1. Email info@zip-codes.com with your account username.
  2. We'll set up your FTP account (typically same-day, often within the hour).
  3. You'll receive connection details and folder access information.
  4. Configure your FTP client or automated scripts.

Connection details:

  • FTP Address: ftp.zip-codes.com
  • IP Address: 216.250.119.190 (static, firewall-friendly)
  • Protocols: FTP, SFTP, FTPS supported
  • Ports: 21 (FTP), 22 (SFTP), 990 (FTPS Implicit)
  • Authentication: Username + Password (SSH keys supported)
  • Access: READ-ONLY (you cannot modify server files)

Update schedule:

  • Databases are published on the 1st of each month.
  • Recommended: Set automated scripts for the 5th to allow for any unforeseen delays.
  • Check the file's last modified date to determine if processing is needed.

Folder structure:

Each product has its own folder. You'll have access only to folders for your active subscriptions:

  • ZIP-STANDARD, ZIP-DELUXE, ZIP-BUSINESS - ZIP Code databases
  • ZIP-4-DELUXE, ZIP-4-STANDARD - ZIP+4 databases
  • CAN-BUSINESS, CAN-DELUXE, CAN-STANDARD - Canadian postal codes
  • NPANXX-DELUXE, NPANXX-STANDARD - Area code databases

For detailed FTP setup instructions and firewall configuration, visit our FTP Services Guide.

We recommend full replace for most applications.

Full Replace Method (Recommended):

  • Drop existing table or truncate data
  • Import new file completely
  • Rebuild indexes
  • Downtime: 5-30 seconds depending on database size

Why full replace works best:

  • Simple and reliable
  • Handles deleted ZIPs automatically
  • No risk of stale data
  • Fast with proper indexing

Incremental Update Method:

  • Best for high-availability systems requiring zero downtime.
  • Compare new file with existing data (several products have UPDATE files already prepared)
  • More complex to implement but preserves foreign key relationships
  • For our Update Files: DELETE obsolete records, then ADD new records. UPDATES are handled by a DELETE, followed by an ADD.

See our Integration Guides section for sample update scripts by database platform.

Updated monthly on the 1st. Our current data was last updated October 1, 2025.

Update frequency:

  • 12 updates per year (published on the 1st of each month)
  • Free FTP access enables automated monthly updates
  • Updates reflect the latest USPS data available

Why monthly updates matter:

The USPS typically introduces 10-50 changes per month. We admit, that isn't tremendous churn, and ZIP Codes are relatively stable. However, we have multiple data sources, and those follow various update schedules - we consolidate, validate, and publish promptly. It's not only ZIP Codes you rely on, it's everything related to it. In today's business landscape, data timeliness ensures:

  • Accuracy and quality in your applications
  • Customer satisfaction (correct deliveries)
  • Regulatory compliance
  • Operational efficiency
  • Effective marketing and targeting
  • Competitive advantage

Need real-time data? Consider our ZIP Code API for up-to-the-minute validation and lookups.

Yes, we maintain monthly versions dating back to October 2004.

Available options:

  • Single Month: Any specific publication since October 2004.
  • Complete Archive: All monthly versions from 2004 to present.
  • Redistribution License: Full archive with redistribution rights.

Formats available:

  • CSV, Excel, Access (all dates)
  • SQL scripts (available from ~2018 forward)

Use cases for historical data:

  • Analyzing ZIP Code changes over time
  • Validating addresses from legacy records
  • Research and trend analysis
  • Compliance and audit requirements

Note: Historical data reflects what was current at that point in time. Coordinates, demographics, and other fields may have been updated in subsequent months.

Purchase Historical Data →

No. ZIP Codes are mail delivery routes, not geographic divisions.

Most people think of ZIP Codes as: Nation > State > County > City > ZIP Code. This is incorrect.

What ZIP Codes actually are:

  • Created exclusively for efficient mail delivery.
  • Represent collections of mail delivery routes (which are collections of mailboxes)
  • Change over time as USPS delivery needs or mailboxes change.
  • Not required to respect City, County, or State boundaries. The USPS is a Federal Agency, just structured as a government-business hybrid and self-funding.

Real-world example:

Imagine a postal carrier placing mail in mailboxes down a long street. It would be highly inconvenient to stop and turn around at an imaginary county boundary line. The carrier continues the route to finish delivery- which means the ZIP Code crosses the county line.

Why this matters for developers:

  • You cannot aggregate ZIP Code data to match official county statistics.
  • You cannot use ZIP Code alone to determine County in ~23% of cases.
  • City boundaries and ZIP Code boundaries rarely align.
  • ZIPs can span multiple counties (even states!).
  • Use ZIP Codes for delivery logistics, not geographic analysis.

For true geographic analysis, use Census Blocks, Tracts, or Counties - not ZIP Codes.

No. ZIP Codes have city names for reference, but they are not cities.

The disconnect:

  • A ZIP Code may serve multiple cities, towns, or neighborhoods.
  • ZIP Code boundaries do not align with city municipality boundaries.
  • The "city name" on a ZIP Code is assigned by USPS for postal purposes.
  • Some names are actually for local businesses or entities (Ex: Universities, Airports, Arenas, neighborhoods, government agencies, and more).

Real example: Venice, California

Los Angeles city boundary vs Venice neighborhood boundary vs ZIP Code 90291 boundary

ZIP Code 90291 is for Venice, CA. Venice is a neighborhood within Los Angeles city limits with a population over 28,000. However:

  • Venice is not an incorporated city - it's a neighborhood in Los Angeles.
  • The 90291 ZIP boundary doesn't match the Venice neighborhood boundary.
  • You cannot compare 90291 demographic data with Los Angeles city data - the boundaries are completely different.
  • The map illustrates the disparity between boundaries. Los Angeles City Limits are shown in gray, the Venice Neighborhood Boundary in green outline, and the 90291 ZIP Code Boundary in red.

City Aliases:

Our database includes a CityAlias field listing alternate acceptable city names for mailing. Towns, villages, and well-known neighborhoods often appear here.

For developers:

  • Don't assume ZIP = City in your data model
  • Use the City field for USPS-preferred mailing names
  • Check CityAlias for alternate acceptable names
  • Never aggregate ZIP data to compare with official city statistics

Each ZIP Code is assigned one time zone based on where the majority of addresses are located.

Time zone format:

We use a numeric UTC offset system (legacy format we've maintained for compatibility):

  • 4 = Atlantic (GMT -04:00)
  • 5 = Eastern (GMT -05:00)
  • 6 = Central (GMT -06:00)
  • 7 = Mountain (GMT -07:00)
  • 8 = Pacific (GMT -08:00)
  • 9 = Alaska (GMT -09:00)
  • 10 = Hawaii-Aleutian Islands (GMT -10:00)
  • 11 = American Samoa (GMT -11:00)
  • 13 = Marshall Islands (GMT +12:00)
  • 14 = Guam (GMT +10:00)
  • 15 = Palau (GMT +9:00)
  • 16 = Micronesia (GMT +11:00)

Daylight Saving Time:

The DaylightSaving field indicates whether the ZIP observes DST:

  • Y = Observes DST (most of the US)
  • N = Does not observe DST (Arizona*, Hawaii, and most territories)

*Exception: The Navajo Nation in Arizona does observe DST

Edge cases:

  • ZIPs on time zone boundaries: Assigned based on majority of addresses or primary county
  • Military ZIPs: May have empty/zero time zone since they represent overseas locations
  • USPS assignment quirks: The primary county receives the largest mail volume, which determines time zone in edge cases

Note: We don't use IANA time zone identifiers (e.g., "America/New_York"). If you need IANA format, you'll need to map our numeric codes to IANA zones in your application.

We treat county equivalents exactly like counties-no special handling required.

Some states use different terminology for their county-level divisions, but the data structure remains consistent across all states:

States with county equivalents:

  • Alaska: Uses Boroughs and Census Areas instead of counties.
  • Louisiana: Uses Parishes instead of counties.
  • Connecticut: Transitioned from Counties to Planning Regions in 2022.
  • Virginia: Has independent cities that function as county equivalents.

How we handle them:

All county equivalents receive a standard County FIPS code from the federal government and are included in our County and CountyFIPS fields just like traditional counties. You don't need to do anything special in your code - query by county name or FIPS code as normal.

Examples:

  • Alaska's Anchorage Municipality appears as County: Anchorage with FIPS code 02020
  • Louisiana's Orleans Parish appears as County: Orleans with FIPS code 22071
  • Connecticut's Planning Regions now use new region names with updated FIPS codes and appears County: Capitol with FIPS code 09110
  • Virginia's independent cities (like Alexandria) have their own FIPS codes and appears County: Fairfax City with FIPS code 51600

Connecticut's unique situation:

Connecticut eliminated county-level government in 1960 but retained counties for statistical purposes. In 2022, they officially replaced counties with Planning Regions. The U.S. Census began releasing data at the new region level in 2023. The USPS updated its ZIP Code products to use planning regions in July 2024.

This staggered rollout created significant challenges, especially for individuals unaware of the change. It was publicized, but not widely known. Our ZIP Code Database includes the new Planning Region FIPS codes and names from the USPS. However, if you're working with Connecticut data, you'll need to maintain a historical county crosswalk for relating to older datasets that still reference the legacy county structure. The Planning Regions received entirely new FIPS codes as part of the transition.

We've created a comprehensive guide with ZIP Code to Historical County crosswalks (including ZIP+4 level) to help smooth this transition. Evena cool map to see the relation of between ZIP Codes, Towns, Historical Counties, and new Planning Regions.

Read our complete guide to Connecticut's planning regions →

Bottom line: Whether it's a county, parish, borough, or planning region-we use the current federal standard. Just be aware that Connecticut requires special attention if you're integrating with historical data sources.

Yes, we offer a separate ZIP Code API service.

ZIP Code API features:

  • Real-time ZIP Code validation and lookups.
  • Distance calculations and Radius searches.
  • Same field coverage as the database downloads.
  • RESTful service with JSON and XML response formats.
  • Includes both US ZIP Codes and Canadian Postal Codes.

Pricing:

The API is a separate purchase with monthly billing based on request volume:

  • Free tier: 250 requests/month
  • Paid tiers: $9.95 to $129.95/month (1,000 to 2M requests)
  • No per-second rate limits - just monthly quotas

Database vs API - which to choose?

  • Database: Best for bulk processing, internal applications, or when you need the complete dataset locally.
  • API: Best for real-time validation, web forms, mobile apps, or when you need the latest data without manual updates.

Note: The API is designed for lookups and validation, not bulk data transfer. If you need all records, the database download is more efficient and cost-effective.

Learn More About the API →

Yes, all military ZIP Codes are included in every edition.

Military ZIP Code types:

  • APO - Army Post Office
  • FPO - Fleet Post Office (Navy)
  • DPO - Diplomatic Post Office

What to expect:

Military ZIPs have basic information but lack geographic data since they represent overseas locations:

  • Included: ZIP Code, City (APO/FPO/DPO), State (AE/AP/AA), Classification Code (M), Intro Date.
  • Typically empty: Coordinates, County, Time Zone, City Aliases, Census data, CBSA codes.
  • USPS indicators: Some USPS-specific fields like CityStateKey are populated.

For developers:

  • Filter by ClassificationCode = 'M' to identify military ZIPs.
  • Many shipping carriers restrict delivery to military addresses - validate business rules accordingly.
  • Demographic and Geographic data is not available for these ZIPs.

Military ZIP Codes follow different rules than civilian ZIPs - they're included for completeness, but they do have limited data fields due to their unique usage. The USPS maintains these so U.S. families can send mail and packages to a local "address". They collect the mail and deliver to military transit locations who then get it to our service men and woman; whether they are on a boat, in a plane, at an overseas base, or hidden in an undisclosed bunker somewhere. P.S. We are a veteran owned business!

Still Have Questions?

We provide free technical support to all customers.

Email: info@zip-codes.com | Phone: 1-800-425-1169