Svēte sākas Lietuvā, Šauļu rajonā, no Linkuvas galēnmorēnu vaļna. 2 km garā posmā pie Žagares Svēte ir Latvijas un Lietuvas robežupe. Lielākā baseina daļa Latvijā atrodas Zemgales līdzenumā, kreisā krasta pieteku baseins – Austrumkursas augstienē. No Lietuvas robežas upe tek pa ~10 m dziļu ieleju, aiz Augstkalnes ieleja klūst saurāka un seklāka, tālāk uz leju līdz Lielupei gultne ir plata un sekla. Daudzi upes posmi drenēti, lejtecē palienas norobežotas ar dambjiem. Augšpus Jelgavas labajā krastā māla karjeri.