Gmina Skrwilno położona jest we wschodniej części województwa kujawsko-pomorskiego, w powiecie rypińskim. Gmina graniczy z gminami Rypin i Rogowo (powiat rypiński), Świedziebnia (powiat brodnicki), Lubowidz i Lutocin (powiat żuromiński woj. mazowieckie) i Szczutowo (powiat sierpecki, również woj. mazowieckie).
Gminę tworzy 19 wsi soleckich: Budziska, Czarnia Duża, Czarnia Mała, Kotowy, Mościska, Okalewo, Otocznia, Przywitowo, Rak, Ruda, Skudzawy, Skrwilno, Szczawno, Szucie, Szustek, Urszulewo, Wólka, Zambrzyca i Zofiewo.
Gmina Skrwilno leży w dorzeczu rzeki Wisły. Największym ciekiem na terenie gminy jest jej prawy dopływ, rzeka Skrwa. Zachodni fragment gminy leży na terenie zlewni rzeki Rypienicy, dopływu Drwęcy.