Built-in UtilityPowered by Lens Database

Philippine PSGC Lookup & Code Decoder

Search all 1,742 official Philippine administrative units (18 regions, strictly 82 statutory provinces, and 1,642 cities & municipalities). Inspect official 9-digit and 10-digit PSGC codes, census demographics, and explore boundary visualizations on Lens.

Geographic Hierarchy

Philippine Administrative Hierarchy at a Glance

A quick reference summary of the Philippine administrative structure—tracking statutory regions, 82 provinces, 149 chartered cities, and 1,493 municipalities encoded in the official PSGC database.

Use the search and filter controls below to decode 10-digit codes, correspondence codes, and demographics for any entity.

Summary
18Administrative Regionsincluding NCR & BARMM
82Provinces
149Chartered Cities33 HUCs · 5 ICCs · 111 CCs
1,493MunicipalitiesAcross 42,000+ barangays
Total Divisions: 1,742Total LGUs: 1,642
Filter level:
City Classes (149 Total):
Showing resultsClick any row to decode & inspect
Technical Reference & User Manual

Understanding the Philippine Standard Geographic Code (PSGC)

The Philippine Standard Geographic Code (PSGC) is the systematic, authoritative classification scheme maintained by the Philippine Statistics Authority (PSA) to uniquely designate all administrative divisions across the country. Whether processing national census surveys, election tallies from COMELEC, municipal budget allocations from the Department of Budget and Management (DBM), or geospatial shapefiles from NAMRIA, the PSGC is the undisputed primary key linking civic data to geographic space.

1. Structure of the 9-Digit and 10-Digit PSGC Hierarchy

Traditionally, the PSGC utilized a 9-digit numerical sequence organized in a nested administrative hierarchy. In recent years, the PSA transitioned to a 10-digit code to accommodate future expansion and standardized sub-regional municipal clusters. Both systems break down into four distinct levels:

Digits 1–2Regione.g. 01 (Ilocos)
Digits 3–5Provincee.g. 028 (Ilocos Norte)
Digits 6–7City / Mune.g. 01 (Adams)
Digits 8–10Barangaye.g. 000 (LGU Centroid)

When analyzing data at the municipality or city level, the last three digits are always recorded as 000. When joining down to the barangay level, these three digits range from 001 to 999, referencing each individual neighborhood or rural village.

2. The 149 Cities of the Philippines: HUC, ICC, and CC Breakdown

Under Republic Act No. 7160 (The Local Government Code of 1991), there are exactly 149 chartered cities across the country, structured into three distinct legal classifications:

3. Strictly 82 Statutory Provinces (No Province Numbering)

A common pitfall in Philippine cartographic engineering is quoting "84 provinces". In Philippine statutory law and PSA official standards, there are strictly 82 provinces. The additional two entries found in uncurated GIS datasets are administrative clusters, not statutory provinces:

No Province Numbering: In official Philippine nomenclature, provinces are never numbered. There is no official statutory concept of "Province #1" or "Province #82." Instead, provinces are identified strictly by their geographic name, administrative region, and unique 9-digit / 10-digit PSGC codes.

4. GIS Joining Best Practices: Avoiding the Leading Zero Bug

The single most common bug when joining Philippine demographic spreadsheets to GeoJSON or Shapefile boundaries occurs when spreadsheet software (such as Microsoft Excel or Google Sheets) interprets the PSGC code as an integer rather than text:

Common Pitfall

For regions in Northern Luzon (Region 01, Region 02, Region 03), codes start with a leading zero (e.g., 0102801000). When opened in Excel without specifying text mode, Excel truncates the leading zero, producing 102801000 (9 digits instead of 10). Joining this truncated integer against standard GeoJSON boundaries results in 100% null matches.

To maintain clean join integrity in Python (Pandas), always enforce string parsing on PSGC columns:

import pandas as pd
import geopandas as gpd

# Load census demographic data with string-typed PSGC codes
census_df = pd.read_csv("ph_census_2024.csv", dtype={"psgc": str})

# Ensure uniform 10-digit zero-padding
census_df["psgc"] = census_df["psgc"].str.zfill(10)

# Load official GeoJSON boundary file
boundaries = gpd.read_file("ph_municipalities.geojson")
boundaries["psgc"] = boundaries["psgc"].astype(str).str.zfill(10)

# Perform inner join on clean standardized keys
merged_map = boundaries.merge(census_df, on="psgc", how="inner")

5. Frequently Asked Questions (FAQ)

Where can I view the boundary polygons for these PSGC codes?

You can click any entity in the lookup tool above and click "Explore on Lens Map →" to visualize its official choropleth boundaries, demographic comparisons, and GeoJSON polygon exports directly on Lens.

What is the difference between PSGC Code and Correspondence Code?

The Correspondence Code is the historical 9-digit code system used prior to the 10-digit standardization. In the 9-digit format, digits were allocated as 2 for Region, 2 for Province, 2 for City/Municipality, and 3 for Barangay. The 10-digit PSGC adds an extra digit to the provincial position to allow finer geographic sub-classification.

How often is the PSGC updated?

The PSA updates the PSGC quarterly to reflect official statutory changes enacted by the Philippine Congress or local plebiscites, such as the conversion of municipalities into chartered cities, creation of new barangays, or boundary rectifications.