De Soto is in northwestern Johnson County and southern Leavenworth County at (38.9791709, -94.9685783). It is along Kansas River. The United States Census Bureau says that the city has a total area of . Of that, are land and , or 1.15%, are water.