For PN350 and WS350, once biochars were added into Zn solution, the OH− and CO32−, which were formed on biochar during pyrolysis56, tend to release into bulk solution. As OH− and CO32− were released from biochar, at the early stage of the diffusion the concentrations of OH− and CO32− in the solution close to biochar surface were much higher than those of bulk solution. Under this condition, when Zn2+ diffused to biochar surface, these ions were easily over-saturated and form hydrozincite and Zn(OH)2 (Fig. 4, Paths 1 and 2), and finally deposited on biochar surface. For biochars produced at low temperature (i.e. 350 °C), there existed a large portion of oxygen-containing functional groups (i.e. carboxyl and hydroxyl)24. When they presented in the solution with high pH, these functional groups will be deprotonated and adsorb Zn2+. During the process of Zn immobilization, the solution pHs were not controlled, they decreased from >9 to 7 with reaction time. From the calculation of Visual MINTEQ 3.1 (Supplementary Fig. S7), we find that two Zn species (i.e. Zn2+ and Zn(OH)+) could be involved in the reaction, and the proportion of Zn2+ was much higher than that of Zn(OH)+. The reactions were shown in Fig. 4, Path 3. Although the sorption mechanisms of PN350 and WS350 are the same, the sorption capacity of Zn on PN350 are much lower than that on WS350, which may be due to the lower amounts of OH−, CO32− and oxygen-containing functional groups formed on PN350 when compared with those formed on WS350. This phenomenon implied that different feedstocks have different degree of decomposition under the same pyrolysis temperature, which would lead to different sorption performances of biochars.