Grayson is located southeast of the center of Gwinnett County at 33°53′36″N 83°57′20″W / 33.89333°N 83.95556°W / 33.89333; -83.95556 (33.893306, -83.955420). Georgia State Route 20 is the main highway through town, leading north 5 miles (8 km) into Lawrenceville, the county seat, and southeast five miles to Loganville. Georgia State Route 84 (Grayson Parkway) leads southwest five miles to Snellville. According to the United States Census Bureau, the city has a total area of 2.53 square miles (6.55 km2), of which 2.47 square miles (6.40 km2) is land and 0.06 square miles (0.15 km2), or 2.30%, is water.
Grayson suffered a damaging tornado on June 27, 1994, killing a 10-year-old girl. The city has been benefitting from exurban growth in eastern Gwinnett County, especially in the late 1990s and through the 2000s.