A smart battery that can predict the remaining life and recharge time of the battery based on battery-specific characteristics. A memory stores battery-specific characteristics, such as charge characteristics, discharge characteristics, capacity characteristics, and self-discharge characteristics. The environmental conditions of the battery, such as temperature, and battery current (charge or discharge) are measured. A microcontroller periodically determines an incremental self-discharge of the battery based on the measured environmental conditions and the self-discharge characteristic of the battery. The microcontroller predicts the remaining battery life of the battery based on the remaining capacity of the battery, the environmental conditions of the battery, and a selected discharge rate of the battery. The discharge rate can be selected by a user, a power management system or by other means. A charge rate of the battery can also be selected. The microcontroller predicts the recharge time of the battery based on the selected charge rate, the present battery capacity, one or more charging characteristics of the battery, and the environmental conditions of the battery (such as battery temperature).