Oraşul Călan este situat în partea de nord a depresiunii Ţara Haţegului, pe valea inferioară a râului Strei. Aşezarea veche a oraşului se află în partea stângă a râului pe drumul naţional DN 66 (respectiv E79), iar oraşul nou este aşezat pe terasa Streiului, în partea dreaptă a râului, pe drumul judeţean care leagă Călanul de satele din comuna Mărtineşti (Orăştie) şi se întinde împreună cu satele aparţinătoare pe o suprafaţă de circa 101,5 km2, fiind înconjurat de dealuri relativ joase. Cel mai înalt punct din zonă este Dealul Măgura care atinge 590 m de unde se pot vedea: spre est Munţii Sebeşului, spre vest comuna Ghelari, spre sud ȋntreg masivul Retezat şi spre nord Munţii Metaliferi.
Localitatea Călan se află la jumătatea distanţei dintre depresiunea Haţegului şi valea Mureşului, fiind situată ȋn inima ţinutului hunedorean, la o depărtare de 24 km de municipiul Deva, 10 km de municipiul Hunedoara, 14 km de oraşul Simeria, 18 km de oraşul Haţeg si 30 km de municipiul Orăştie. Teritoriul administrativ al oraşului Călan este străbătut de Drumul Naţional 66 traversând localităţile Călan, Strei şi Batiz, pe direcţia N-S.
Localitatea este poziţonată la kilometrul 198 pe drumul Naţional 66 Târgu-Jiu – Petroşani – Simeria, iar pe calea ferată pe tronsonul Simeria – Petroşani – Filiaşi – Craiova – Bucureşti, fiind situată la 14 km de oraşul Simeria. Oraşul este deservit de staţiile de cale ferată Călan Băi (km 11) și Călan (km 14).
Oraşul Călan se ȋnvecinează la nord cu comuna Băcia şi comuna Mărtineşti, la sud-est cu comuna Orăştioara, la sud cu comunele Boşorod şi Bretea Română, la vest cu comuna Teliucul inferior şi municipiul Hunedoara.