Run our free battery leak test to find out if your browser exposes your battery level, charging state, and discharging time through the Battery Status API. This browser battery info leak creates a unique digital footprint that websites use for device tracking and cross-browser tracking — even behind VPNs and incognito mode. Our battery API privacy test shows exactly what data your browser reveals.
Quick Answer: What Is a Battery Leak Test?
A battery leak test checks if your browser exposes hardware information through the JavaScript navigator.getBattery() API. Websites can read your exact battery level, charging state, and discharging time — creating a unique fingerprint for battery status API fingerprinting. This device tracking method works without cookies, survives incognito mode, and bypasses VPNs because the data comes from your local hardware, not the network.
Click the button below to check if your browser leaks battery information that can be used for device tracking and browser fingerprinting.
Querying Battery Status API...
Your browser does not expose the Battery Status API. Websites cannot use battery level fingerprinting to track your device. This is the ideal result for privacy-focused browsing.
Why Is This Blocked?
Firefox disabled the Battery Status API in version 52 (2017). Safari restricts it on iOS and macOS. Brave and Tor Browser block it entirely. If you see this result on Chrome, you likely have a privacy extension installed that intercepts navigator.getBattery() calls.
Battery Level
--%
Charging State
--
Discharging Time
--
Privacy Risk
--
Summary

