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