The temblor, which occurred at around 11.30 am, was felt in Islamabad, Rawalpindi' Peshawar' Lahore, Muzaffarabad' Chitral and Malakand.
The epicentre was located along the Afghanistan-Pakistan border, state-run radio reported.
The quake was especially severe in Peshawar, where it was lasted almost 30 seconds, TV channels reported.
At least three persons were injured in the northwestern city, officials told the media.
Tremors were also felt in in the Kurram tribal region, Neelam Valley in Pakistan-occupied Kashmir and many parts of Khyber-Pakhtunkhwa province.