Weaverville is located in northern Buncombe County at (35.695809, -82.558444) [REF].
According to the United States Census Bureau, the town has a total area of , of which , or 0.24%, is water,[REF] including a man-made lake on the southern outskirts of town named Lake Louise.