Ride with gps is usually my first choice, if I’m generating a route manually.
Garmin connect (connect.garmin.com) can get a route (point to point, out and back, loop and back) created automatically based on a given start point and total distance, which you can edit afterwards. It also uses the “heat map” of uploaded rides to get somewhat of a bike friendly route. I’m pretty sure ridewithgps also has the same features but I haven’t had much time with it.
in a pinch, and depending on what route I’m generating EasyRoute app gets the cake for ease of use.