Sorption of tetracycline and copper onto chitosan is systematically investigated in this study. The sorption of tetracycline and copper occurs rapidly in the first few hours and 90% of completed uptake occurs in the first 11-12 and 6 h, respectively. The sorption equilibrium of both contaminants is established in 24 h. The solution pH largely affects the sorption of both contaminants. The tetracycline uptake increases as pH is increased from 2.8 to 5.6, and 2.5 to 7 in the absence and the presence of copper, respectively. The presence of copper significantly improves the tetracycline adsorption likely due to the formation of cationic bridging of copper between tetracycline and chitosan. The maximum adsorption capacity and the adsorption affinity constant for tetracycline dramatically increase from 53.82 to 93.04 mmol kg-1 and from 1.22 to 10.20 L mmol-1 as the copper concentration is increased from 0 to 0.5 mmol L-1. The uptake of copper increases with an increase in pH from around 3.5-6.0 in the absence and the presence of tetracycline. The presence of tetracycline decreases the copper adsorption, which may be ascribed to the competition of tetracycline with copper ions for the adsorption sites at the chitosan surface. The adsorption isothermal data of both tetracycline and copper are fit well by the Langmuir equation. The maximum adsorption capacity and adsorption affinity constant of copper ions decrease from 1856.06 to 1486.20 mmol kg-1 and from 1.80 to 1.68 L mmol-1 in the absence and the presence of tetracycline. FTIR and XPS studies reveal that amino, hydroxyl, and ether groups in the chitosan are involved in the adsorption of tetracycline and copper.