Ulstrup har en befolkning på 2.004 og et areal på 1,4 km2. Byen ligger i Gudenådalen, 37 km nordvest for Aarhus mellem Langå og Bjerringbro. Langå-Struer-banen følger dalens nordside, mens selve byen ligger syd for åen. Denne løber her i en smeltevandsdal fra sidste istid, hvis flade og ubebyggede bund kun ligger 3 meter over havet. Dalen flankeres på begge sider af stejle, skovklædte skrænter, der leder op til det omgivende moræneplateau. Bebyggelsen ligger hovedsagelig i 5‑25 m’s højde og består mest af parcelhuse. Den ældre bykerne ligger omkring Hovedgaden. Syd for Ulstrup ligger Sofienlund, som tidligere var lergrav og teglværk. I 1960’erne og 1970’erne voksede byen både mod vest og øst, med parcelhuskvarterer som Gudenåparken, Sofienlundparken og Teglparken. De nyeste huse blev opført i Hagenstrupparken omkring år 2000. Endnu nyere er dog boligkvarteret Amstrup Bakker lidt syd for Ulstrup.