# Battery Status API

The Battery Status API, often referred to as the Battery API, provides information about the system's battery charge level and lets you be notified by events that are sent when the battery level or charging status changes.

> **Warning:** This API has been **deprecated** and removed from most modern browsers (like Firefox and WebKit-based browsers) due to privacy concerns regarding fingerprinting. It may still work in some Chromium-based browsers (Chrome, Edge) or specific environments (Electron, IoT), but it should not be relied upon for general web development.

## 1. Accessing Battery Info

The entry point is `navigator.getBattery()`, which returns a Promise that resolves to a `BatteryManager` object.

```javascript
if ('getBattery' in navigator) {
  navigator.getBattery().then((battery) => {
    console.log("Battery charging? " + (battery.charging ? "Yes" : "No"));
    console.log("Battery level: " + battery.level * 100 + "%");
    console.log("Charging time: " + battery.chargingTime + " seconds");
    console.log("Discharging time: " + battery.dischargingTime + " seconds");
  });
} else {
  console.log("Battery Status API is not supported.");
}
```

## 2. Properties

The `BatteryManager` interface provides read-only properties:

*   `charging`: A Boolean indicating whether the battery is currently charging.
*   `level`: A number between 0.0 and 1.0 indicating the charge level.
*   `chargingTime`: Time in seconds until fully charged (or 0 if full, Infinity if not charging).
*   `dischargingTime`: Time in seconds until empty (or Infinity if charging).

## 3. Events

You can listen for changes in the battery status.

```javascript
navigator.getBattery().then((battery) => {
  
  battery.addEventListener('chargingchange', () => {
    console.log("Charging status changed: " + battery.charging);
  });

  battery.addEventListener('levelchange', () => {
    console.log("Level changed: " + battery.level);
  });

  battery.addEventListener('chargingtimechange', () => {
    console.log("Charging time changed: " + battery.chargingTime);
  });

  battery.addEventListener('dischargingtimechange', () => {
    console.log("Discharging time changed: " + battery.dischargingTime);
  });

});
```

[[programming/javascript/vanilla/javascript]]
[[programming/javascript/vanilla/events]]
[[programming/javascript/vanilla/promises-async-await]]