 According to the United States Census Bureau, the town has a total area of , all of it land.The only significant highway providing access to Craigsville is Virginia State Route 42.To the northeast, the road connects with U.S. Route 250 and, via Virginia State Route 254, Interstate 81 near Staunton.