PowerManager.EnergySaverStatus not working properly in Windows 11 Pro

JohannesK71083 0 Reputation points
2025-10-09T00:28:24.6333333+00:00

UWP PowerManager.EnergySaverStatus always returns 'Off' in Windows 11 when battery is above 20%

I am encountering an issue where the PowerManager.EnergySaverStatus UWP API incorrectly reports the energy saver state on Windows 11 devices when the battery charge is above approximately 20%.

This behavior contradicts the official documentation, which states:

A user can also set battery saver to turn on automatically when the battery reaches a specified charge threshold, such as 20% remaining.

Environment and API Reference

Operating System: Windows 11 (24H2, 2610000.6725).

Device Tested: Surface Pro 10.

API: Windows.System.Power.PowerManager.EnergySaverStatus

Documentation: https://learn.microsoft.com/en-us/uwp/api/windows.system.power.powermanager.energysaverstatus?view=winrt-26100

Observed Behavior

When the device battery is above ≈20%, the EnergySaverStatus property consistently returns EnergySaverStatus.Off, even if Battery Saver mode is visibly active in the Windows UI.

Manual Activation: With the battery at 50% (well above the auto-threshold), if I manually enable Battery Saver via the Quick Settings or System Settings, the API returns EnergySaverStatus.Off.

Automatic Activation: If I set the automatic threshold to 30% and the battery level drops to 25%, the Windows UI shows Battery Saver is active, but the API returns EnergySaverStatus.Off.

Correct Indication: The API starts reporting the correct status (EnergySaverStatus.On) only when the battery charge drops to ≈20% or lower.

Expected Behavior

The EnergySaverStatus API should return EnergySaverStatus.On whenever Battery Saver is active, regardless of whether it was activated manually by the user or automatically by the system, and regardless of the current battery percentage (as long as the mode is engaged).

Comparative Test (Working Behavior)

This API works as expected on Windows 10 (tested on a Surface Pro 8). In Windows 10, manually enabling Battery Saver at any charge level correctly causes the API to immediately return EnergySaverStatus.On.

Code (Python)

Required pip package: winrt-Windows.System.Power

import winrt.windows.system.power as wsp
print(wsp.PowerManager.energy_saver_status)

return value documentation: https://learn.microsoft.com/en-us/uwp/api/windows.system.power.energysaverstatus?view=winrt-26100

Windows development | Windows API - Win32

2 answers

Sort by: Most helpful
  1. Ruth Waiganjo 0 Reputation points Microsoft Employee
    2026-08-18T11:33:28.3266667+00:00

    Hi @JohannesK71083 ,

    Thanks for reporting this issue. For Windows 11 24H2 and later, you may want to use the newer EnergySaverStatus2 API, which was introduced for the updated Energy Saver experience:

    https://learn.microsoft.com/en-us/uwp/api/windows.system.power.energysaverstatus2?view=winrt-28000

    Was this answer helpful?

    0 comments No comments

  2. Anonymous
    2026-02-17T06:39:22.0266667+00:00

    Hello @JohannesK71083 ,

    Sorry for the late response.

    The behavior seems related to significant changes Microsoft made in Windows 11 24H2. According to the official Microsoft documentation on Energy Saver, Windows 11 24H2 introduced "Energy Saver" as a replacement for the traditional "Battery Saver" feature.

    In Windows 11 24H2 and later, Energy Saver operates differently from Battery Saver in Windows 10 and earlier Windows 11 versions (24H1 and before). The new Energy Saver feature has expanded functionality where users can enable it at any battery level, even when plugged in. However, some of the more aggressive power-saving behaviors (like blocking background apps and sync) only activate when the device is "unplugged and on low battery."

    The discrepancy between what the Windows UI shows and what the API reports suggests the PowerManager.EnergySaverStatus API might not have been fully updated to reflect this new Energy Saver model. The API documentation at PowerManager.EnergySaverStatus still references the older Battery Saver behavior and doesn't mention the Windows 11 24H2 changes.

    If your Python application needs reliable battery saver detection on Windows 11 24H2, I would suggest trying the Win32 SYSTEM_POWER_STATUS structure as an alternative. This is a lower-level API that might provide more accurate results. According to Microsoft's documentation, the SystemStatusFlag field specifically indicates battery saver status:

    • 0 = Battery saver is off
    • 1 = Battery saver on

    Since both the Energy Saver and Battery Saver documentation pages reference SYSTEM_POWER_STATUS for detecting the status, this might be more reliable across different Windows 11 versions.

    Reporting the issue:

    Given that the UWP API behavior differs from the documented expectations and Windows 10 behavior, I would recommend reporting this through the Windows Feedback Hub under the "Developer Platform" category. When filing feedback, include:

    • Your specific Windows 11 build number (24H2, build 26100.6725)
    • Device model (Surface Pro 10)
    • The exact API being used (Windows.System.Power.PowerManager.EnergySaverStatus)
    • Steps to reproduce (manual activation at 50%, automatic activation at custom threshold)
    • Expected vs. actual behavior
    • Reference to the working behavior on Windows 10

    Thank you for bringing this to attention, and I hope this helps clarify the situation. If my answer is helpful, please consider giving some feedback following this instruction.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.