Knjaževac is a town and municipality located in the Zaječar District of the eastern Serbia. As of 2011, the municipality has a population of 31,491 inhabitants, while the town has 18,404 inhabitants.
The town is situated between three mountains, in the geographical region of the Timok Valley bordering Bulgaria.