Krnov je město v podhůří Nízkého jeseníku, v okrese Bruntál. Leží asi 22km od Opavy, od okresního města Bruntálu je vzdálen 18km. Leží na soutoku řek Opavy a Opavice. Nachází se v těsné blízkosti hranice s Polskem.
Krnovem prochází silnice I/57, spojující Polsko a Slovensko a silnice I/45. Severně od města se na první jmenované nachází hraniční přechod Bartultovice–Trzebina, na druhé jmenované hraniční přechod Krnov–Pietrowice. Přímé silniční spojení má Krnov s Opavou, Bruntálem, Městem Albrechticemi, Jeseníkem a Horním Benešovem.
Městská hromadná doprava je zajištěna šesti autobusovými linkami (801 až 807).