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.
| Code length | Stations | Example |
|---|---|---|
| One letter | 6 | R, Raipur Junction |
| Two letters | 289 | ST, Surat |
| Three letters | 4,870 | HWH, Howrah Junction |
| Four letters | 3,385 | NDLS, 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.
| Code | Official name in the railway's station record | Numeric code | Zone | Trains in our feed |
|---|---|---|---|---|
| NDLS | New Delhi | 03107001 | Northern | 335 |
| DLI | Delhi Jn. | 03107005 | Northern | 250 |
| DEE | Delhi-Sarai Rohilla | 03107081 | Northern | 84 |
| NZM | Hazrat Nizamuddin Jn. | 03107047 | Northern | 244 |
| ANVT | Anand Vihar Terminal | 03109078 | Northern | 137 |
| MMCT | Mumbai Central | 08127022 | Western | 54 |
| CSMT | Chhatrapati Shivaji Maharaj Terminus | 1127053 | Central | 120 |
| LTT | Lokmanya Tilak Terminus | 01127297 | Central | 172 |
| HWH | Howrah | 02319600 | Eastern | 704 |
| SDAH | Sealdah | 2419600 | Eastern | 732 |
| KOAA | Kolkata | 02419653 | Eastern | 102 |
| SHM | Shalimar | 07319122 | South Eastern | 70 |
Some notes that matter more than the table.
- Delhi has five reserved terminals, not one. NDLS, DLI, DEE, NZM and ANVT are separate stations with separate numeric codes. A ticket to one of them will not put you at another. NDLS and DLI are about three kilometres apart; DEE is west of both.
- Mumbai's two big terminals sound alike and are not. CSMT is Chhatrapati Shivaji Maharaj Terminus, on Central Railway. MMCT is Mumbai Central, on Western Railway. LTT, Lokmanya Tilak Terminus, is a third terminal in the north-east of the city and carries more trains in our feed than either.
- Kolkata's stations sit in three different zones. HWH and SDAH are Eastern Railway. SHM, Shalimar, is South Eastern Railway. KOAA is the Kolkata terminal at Chitpur, and our timetable feed spells it "Kolkatta Terminal" while the railway's own record says "KOLKATA". Where a feed and the official record disagree, we say so rather than quietly picking one.
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.
| Old code | New code | Old code valid until | New code valid from | Numeric code |
|---|---|---|---|---|
| BCT, Mumbai Central | MMCT | 20 July 2017 | 21 July 2017 | 08127022 unchanged |
| CSTM, Chatrapati Shivaji Terminus Mumbai | CSMT | 24 July 2017 | 25 July 2017 | 1127053 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
- Search this site. The search box at the top of every page takes a station name or a code and matches both. Our published station pages are listed on all station pages.
- Or use the official enquiry site. The Indian Railways Passenger Reservation Enquiry site carries a "View Codes" menu with a "Station Name" entry. On 3 September 2026 that entry pointed at trainenquiry.com, and that host did not resolve from our server, so we could not open it. We mention it because it exists, not because we can vouch for it today.
- Read it off a station page. Each one carries the name and code together, for instance New Delhi (NDLS), Howrah (HWH) and Mumbai Central (MMCT).
- Check the timetable, not your memory. A code you half-remember from a ticket printed years ago may have been retired, as BCT and CSTM were.
- Never rely on the first letter alone. It matches the name only 97.8 per cent of the time, and the exceptions cluster in exactly the big cities where a mistake is expensive.
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 .