How to Remove Specific Apps Using Win11Debloat: CLI and GUI Methods

Win11Debloat removes specific Windows 11 apps via the -RemoveApps parameter with a comma-separated list of AppIds, through an interactive GUI selector, or by using a custom saved list.

The Raphire/Win11Debloat repository provides a PowerShell-based toolkit for decluttering Windows 11 installations. Whether you need to strip out a single unwanted UWP app or curate a precise list of bloatware for multiple user accounts, the script offers both automated command-line interfaces and interactive visual tools to target specific packages.

Method 1: Command-Line Removal with Specific App IDs

Basic Syntax and Parameters

The most direct way to remove specific apps is by invoking the main entry point with the -RemoveApps switch and supplying a comma-separated list of AppIds via the -Apps parameter. In Win11Debloat.ps1, the parameter block collects these arguments into $script:Params, validates them through ValidateAppslist, and then passes the resolved list to the RemoveApps function located in Scripts/AppRemoval/RemoveApps.ps1.

.\Win11Debloat.ps1 -RemoveApps -Apps "Clipchamp.Clipchamp,Microsoft.GamingApp,Microsoft.BingNews"
  • -RemoveApps activates the app-removal engine.
  • -Apps accepts the exact AppId strings defined in Config/Apps.json (the canonical catalogue of removable packages).

Targeting Specific Users

By default, the removal operation affects all users on the system. To restrict the operation to a single account, use the -User or -AppRemovalTarget parameter. The script resolves the target user via GetTargetUserForAppRemoval and passes the resulting SID to the underlying Remove-AppxPackage cmdlets.

.\Win11Debloat.ps1 -RemoveApps -Apps "Microsoft.SkypeApp" -User $env:USERNAME

This command extracts the current user's SID and invokes the removal routine only for that profile, leaving other user accounts untouched.

Method 2: Interactive App Selection GUI

For users who prefer a visual interface or need to reuse the same selection repeatedly, Win11Debloat provides a WPF-based generator. The -RunAppsListGenerator switch launches Show-AppSelectionWindow, which renders Schemas/AppSelectionWindow.xaml and allows you to tick checkboxes for each app.


# Launch the interactive selector

.\Win11Debloat.ps1 -RunAppsListGenerator

After selecting your targets and clicking Save, the script writes your choices to Config/CustomAppsList. You can then execute the removal using the -RemoveAppsCustom switch:

.\Win11Debloat.ps1 -RemoveAppsCustom

This workflow is ideal for building standardized deployment scripts where the list is curated once but executed across multiple machines.

Method 3: Force-Removing System-Level Apps

Certain packages like Microsoft Edge and Microsoft OneDrive are treated as system-level applications. When these appear in your -Apps list, the RemoveApps.ps1 script delegates to WinGet for standard uninstallation. If WinGet fails or you need to bypass safeguards, use the -ForceRemoveEdge parameter:

.\Win11Debloat.ps1 -RemoveApps -Apps "Microsoft.Edge" -ForceRemoveEdge

This triggers the Scripts/AppRemoval/ForceRemoveEdge.ps1 routine, which creates a registry-based scheduled task to forcibly remove the browser when standard methods fail.

Understanding the Removal Process

The removal logic operates through a non-blocking runspace to keep the UI responsive while executing PowerShell cmdlets. Inside Scripts/AppRemoval/RemoveApps.ps1, the script differentiates between package types:

  1. Edge and OneDrive: Routed through winget uninstall commands.
  2. Standard UWP apps: Processed via Get-AppxPackage and Remove-AppxPackage (or their provisioned-package equivalents for system-wide removal).

The $targetUser variable, derived from GetTargetUserForAppRemoval in the main script, determines whether the operation targets AllUsers, CurrentUser, or a specific SID. This scope handling ensures that provisioning packages are removed from the Windows image when targeting all users, preventing reinstallation for new profiles.

Summary

  • Direct CLI removal: Use -RemoveApps with the -Apps parameter and comma-separated AppIds from Config/Apps.json.
  • Per-user targeting: Add -User <username> or -AppRemovalTarget <username> to limit scope to a single account.
  • Visual selection: Run -RunAppsListGenerator to create a curated list, then execute with -RemoveAppsCustom.
  • System apps: Edge and OneDrive require WinGet; use -ForceRemoveEdge for stubborn installations.
  • Core files: The operation is orchestrated in Win11Debloat.ps1 and executed in Scripts/AppRemoval/RemoveApps.ps1.

Frequently Asked Questions

How do I find the correct AppId for a specific Windows 11 app?

Open Config/Apps.json in the repository or your local copy. This JSON file maps human-readable names to the actual AppId strings (e.g., "Microsoft.BingNews" or "Clipchamp.Clipchamp") used by the Windows Package Manager and Get-AppxPackage cmdlets.

Can I remove apps for only the current user without affecting other accounts?

Yes. Append -User $env:USERNAME (or -AppRemovalTarget $env:USERNAME) to your command. The script calls GetTargetUserForAppRemoval to resolve your SID and passes it to Remove-AppxPackage, ensuring the operation affects only the current profile.

What happens if Win11Debloat cannot remove Microsoft Edge with the standard method?

If the WinGet command fails, the script can fall back to Scripts/AppRemoval/ForceRemoveEdge.ps1. Invoke this routine explicitly by adding -ForceRemoveEdge to your command line, which implements a registry-based scheduled task to forcibly uninstall the browser.

Is it possible to save my app selection and run it later on another machine?

Yes. Run .\Win11Debloat.ps1 -RunAppsListGenerator to open the GUI, select your apps, and save the list to Config/CustomAppsList. You can then transport this file to another system and run .\Win11Debloat.ps1 -RemoveAppsCustom to apply the exact same selection.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →