SR 21 begins at SR 20, and the western terminus of County Road 20A (CR 20A), in McMeekin in Putnam County. For the first , the road is a relatively flat two-lane rural highway heading north with occasional hills, with the only other notable intersection of importance being CR 21, a connecting spur to Marion County. North of here, the road begins to bear to the northwest, but curves to slightly back along the eastern shore of Lake Melrose. After intersecting SR 26 in Melrose, SR 21 enters Clay County briefly as it starts to move northwest and enters extreme southeastern Bradford County north of the intersection with Melrose Road, intersecting with CR 214 and CR 21B. Passing between Keystone Heights Golf and Country Club, and winding around Lake Geneva, SR 21 re-enters Clay County in Keystone Heights, acquiring the name Lakeside Avenue, and then Lawrence Boulevard. It intersects SR 100 where it makes a sharp turn to the northeast. North of Loch Lommond, SR 21 serves as the southeastern border of Camp Blanding. In this location, it also runs past Mike Roess Gold Head Branch State Park, and has a short concurrency with CR 315, after turning straight north in Belmore. West of Penney Farms, SR 21 intersects SR 16 and ceases to serve as the east side of Camp Blanding, but still remains a two-lane rural highway.