Contamination of aquatic ecosystems with heavy metals leads to accumulation of these elements in aquatic biota including fish. Bioaccumulation of heavy metals in fish is of public health concern because fish are an important part of human diet. The present study was conducted to investigate the bioaccumulation of two heavy metals, Cu and Zn, in muscles of two economically important fish species, an herbivorous fish Schizothorax plagiostomus and a predatory fish Mastacembelus armatus, from three rivers of Malakand Division, Pakistan. Concentrations of Cu and Zn were determined in fish samples by atomic absorption spectrophotometer. Highest Cu concentration of 4.52 ± 0.24 mg kg−1 wet weight was observed in muscles of M. armatus at Chakdara on River Swat while highest Zn concentration of 18.00 ± 1.88 mg kg−1 wet weight was observed in muscles of S. plagiostomus at Daggar on River Barandu. A site wise comparison of both Cu and Zn concentrations in muscles of the study fish generally showed no significant differences among different sites on the rivers. However, in some cases, metal concentrations showed significant increase down the stream. Similarly, a comparison of metal concentrations in muscles of the two species generally did not show significant differences between the two species. Zn concentrations in fish muscles were higher than Cu concentrations in all cases. Bioaccumulation factor (BAF) values for Cu were in the order of kidneys > muscles > liver > gills > skin while for Zn the order was skin > kidneys > liver > gills > muscles.