Services: what is safe to disable (and what is not)
Why most service-tuning lists are wrong, how to read dependencies, and the small set of services that are genuinely optional.
- Build
- 26300.9457 / 26100.33650
- Edition
- Pro (26H2) / Server
- Architecture
- x64
- Support
- Documentation (E1)
- Evidence
- E1Official documentation
- Verified
- 2026-10-29
- Page type
- Method
The short answer
Section titled “The short answer”Disabling services is the most over-recommended and least effective performance tweak on modern Windows. A service that is idle costs almost nothing; a service that is disabled can break a feature weeks later with no obvious link.
The honest position:
- A handful of services are genuinely optional for most people.
- Most “optimisation” lists disable services that other components call on demand.
- Startup time is dominated by startup apps and disk, not by idle services.
Read the dependency tree first
Section titled “Read the dependency tree first”# what depends on what (both directions)Get-Service | Where-Object Name -eq 'WSearch' | Select-Object Name,Status,StartTypeGet-Service -Name 'WSearch' -DependentServicesGet-Service -Name 'WSearch' -RequiredServicesA service you disable may be required by one you keep — Windows will refuse to start the dependent one, often silently at the next boot.
The genuinely optional set
Section titled “The genuinely optional set”| Service | What it does | Disabling costs |
|---|---|---|
WSearch (Windows Search) |
index for Start/Explorer/Outlook | search becomes instant-only over file names |
SysMain (Superfetch) |
prefetch for HDDs | small HDD slowdown; SSDs barely care |
RemoteRegistry |
remote registry access | remote admin tools stop working |
Fax |
fax | nothing |
RetailDemo |
store demo mode | nothing |
WMPNetworkSvc |
media sharing | DLNA stops |
Everything else you read in a “debloat” list — DiagTrack, dmwappushservice, WaaSMedicSvc, wuauserv — is either protected, re-enabled by Windows, or load-bearing for updates and diagnostics.
What actually helps boot and responsiveness
Section titled “What actually helps boot and responsiveness”| Change | Real effect |
|---|---|
| Fewer startup apps | large |
| Faster storage | large |
| Less memory pressure | large |
| Disabling idle services | small to none |
| Registry “tweaks” | none to negative |
# services that were slow to start (event 103 names them)Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Diagnostics-Performance/Operational'; Id=103} -MaxEvents 20 | Select-Object TimeCreated,Message | Format-ListThat query gives you the specific services that delayed a boot. It is a much better starting point than a blog list.
If you must change something
Section titled “If you must change something”- Note the current StartType (
Get-Service | Select Name,StartType). - Set to Manual, not Disabled — the service can still start on demand.
- Reboot twice (some effects only appear on the second boot).
- If anything breaks, set it back.
# reversible example$s = Get-Service WSearch$s.StartType # record thisSet-Service WSearch -StartupType ManualRelated
Section titled “Related”Lab boundary
Section titled “Lab boundary”E1. Service semantics and dependency behaviour are Microsoft-documented. No services were changed on the lab VMs for this page.