Jezioro składa się z dwóch części, połączonych cieśniną szerokości ok. 100 m. Cieśnina ta dawniej nazywana była "Szyja". We wschodniej części jeziora znajduje się osiem wysp i wysepek pokrytych lasem liściastym. Największą wyspę (7 ha) od najdawniejszych czasów nazywano Baciów Ostrów, później Petrykowski Ostrów. Z początkiem XX wieku na wyspie tej utworzono miejsce wycieczkowo-rozrywkowe i nadano nazwę wyspie "Herta" (Dorotowski Ostrów, niem. Herta-Insel). Wybudowano dwie sale taneczne, restaurację i muzeum regionalne.
Inne wyspy nazywano: Łórbonki, Sitowe Góry, Geców Ostrów, Wojdowski Ostrów, Kampa. Najważniejsze półwyspy nosiły nazwy: Klampa, Raczak, Kejsów Róg, Kraniki Ostrów. Nazwy zatok (z końca XIX w.): Zielski Kąt (wiejski), Szylków Kąt, Pelnoga.
Brzegi wschodniej części jeziora są płaskie lub lekko wzniesione, natomiast brzegi zachodniej strony są stosunkowo wysokie i strome. Od strony południowo-zachodniej wypływa rzeka Giłwa, na zachód od wsi Kręsk w głębokim jarze wypływa strumień. Jezioro otoczone jest polami uprawnymi i łąkami oraz działkami osadniczymi, tylko miejscami znajdują się kępy leśne.
Ichtiofauna
Jezioro Wulpińskie to sielawowy typ jeziora, występuje szczupak, węgorz, sieja.
Paweł Turowski: Sto siedemdziesiąt trzy lata walki o mowę ojczystą jednej wsi warmińskiej. Wstęp i opracowanie Danuta i Norbert Kasparkowie. UWM w Olsztynie, 2003. Brak numerów stron w książce