The aim of this investigation was to propose a preparation method of glass–ceramics derived from heavy metal gypsum and pickling sludge, as well as stabilization of Pb, Zn, Cd, As, Hg, Cr and Ni heavy metals. The process consists of the following two stages: the desulfurization of heavy metal gypsum and the preparation of glass–ceramics. Heavy metal gypsum was desulfurized by excess glass powder at 1,473 K and formed calcium silicate and silicon dioxide as intermediate products. The intermediate products, pickling sludge and small amounts of CaO and MgO were used as major raw materials for preparing parent glass. Glass–ceramics was produced by conventional heating method, which included a nucleation stage (973 K, 2 h) and a crystallization stage (1,173 K, 1 h). The main crystalline phase of the obtained glass–ceramics is akermanite (Ca2MgSi2O7). A high microhardness of 5.3 GPa and a bending strength of 206 MPa, as well as a water absorption lower than 0.13 % were obtained. The leaching of toxic elements in glass–ceramics was much lower than the Environmental Protection Agency 1311 method requirement.