Kashan sits on the main rail line between Tehran and Isfahan, which makes it one of the easiest cities in Iran to reach by train. The journey from Tehran takes around two and a half hours; from Isfahan it is roughly two hours. The railway station is about 4 kilometres east of the city centre — taxis are readily available outside. Trains between Tehran and Isfahan stop at Kashan several times daily, and the service is reliable and comfortable. This is by far the most sensible way to arrive if you are travelling between the two cities.
By road, Kashan is about 250 kilometres south of Tehran on the main highway, a drive of two and a half to three hours depending on traffic. From Isfahan it is around 220 kilometres north, also roughly two and a half hours. Long-distance buses connect Kashan to both cities and to Qom; the bus terminal is in the south of the city. Taxis and shared taxis (savari) also operate on these routes and can be faster than buses if you negotiate directly.
Kashan has no airport. The nearest international airports are Tehran (Imam Khomeini International, about 200km north) and Isfahan (about 220km south). Most international visitors fly into Tehran and travel south by rail or road.
Within the city, taxis and motorcycle taxis are the standard means of getting around. The old city is compact enough to walk, but the outlying sites — Fin Garden, Tepe Sialk — require a taxi or a car.