Il fiume è alimentato dal Canale Vallei e da diversi torrenti della regione del Veluwe, tra i quali, i più importanti sono l'Heiligenberger Beek, il Barneveldse Beek e il Lunterse Beek. Tutti questi corsi d'acqua si riuniscono nei pressi di Amersfoort a formare l'Eem. Il fiume scorre nei pressi di Soest, Baarn e Eemnes prima di gettarsi nell'Eemmeer.
Nome
L'antico nome latino del fiume è Hemus e compare la prima volta in un documento dell'anno 777. Altri nomi del fiume Eem sono Amer e Hamer.