Городокский район расположен на северо-востоке страны и Витебской области. Он является базовой административно-территориальной единицей Республики Беларусь в ряду ее 118 районов, а также в составе 21 района области.
Протяжённость района с севера на юг - 55 км, с запада на восток - 78 км. Расстояние от Городка до Витебска - 30 км, до Минска - 287 км.
Северная и восточная границы района совпадают с государственной границей Республики Беларусь с Российской Федерацией (Невельский и Усвятский районы Псковской области). На юге район граничит с Витебским, а на западе – с Шумилинским и Полоцким районами Витебской области.
Территория района находится вне природных осей, образуемых крупнейшими реками страны. Большая его часть занята Городокской возвышеностью, переходящей на юго-востоке в Суражскую низину и на западе - в Полоцкую низину. Поверхность преимущественно холмистая. Реки преимущественно относятся к водосбору Западной Двины. Городокская возвышенность служит водоразделом бассейнов рек Западной Двины и Невы. К бассейну Невы относится река Ловать, берущая начало на территории района. Природным богатством района являются 162 озера.
Общая площадь земель Городокского района составляет 2,98 тыс. кв.км, в том числе:
пахотные земли - 33825 га,
луговые - 24428 га.
По территории района проходит автомобильная дорога республиканского значения М-8 гр. РФ (Езерище)-Витебск-Гомель-гр.Украины (Новая Гута) и участок железной дороги Витебск-Городок-Езерище-Невель (Российская Федерация).