There is no outline on this map. Every dot is a PIN code, placed where its post offices are, and together they draw the country. Type a PIN and watch India narrow: the first digit picks a postal zone, the second a sub-zone, the third a sorting district, the last three a single post office. It's a tribute to Ben Fry's zipdecode for US ZIP codes.
Tip: the snake follows whatever prefix you've typed. Try it with nothing typed for all of India, or with 4 to see Maharashtra and MP fill in. Click or tap a dot to jump to that PIN.
The source has 157,126 post-office rows. We checked every location against the state it claims to be in (allowing about 10 km of slack at borders and coasts):
| rows | what happened |
|---|---|
| 138,575 | kept as they were |
| 2,320 | had latitude and longitude swapped. Swapping them back put them in the right state, so we kept them. |
| 9,045 | no usable coordinates (mostly “NA”), so dropped |
| 1,874 | outside India's bounding box even after a swap, so dropped |
| 5,312 | inside the box but not in the state they claim, so dropped |
| 6,174 | more than 60 km from the median of their own PIN's other offices, so left out of that PIN's dot |
Each dot is the average position of a PIN's remaining offices. 19,145 of 19,300 PINs have a usable location. Wrong points still get through: some consecutive codes, like 416215 → 416216 in Kolhapur, are 572 km apart, which can't be right for neighbouring villages. That's why we don't report a “largest district by area”. The zoom also ignores the outermost 2% of dots for each prefix. Treat any single dot as approximate.
Post offices: India Post (Department of Posts, Ministry of Communications), All India Pincode Directory, published on data.gov.in under the Government Open Data License – India. We used a public GitHub mirror of the CSV, a 2024 snapshot of 157,126 rows (the live directory now has about 165,600). State boundaries were used only to sanity-check coordinates, not drawn on the map: geoBoundaries IND ADM1 (CC BY). Boundaries there are approximate and not authoritative.
No tracking, no cookies, no third-party scripts. The page loads one 180 KB (gzipped) data file and draws everything with canvas. Inspired by Ben Fry's zipdecode (2004).