Indian Hills is located in northeastern Jefferson County. It is bordered to the northeast by Glenview and Riverwood, to the east by Northfield, to the southeast by Windy Hills, to the south by Druid Hills and Brownsboro Village, to the southwest by Rolling Fields, and to the north by the Ohio River, which on the far bank carries the Indiana border. On all other sides, Indian Hills is bordered by the Louisville/Jefferson County consolidated government.
Over a third of the land is intentionally left undeveloped, mostly as woodlands. Ten areas were originally developed by the Olmsted Brothers landscaping firm, and other tracts have been donated to the city over the years. Most of the undeveloped land is located on Indian Hills Trail between Louisville Country Club and the Ohio River. Caperton Swamp Nature Preserve is also located in the city.
The undeveloped areas around Beargrass Creek and nearly all of the city north of Interstate 71 are in the 100-year flood plain, and seasonal flooding is common. The intersection of Indian Hills Road and River Road is closed occasionally in spring due to high water.