Train Chart Vacancy

How Indian railway station codes work

An Indian railway station code is a short official abbreviation, one to four letters long, that names a station in the reservation and enquiry systems. Of the 8,550 stations in the timetable feed we use, 4,870 have three-letter codes and 3,385 have four. NDLS is New Delhi. DLI is Delhi Junction. They are different stations.

Last verified . The counts come from the timetable feed behind this site, dated 30 August 2026. The official codes and names come from an Indian Railways system we queried on the same day. More about us on about this site.

Where codes actually live

A station code is not a nickname. It is a field in a railway record. Indian Railways runs a Rates Branch System, which holds a station master list. For each entry its station page returns a code, a name, a numeric code, valid-from and valid-upto dates, the gauge and the traffic type. We queried it on 3 September 2026 and every official name and number on this page came back from it.

That record explains two things people find strange. Codes have validity dates, so a code can be retired and replaced. And every station also has a numeric code, which is what the accounting systems use, while the letters are for humans.

How the letters are chosen

There is no published formula that we could find, and we are not going to invent one. What we can do is measure the pattern across every station in our timetable.

How long station codes are, across all 8,550 stations in our timetable
Code lengthStationsExample
One letter6R, Raipur Junction
Two letters289ST, Surat
Three letters4,870HWH, Howrah Junction
Four letters3,385NDLS, New Delhi

The pattern that does hold is a weak one. In 8,363 of the 8,550 stations, the code begins with the same letter as the station name. That is 97.8 per cent, so a first letter is a reasonable guess and nothing more. The rest of a code is often a squeeze of the name, sometimes the name of a different place, and occasionally neither.

Two further facts from our own data are worth knowing before you trust a name. Six stations manage with a single letter. And 11 station names in the feed appear under two different codes, because two different places share a name.

The codes people mix up

The three cities below account for most of the confusion we see. Each row's official name and numeric code come from the railway's own station record, read on 3 September 2026. Train counts are from our timetable feed dated 30 August 2026.

Confusable station codes, with the official record behind each
CodeOfficial name in the railway's station recordNumeric codeZoneTrains in our feed
NDLSNew Delhi03107001Northern335
DLIDelhi Jn.03107005Northern250
DEEDelhi-Sarai Rohilla03107081Northern84
NZMHazrat Nizamuddin Jn.03107047Northern244
ANVTAnand Vihar Terminal03109078Northern137
MMCTMumbai Central08127022Western54
CSMTChhatrapati Shivaji Maharaj Terminus1127053Central120
LTTLokmanya Tilak Terminus01127297Central172
HWHHowrah02319600Eastern704
SDAHSealdah2419600Eastern732
KOAAKolkata02419653Eastern102
SHMShalimar07319122South Eastern70

Some notes that matter more than the table.

Codes get retired, and old lists do not catch up

This is the trap that produces most wrong-station bookings. Two of Mumbai's codes were replaced, and the railway's station record shows the exact handover.

Two Mumbai codes that were replaced, from the railway's own validity dates
Old codeNew codeOld code valid untilNew code valid fromNumeric code
BCT, Mumbai CentralMMCT20 July 201721 July 201708127022 unchanged
CSTM, Chatrapati Shivaji Terminus MumbaiCSMT24 July 201725 July 20171127053 unchanged

The numeric code did not move in either case. Only the letters did. The record also shows the spelling of the CSMT entry corrected from "CHATRAPATI" to "CHHATRAPATI" with effect from 3 July 2025.

Old lists still carry the old letters. A Railway Board coaching directorate file titled "Station Code Index", tagged TAG-13 and published on the Indian Railways site, still lists Mumbai Central as BCT and Mumbai CST as CSTM. We read it on 3 September 2026. It carries no date we could read, and it is plainly older than the 2017 change. If a printed or downloaded list disagrees with a booking screen, the booking screen is the one to trust.

One more from the same record: LTT carried a placeholder numeric code for years, and a full one, 01127297, only from 14 February 2025. Official data is not uniformly tidy, and we would rather show you that than pretend otherwise.

How to find a code without guessing

Why we care about this on a chart-vacancy site

A seat availability check needs a boarding station and a destination station, and it needs them as codes. Send the wrong code and you get a truthful answer to the wrong question. A result for Delhi Junction tells you nothing about a train leaving New Delhi. The codes are the quiet reason a checker gives a confusing answer, so it is worth spending a minute on them before you blame the result. How to read a seat availability result covers the answer itself, and what chart vacancy actually means covers what a vacancy is once the chart is out.

The timetable behind every count on this page, with its publisher and checksum, is set out on data sources.

Sources

Every factual claim above was checked against these documents on .