Cybersecurity Threat Researcher
Jessica specializes in browser fingerprinting, hardware side-channel forensics, and data privacy research. She helps privacy-conscious users understand how HTML5 APIs expose device information and how to protect against cross-browser tracking techniques.
View All Articles by Jessica WrightA battery leak test checks whether your browser exposes hardware battery information through the JavaScript Battery Status API. This API — accessed via navigator.getBattery() — gives websites four pieces of data: your exact battery level (as a decimal like 0.6789), your charging state (true or false), your discharging time (seconds until empty), and your charging time (seconds until full).
Individually, these data points seem harmless. But combined, they create a surprisingly unique digital footprint. In 2015, researchers proved that the precise battery level plus discharging time could identify a device across different websites — even when the user cleared cookies, used incognito mode, or connected through a VPN. This technique is called battery status API fingerprinting, and it remains one of the most effective cross-browser tracking methods available.
According to Wikipedia's article on device fingerprinting, hardware-based fingerprinting techniques like battery status tracking are particularly dangerous because they persist across browsing sessions and cannot be cleared by the user — unlike cookies or local storage.
Key Fact: The Battery Status API reports your battery level as a double-precision floating-point number (e.g., 0.6789123). Combined with discharging time in seconds (e.g., 14,567s), this creates approximately 14 million possible unique combinations — enough to identify your device among millions of visitors.
Understanding how battery status API fingerprinting works helps you appreciate the privacy risk. The API is a standard HTML5 API that any website can call through JavaScript without asking for your permission — no popup, no consent dialog, no notification.
When a website runs navigator.getBattery(), the browser returns a BatteryManager object with four properties that update in real time:
// JavaScript: How websites read your battery data
navigator.getBattery().then(function(battery) {
console.log(battery.level); // 0.6789 (67.89%)
console.log(battery.charging); // false
console.log(battery.dischargingTime); // 14567 (seconds)
console.log(battery.chargingTime); // Infinity
});
// The battery object also fires events:
battery.addEventListener('levelchange', updateLevel);
battery.addEventListener('chargingchange', updateCharging);
The critical issue is precision. On vulnerable browsers, the battery level is reported with up to 14 decimal places — not as a rounded percentage. This means your battery at "67%" is actually reported as "0.67891234567890" which is essentially unique to your specific device at that specific moment. Combined with discharging time down to the second, trackers can create a temporary but highly accurate device identifier without any cookies.
For a complete picture of what your browser reveals, run our Browser Leak Test alongside this battery API privacy test.
Cross-browser tracking using battery data is one of the most sophisticated device tracking techniques available. Here is exactly how advertisers and ad-tracking networks exploit the Battery Status API to follow you across the internet.
Imagine you visit Website A using Chrome, then switch to Firefox to visit Website B. You use different browsers, clear cookies, and even use a VPN. Traditional tracking fails completely. But both websites run a script that calls navigator.getBattery(). Both see that the visitor has a battery level of 0.6789 with a discharging time of 14,567 seconds. The probability that two different devices share these exact values at the same moment is astronomically low — so the tracker concludes you are the same person.
A VPN encrypts your network traffic at the transport layer. But the Battery Status API runs locally inside your browser through JavaScript. The battery data never leaves your device over the network — it is read directly from your operating system's hardware interface. A VPN has zero visibility into this process, making it powerless against battery status API fingerprinting.
This is why we recommend combining multiple privacy tests. Check your JA3 TLS Fingerprint (which also survives VPN use), your WebRTC Leak status, and your Canvas Fingerprint for a complete privacy audit.
Privacy Alert: If our battery leak test shows your exact battery level with decimal precision plus a specific discharging time in seconds, your device can be uniquely identified across any website that runs the same tracking script — regardless of VPNs, incognito mode, or cookie clearing.
The Battery Status API has one of the most controversial histories in web standards. It was designed with good intentions but became a textbook example of how HTML5 API security can fail when privacy implications are not considered.
The World Wide Web Consortium (W3C) published the Battery Status API specification as a way for web applications to be "energy aware." The intended use case was simple: if a user's battery is low, a website should reduce power-hungry features like animations, video autoplay, and background synchronization.
Researchers Lukasz Olejnik, Gunes Acar, Claude Castelluccia, and Claudia Diaz published a groundbreaking paper demonstrating that the API could be used for device tracking. They proved that the high-precision battery level combined with discharging time created a fingerprint capable of cross-browser tracking — identifying the same device across different browsing sessions.
After widespread media coverage, Firefox removed the Battery Status API entirely in version 52 (March 2017). WebKit (Safari) restricted it on iOS. However, Chrome and other Chromium-based browsers kept the API active, though some reduced the precision of reported values.
Today, Firefox and Safari block the API. Brave and Tor Browser spoof it. Chrome and Edge still expose it by default. Our battery leak test detects which category your browser falls into and calculates your privacy risk level accordingly.
Not all browsers handle the Battery Status API the same way. Some expose full battery data, some reduce precision, and some block it entirely. Here is the current status as of 2026.
| Browser | API Status | Privacy Risk | Notes |
|---|---|---|---|
| Chrome / Edge | Exposed | High | Full API access, reduced precision since v86 |
| Firefox | Blocked | None | Removed entirely since v52 (March 2017) |
| Safari (iOS/macOS) | Blocked | None | Restricted since iOS 11, returns undefined |
| Brave | Blocked | None | Shields block API by default |
| Tor Browser | Spoofed | None | Returns fake 100% + charging for all users |
| Opera | Exposed | High | Chromium-based, same exposure as Chrome |
If our battery leak test shows your battery data is exposed, consider switching to a privacy-focused browser or using an anti-detect browser that spoofs hardware APIs. For checking what else your current browser reveals, use our Font Fingerprint Audit.
The Battery Status API is not just a fingerprinting tool — it enables behavioral manipulation. Here are the real-world ways that battery status tracking affects you.
Ad-tracking networks embed scripts on thousands of websites. By reading your battery level and discharging time, they can link your visits across different sites to build a comprehensive browsing profile — all without a single cookie. This profile feeds targeted advertising.
There have been persistent reports about ride-sharing and travel booking apps using battery data to influence pricing. The theory: if your phone is at 3% battery, you are "desperate" and more likely to accept a higher price. While companies deny this, the technical capability exists through this exact API.
Anti-fraud systems use battery data as one signal in bot detection. Real users have varying battery levels and charging states. Automated bots running in virtual machines or headless browsers often report unusual battery patterns (like always 100% or no battery at all). Our IP Fraud Score Checker uses similar behavioral signals.
Privacy Tip: If you use Chrome and cannot switch browsers, install a privacy extension that intercepts navigator.getBattery() calls and returns spoofed data. This breaks the battery status API fingerprinting chain while maintaining normal browsing functionality.
Protecting yourself from battery status API fingerprinting requires browser-level changes since the API runs locally and cannot be blocked by network tools. Here are proven methods for user privacy protection.
The most effective solution is using a browser that blocks the API entirely. Firefox has blocked the Battery Status API since 2017. Brave blocks it through its Shields feature. Tor Browser returns spoofed data (100% + charging) making all users look identical. Check your Tor status with our Tor Detection Tool.
# Firefox (already blocked by default since v52)
# To verify, open about:config and search:
dom.battery.enabled = false
# Chrome: No built-in flag available
# Use a privacy extension like:
# - Battery Status API Override
# - CanvasBlocker (blocks multiple hardware APIs)
# - uBlock Origin with custom filter rules
# Advanced: Override via DevTools Console
navigator.getBattery = undefined;
# Note: Only works per-session, resets on reload
Anti-detect browsers like Multilogin, GoLogin, and AdsPower create isolated browser profiles with spoofed hardware data including battery status, canvas fingerprint, WebGL renderer, and font lists. Each profile appears as a completely different device. These are primarily used by marketers and researchers who need multiple distinct browser identities.
Privacy extensions can intercept navigator.getBattery() calls and return randomized or standardized values. This breaks the fingerprint without disabling other browser features. Combined with a VPN for IP privacy, you achieve comprehensive data privacy coverage.
The Battery Status API is just one of many browser fingerprinting techniques used for device tracking. Understanding how it compares to other methods helps you prioritize your privacy defenses.
| Method | Data Source | Survives VPN | Survives Incognito |
|---|---|---|---|
| Battery Status API | Hardware (local) | Yes | Yes |
| Canvas Fingerprint | GPU rendering | Yes | Yes |
| WebRTC Leak | Network interface | Yes | Yes |
| JA3 TLS Fingerprint | TLS handshake | Yes | Yes |
| Font Fingerprint | Installed fonts | Yes | Yes |
| Cookies | Browser storage | Yes | No |
Notice that every hardware-based fingerprinting method survives both VPN connections and incognito mode. Only cookies — the oldest tracking method — are blocked by private browsing. This is why comprehensive user privacy protection requires auditing all these channels. Use our Browser Leak Test for a complete assessment.
Yes — charging state is itself a trackable data point. The Battery Status API reports whether your device is plugged in, how long until it reaches full charge, and your current battery level. Even while charging, these values create a unique combination.
The fingerprinting risk varies significantly between device types:
Key Insight: Even the absence of battery data is a fingerprint. If the API returns an error or "not supported," the tracker knows you are using Firefox, Safari, Brave, or a desktop PC — narrowing down your device category. This is why Tor Browser returns spoofed data (100% + charging) rather than blocking the API entirely.
Even browsers that still expose the Battery Status API have implemented defenses to reduce the fingerprinting risk. The primary technique is called quantization — rounding battery values to reduce their uniqueness.
Instead of reporting your battery level as 0.6789123 (unique to your device), a quantized browser rounds it to 0.68 or even 0.70. This makes your battery reading match thousands of other users with similar charge levels. Chrome implemented basic quantization starting in version 86, reducing the precision of reported values.
# Vulnerable browser (no quantization):
battery.level → 0.678912345678901 (unique identifier)
# Chrome 86+ (basic quantization):
battery.level → 0.68 (shared by thousands of users)
# Tor Browser (full spoofing):
battery.level → 1.0 (identical for ALL Tor users)
battery.charging → true
battery.dischargingTime → Infinity
Quantization reduces the risk but does not eliminate it. Even rounded battery values combined with other fingerprinting signals (canvas hash, font list, screen resolution, timezone) can still contribute to a unique digital footprint. For maximum data privacy, blocking the API entirely or using spoofed values remains the gold standard. Check your complete fingerprint surface with our Browser Leak Test.
Developers building privacy-focused applications or anti-detect browsers need to detect and handle the Battery Status API programmatically. Here is how to check for the API and implement defenses in your own projects.
// Check if Battery Status API is available
if ('getBattery' in navigator) {
console.log('WARNING: Battery API is exposed');
navigator.getBattery().then(bat => {
console.log('Level:', bat.level);
console.log('Charging:', bat.charging);
console.log('Discharge:', bat.dischargingTime);
});
} else {
console.log('SAFE: Battery API is blocked');
}
// Override getBattery to return spoofed data
// Use in browser extension content scripts:
const spoofedBattery = {
level: 1.0,
charging: true,
chargingTime: 0,
dischargingTime: Infinity,
addEventListener: () => {},
removeEventListener: () => {}
};
navigator.getBattery = () => Promise.resolve(spoofedBattery);
For testing your application's security posture, combine this with our Port Scanner and DNS Lookup Tool.
If you are serious about data privacy and user privacy protection, the Battery Status API is just one of many channels you need to audit. Here is a complete privacy hardening checklist.
Best Practice: Run this entire audit checklist monthly, after browser updates, and whenever you change your privacy setup. Browser fingerprinting techniques evolve constantly — a configuration that was private last month may have new leaks after a browser update.
A battery leak test checks if your browser exposes battery data through the Battery Status API. It matters because this data creates a unique digital footprint that enables cross-browser tracking without cookies — surviving VPNs and incognito mode.
Yes. Research proved that the exact battery level (reported as a floating-point number) combined with discharging time in seconds creates a nearly unique identifier. Two websites reading this data can confirm you are the same person across sessions.
Use Firefox, Brave, or Tor Browser — all block or spoof the Battery Status API. In Chrome, install privacy extensions that intercept navigator.getBattery() calls. On iOS, Safari already restricts the API entirely.
No. A VPN encrypts network traffic but the Battery Status API runs locally in your browser via JavaScript. The data never travels over the network, so VPNs cannot intercept or modify it. Battery API fingerprinting requires browser-level protection.
Firefox has the API disabled by default since version 52. In Chrome, there is no built-in setting — use privacy extensions or switch to Brave. For developers, you can override navigator.getBattery in extension content scripts.
Yes. The API reports charging state, charging time, and battery level simultaneously. Even while charging, the combination of current level plus time-to-full is unique per device based on battery capacity and charging speed.
In key ways, yes. Cookies can be deleted, blocked, or expired. Battery status is a hardware property that persists as long as your device is on. It is a stateless device tracking method that works across incognito sessions, after clearing cookies, and across browser profiles.
Firefox (since v52), Safari (iOS 11+), Brave (default shields), and Tor Browser (spoofed data) all block or neutralize the API. Chrome, Edge, and Opera still expose it by default.
Complete your privacy audit with our free toolkit.
Your battery level, charging state, and discharging time can uniquely identify your device across websites — even behind VPNs. Run our free battery leak test to find out if your browser is vulnerable to battery status API fingerprinting.