The calculated distance (air line) between Rakvere and Viljandi is approximately 73 miles respectively 118 kilometers.
By car or train, the actual journey to Viljandi is certainly longer, as only the direct route (as the crow flies) between Rakvere and Viljandi has been calculated here.