Biochar has emerged as an efficient tool to affect bioavailability of heavy metals in contaminated soils. Although partially understood, a carefully designed incubation experiment was performed to examine the effect of biochar on mobility and redistribution of Cd, Cu, Pb and Zn in a sandy loam soil collected from the surroundings of a copper smelter. Bamboo and rice straw biochars with different mesh sizes (<0.25 mm and <1 mm), were applied at three rates (0, 1, and 5% w/w). Heavy metal concentrations in pore water were determined after extraction with 0.01 M CaCl2. Phytoavailable metals were extracted using DTPA/TEA (pH 7.3). The European Union Bureau of Reference (EUBCR) sequential extraction procedure was adopted to determine metal partitioning and redistribution of heavy metals. Results showed that CaCl2-and DTPA-extractable Cd, Cu, Pb and Zn concentrations were significantly (p < 0.05) lower in the bamboo and rice straw biochar treated soils, especially at 5% application rate, than those in the unamended soil. Soil pH values were significantly correlated with CaCl2-extractable metal concentrations (p < 0.01). The EUBCR sequential extraction procedure revealed that the acid extractable fractions of Cd, Cu, Pb and Zn decreased significantly (p < 0.05) with biochar addition. Rice straw biochar was more effective than bamboo biochar in decreasing the acid extractable metal fractions, and the effect was more pronounced with increasing biochar application rate. The effect of biochar particle size on extractable metal concentrations was not consistent. The 5% rice straw biochar treatment reduced the DTPA-extractable metal concentrations in the order of Cd < Cu < Pb < Zn, and reduced the acid extractable pool of Cd, Cu, Pb and Zn by 11, 17, 34 and 6%, respectively, compared to the control. In the same 5% rice straw biochar treatments, the organic bound fraction increased by 37, 58, 68 and 18% for Cd, Cu, Pb and Zn, respectively, compared to the control, indicating that the immobilized metals were mainly bound in the soil organic matter fraction. The results demonstrated that the rice straw biochar can effectively immobilize heavy metals, thereby reducing their mobility and bioavailability in contaminated soils.