Back to Blog

Indian State and Union Territory Codes: Complete List

Complete list of all 28 Indian states and 8 union territories with ISO 3166-2:IN codes. Code examples for lookups, validation, and building state dropdowns.

Indian State and Territory Codes: Complete ISO 3166-2:IN List

India has 28 states and 8 union territories, totaling 36 subdivisions with ISO 3166-2:IN codes. These codes are used in address forms, tax (GST) systems, shipping, and KYC compliance. This reference lists every Indian subdivision with its official ISO code.

States (28)

CodeNameRegion Code
IN-APAndhra PradeshAP
IN-ARArunachal PradeshAR
IN-ASAssamAS
IN-BRBiharBR
IN-CTChhattisgarhCT
IN-GAGoaGA
IN-GJGujaratGJ
IN-HPHimachal PradeshHP
IN-HRHaryanaHR
IN-JHJharkhandJH
IN-KAKarnatakaKA
IN-KLKeralaKL
IN-MHMaharashtraMH
IN-MLMeghalayaML
IN-MNManipurMN
IN-MPMadhya PradeshMP
IN-MZMizoramMZ
IN-NLNagalandNL
IN-OROdishaOR
IN-PBPunjabPB
IN-RJRajasthanRJ
IN-SKSikkimSK
IN-TGTelanganaTG
IN-TNTamil NaduTN
IN-TRTripuraTR
IN-UPUttar PradeshUP
IN-UTUttarakhandUT
IN-WBWest BengalWB

Union Territories (8)

CodeNameRegion Code
IN-ANAndaman and Nicobar IslandsAN
IN-CHChandigarhCH
IN-DHDadra and Nagar Haveli and Daman and DiuDH
IN-DLDelhiDL
IN-JKJammu and KashmirJK
IN-LALadakhLA
IN-LDLakshadweepLD
IN-PYPuducherryPY

Delhi (IN-DL) is formally the National Capital Territory. Jammu and Kashmir (IN-JK) and Ladakh (IN-LA) were reorganized from a single state into two union territories in 2019.

Using Indian State Codes in Code

Get All Indian Subdivisions

import { subdivision } from '@koshmoney/countries';
 
const all = subdivision.forCountry('IN');
console.log(all.length);  // 36
 
// Filter by type
const states = all.filter(s => s.type === 'State');
// 28 states
 
const unionTerritories = all.filter(s => s.type === 'Union territory');
// 8 union territories

Look Up a Specific State

import { subdivision } from '@koshmoney/countries';
 
subdivision.whereCode('IN-MH');
// { code: 'IN-MH', name: 'Maharashtra', type: 'State', countryCode: 'IN', regionCode: 'MH' }
 
subdivision.where('IN', 'KA');
// { code: 'IN-KA', name: 'Karnataka', type: 'State', countryCode: 'IN', regionCode: 'KA' }

Validate a State Code

import { subdivision } from '@koshmoney/countries';
 
subdivision.isValidCode('IN-TN');       // true (Tamil Nadu)
subdivision.isValidCode('IN-XX');       // false
subdivision.isValidRegion('IN', 'DL');  // true (Delhi)
subdivision.isValidRegion('IN', 'CA');  // false (CA is US/Canadian)

Build a State Dropdown

import { subdivision } from '@koshmoney/countries';
 
const options = subdivision.forCountry('IN')
  .sort((a, b) => a.name.localeCompare(b.name))
  .map(s => ({
    value: s.code.split('-')[1],
    label: s.name,
  }));
 
// [{ value: 'AN', label: 'Andaman and Nicobar Islands' }, { value: 'AP', label: 'Andhra Pradesh' }, ...]

Tree-Shaking: Load Only Indian Data

import '@koshmoney/countries/subdivision/IN';
import { forCountry } from '@koshmoney/countries/subdivision';
 
const states = forCountry('IN');  // 36 subdivisions

PIN Code Validation

India uses 6-digit PIN (Postal Index Number) codes:

import { postalCode } from '@koshmoney/countries';
 
postalCode.isValid('IN', '110001');  // true (New Delhi)
postalCode.isValid('IN', '400001');  // true (Mumbai)
postalCode.isValid('IN', '12345');   // false (only 5 digits)
 
postalCode.getName('IN');    // 'PIN Code'
postalCode.getFormat('IN');  // 'NNNNNN'

PIN Code Ranges by State

The first digit of a PIN code indicates the postal zone:

First DigitZoneStates Covered
1Delhi, Haryana, Punjab, HP, J&K, Ladakh, ChandigarhNorthern India
2UP, UttarakhandNorthern India
3Rajasthan, Gujarat, DH, DDWestern India
4Maharashtra, Goa, MP, CTWestern/Central India
5AP, Telangana, KarnatakaSouthern India
6Kerala, TN, Puducherry, LakshadweepSouthern India
7WB, Odisha, NE states, AN, SikkimEastern India
8Bihar, JharkhandEastern India
9Army Post Office (APO) / Field Post Office (FPO)Military

Country Data

import { country } from '@koshmoney/countries';
 
country.whereAlpha2('IN');
// { name: 'India', alpha2: 'IN', alpha3: 'IND', numeric: '356' }