May 22, 2026 · 6 min read · Data

ISO 3166-2:IN — state codes that work everywhere.

India has 36 states and union territories. There are at least six competing code systems for naming them, and most engineering teams discover this the hard way — when a join silently drops half the rows.

The six conventions you'll meet

Pull data about Indian states from any three sources and you'll see three different code systems. Off the top:

A few of these collide deceptively. AP is Andhra Pradesh in Census, but also Arunachal Pradesh — context-dependent. MP is Madhya Pradesh everywhere except in older British-era cartographic data where it sometimes meant something else. Ambiguity in two-letter codes without a country prefix is real, and it is the central reason ISO wins.

The table

A subset, to make the difference concrete:

Note that even ISO disagrees with Census on Telangana: ISO chose IN-TG, Census uses TS. If you mix the two sources without normalizing, your Telangana row falls out of the join.

The curly cases

State boundaries are not static. Two reorganizations in the last twelve years matter for any historical dataset.

Telangana split off from Andhra Pradesh in 2014. Hyderabad sits in Telangana now but served as joint capital for ten years. Pre-2014 records will assign Hyderabad to Andhra Pradesh; post that, Telangana. If your travel content predates the split, your state_code is wrong.

Ladakh became its own UT in 2019, separated from Jammu and Kashmir. Leh and Kargil are now IN-LA, not IN-JK. Most travel CMSes haven't been audited since.

Daman and Diu merged with Dadra and Nagar Haveli in 2020. The combined UT has ISO code IN-DH; older data will still list IN-DD or IN-DN separately.

Why our state_code column uses ISO

TravelMindsAI's state_code column on every Indian city is ISO 3166-2:IN. Three reasons.

It joins cleanly across systems. Wikidata uses ISO 3166-2 as the canonical statement value for P300 (administrative division). OpenStreetMap tags with ISO3166-2. Most international travel datasets either use ISO or have an ISO column available. Census codes work inside India and almost nowhere else.

It carries the country. IN-MH is self-disambiguating. MH alone could be Maharashtra, the Marshall Islands country code, or a US state in some legacy systems.

ISO maintains the boundary changes. When Ladakh became IN-LA in 2019, the ISO Maintenance Agency published the updated subdivision list within months. Census revisions follow a slower, decade-aligned cadence.

Every row in /v1/cities with iso_alpha2 = "IN" has a populated state_code in the IN-XX form. Joins to your tax data, your transit data, your GIS data all work without a translation table.

If you're storing Indian states by Census abbreviation today, this is a decision worth revisiting before the next dataset import surprises you with three states quietly dropped on the floor.

Sign up — free See India coverage →