Windows package manager winget lets you install, update, and remove software from the command line without visiting a single website. Instead of downloading installers, clicking through wizards, and hunting for the right version, you type one command and you’re done.
This guide covers everything you need to know to use winget confidently, from first setup to advanced workflows.
What Is Winget?
Winget is Microsoft’s official command-line package manager for Windows 10 and Windows 11. It was released in 2020 and has matured significantly. Think of it like apt on Linux or brew on macOS, but built into Windows.
It pulls software from the Windows Package Manager Community Repository, a large public database of verified app packages hosted on GitHub. Anyone can submit packages, and Microsoft reviews them before they go live.

Why Should You Use Winget?
- Install apps in seconds without browser downloads
- Update all your software with one command
- Automate fresh PC setups using an export file
- No bloatware bundled with installers
- Works great in scripts and IT deployments
If you set up new machines often, or you just want a cleaner and faster way to manage software, winget will save you real time.
Is Winget Already on Your PC?
On Windows 11, winget comes pre-installed. On Windows 10 version 1809 or later, it is included with the App Installer package from the Microsoft Store.
To check if you already have it, open PowerShell or Command Prompt and type:
winget --version
If you see a version number like v1.9.x, you are ready to go. If you get an error, install or update the App Installer from the Microsoft Store by searching “App Installer” directly.
Note: Winget requires Windows 10 version 1809 (build 17763) or higher. It does not work on Windows 7 or 8.
How to Open Winget
You can run winget from any of these:
- PowerShell (recommended)
- Command Prompt (cmd)
- Windows Terminal
Right-click the Start menu and choose “Windows Terminal” or “PowerShell.” You do not need to run it as administrator for most tasks, but some installations may prompt for elevation automatically.
Basic Winget Commands You Need to Know
Here is a quick reference table for the most-used winget commands:
| Task | Command |
|---|---|
| Search for an app | winget search <name> |
| Install an app | winget install <name> |
| Update a specific app | winget upgrade <name> |
| Update all apps | winget upgrade --all |
| Uninstall an app | winget uninstall <name> |
| Show app details | winget show <name> |
| List installed apps | winget list |
| Export installed apps | winget export -o apps.json |
| Import and install from file | winget import -i apps.json |
Now let’s go through each one with real examples.
How to Search for Software Using Winget
Before installing anything, search to find the exact package name:
winget search vlc
The output will show a table with the Name, ID, Version, and Source columns. The ID column is what matters most. It looks like VideoLAN.VLC.
Name ID Version Source
-----------------------------------------------
VLC VideoLAN.VLC 3.0.21 winget
Always note the ID when there are multiple results with similar names. Using the ID avoids ambiguity.
Search Tips
- Use partial names:
winget search notewill return Notepad++, Notion, and others - Filter by source:
winget search firefox --source winget - Use quotes for multi-word names:
winget search "obs studio"
How to Install Software Using Winget
Once you have the ID, install it like this:
winget install VideoLAN.VLC
Winget will download the installer, verify it, and run it silently or with its default settings. For most apps, the installation is completely hands-off.
Installing a Specific Version
winget install VideoLAN.VLC --version 3.0.18
Installing Without Prompts (Silent Mode)
winget install VideoLAN.VLC --silent
The --silent flag suppresses all UI dialogs. This is useful in scripts and automated setups.
Installing Multiple Apps at Once
Winget does not support multiple installs in one command natively, but you can chain them in PowerShell:
winget install Google.Chrome; winget install Mozilla.Firefox; winget install Notepad++.Notepad++
Or better, use the export/import method covered below.
Accepting License Agreements Automatically
Some packages require you to accept terms. Skip the prompt with:
winget install <id> --accept-package-agreements --accept-source-agreements
This is essential in scripts where no one is sitting at the keyboard.
How to Update Software Using Winget
This is where winget shines. Instead of opening every app and checking for updates manually, run:
winget upgrade
This lists every installed app that has an update available. To apply all updates at once:
winget upgrade --all
To update a specific app:
winget upgrade Mozilla.Firefox
Upgrade All Without Prompts
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements
You can put this in a scheduled task and let your machine update itself overnight. Many IT admins and power users do exactly this.
Apps Winget Cannot Update
Winget can only update apps it knows about. Some apps manage their own updates outside of winget’s scope. When you run winget upgrade, these will not appear in the list. This is normal.
How to Uninstall Software Using Winget
winget uninstall VideoLAN.VLC
If the package name is ambiguous, use the ID:
winget uninstall --id VideoLAN.VLC
Winget runs the app’s own uninstaller behind the scenes. It is the same as going to Add/Remove Programs, just faster.
How to View App Details
Want to know what you are about to install? Use the show command:
winget show VideoLAN.VLC
This returns the publisher, description, homepage URL, license, installer type, and more. It is a good habit before installing unfamiliar packages.
How to List All Installed Apps
winget list
This shows every app winget recognizes on your system, even ones installed outside of winget. It is a surprisingly good inventory tool.
Filter results:
winget list --name "adobe"
How to Export and Import App Lists
This is one of winget’s most powerful features. It lets you recreate your entire software setup on a new machine in minutes.
Export Your Current Apps
winget export -o C:\Users\YourName\apps.json
This creates a JSON file listing all your installed apps with their IDs and versions.
Import and Install on a New Machine
Copy that file to your new PC and run:
winget import -i C:\Users\YourName\apps.json --accept-package-agreements --accept-source-agreements
Winget will install everything it recognizes from the list. Apps not available in the repository will be skipped with a note.
This is a genuine time-saver when setting up a new PC or recovering from a fresh Windows install.
Using Winget with Package IDs vs Display Names
You can install using either the app name or its exact ID. Using the ID is more reliable:
| Approach | Example | Reliability |
|---|---|---|
| Display name | winget install vlc | May match multiple results |
| Package ID | winget install VideoLAN.VLC | Always exact match |
| Partial match | winget install notepad | Risky, may prompt for selection |
Stick to IDs in scripts and automation. Use display names when exploring interactively.
Winget Sources Explained
Winget pulls packages from sources, which are package repositories. By default, two sources are configured:
| Source | Description |
|---|---|
| winget | Microsoft’s community repository (most apps) |
| msstore | Microsoft Store apps |
List your current sources:
winget source list
Update your source data manually:
winget source update
Winget updates its source data automatically before most operations, but running this manually is useful if you notice stale search results.
Can You Add Custom Sources?
Yes. Organizations can host private winget repositories and add them with:
winget source add --name MyRepo --arg https://myrepo.example.com/index
This is used in enterprise environments to distribute internal tools via winget.
Practical Example: Set Up a New PC from Scratch
Here is a real-world script you can adapt for your own fresh Windows install:
winget install Google.Chrome --silent --accept-package-agreements
winget install Mozilla.Firefox --silent --accept-package-agreements
winget install VideoLAN.VLC --silent --accept-package-agreements
winget install Notepad++.Notepad++ --silent --accept-package-agreements
winget install 7zip.7zip --silent --accept-package-agreements
winget install Git.Git --silent --accept-package-agreements
winget install Microsoft.VisualStudioCode --silent --accept-package-agreements
winget install Spotify.Spotify --silent --accept-package-agreements
Save this as setup.ps1 and run it on any new machine. Everything installs automatically with zero clicks.
Winget Flags and Options Quick Reference
| Flag | What It Does |
|---|---|
--silent | Installs without showing UI |
--id | Targets a specific package ID |
--version | Installs a specific version |
--source | Specifies which repository to use |
--accept-package-agreements | Auto-accepts license terms |
--accept-source-agreements | Auto-accepts source terms |
--scope machine | Installs for all users |
--scope user | Installs for current user only |
--location | Sets a custom install path |
--override | Passes custom arguments to installer |
The –override Flag
This gives you direct control over the underlying installer. For example, to pass a custom argument to a Microsoft installer:
winget install Microsoft.VisualStudioCode --override "/SILENT /NORESTART"
Use this when you need behavior that winget’s default settings do not cover.
Common Winget Errors and How to Fix Them
“No package found matching input criteria”
The package name does not match anything. Use winget search first to find the correct name or ID.
“Another version is already installed”
Run winget upgrade instead of winget install.
Installer Hash Mismatch
This means the downloaded file did not match the expected checksum. Wait a few hours and try again. It usually means the repository metadata was recently updated and has not fully propagated.
“Access Denied” or UAC prompt failures
Run your terminal as administrator or check if your organization’s group policy restricts winget usage.
Winget is not recognized as a command
The App Installer package may be missing or outdated. Go to the Microsoft Store, search “App Installer,” and update or reinstall it.
Winget vs Other Windows Package Managers
| Tool | Best For | Notes |
|---|---|---|
| Winget | General use, built into Windows | Official Microsoft tool |
| Chocolatey | Power users, large package library | Third-party, been around since 2011 |
| Scoop | Dev tools, no admin required | Installs to user directory |
| Ninite | Non-technical users | Web-based, no CLI, limited apps |
Winget is now the sensible default for most Windows users. Chocolatey still has a larger package library for niche tools, and Scoop is excellent for developer workflows where you want everything in your user profile. For a detailed comparison of package managers, this Chocolatey vs Winget breakdown from Chocolatey’s own site offers a fair assessment.
Automating Winget with Task Scheduler
You can schedule automatic updates using Windows Task Scheduler:
- Open Task Scheduler
- Create a new Basic Task
- Set the trigger to Weekly or Daily
- Set the action to:
winget upgrade --all --silent --accept-package-agreements --accept-source-agreements - Set it to run whether the user is logged in or not
- Run with highest privileges
This keeps your apps updated automatically without any manual effort.
Winget in PowerShell Scripts
Winget integrates cleanly into PowerShell. Here is a conditional install pattern that only installs if the app is not already present:
$app = "VideoLAN.VLC"
$installed = winget list --id $app 2>&1
if ($installed -notmatch $app) {
winget install $app --silent --accept-package-agreements
Write-Host "$app installed."
} else {
Write-Host "$app already installed. Skipping."
}
This pattern is useful in IT provisioning scripts where you do not want to reinstall apps unnecessarily.
Winget Settings File
Winget has a settings file you can edit to customize behavior. Open it with:
winget settings
This opens a JSON file in your default editor. Common customizations include:
{
"visual": {
"progressBar": "rainbow"
},
"installBehavior": {
"preferences": {
"scope": "user"
}
}
}
Set scope to machine if you want apps installed system-wide by default.
Conclusion
Winget is one of the most practical tools you can add to your Windows workflow in 2026. It handles software installation, updates, and removal from a single command line. The export and import feature alone is worth learning just for the PC setup use case.
Start simple. Run winget search for an app you already use, install it with winget install, then try winget upgrade --all to update everything at once. Once that clicks, the scripting and automation possibilities open up naturally.
Frequently Asked Questions
Is winget safe to use?
Yes. Winget only installs packages from Microsoft’s verified repository. Each package submission goes through automated and manual review before it is accepted. The installer hashes are verified before execution, which protects against tampered files.
Does winget work without an internet connection?
No. Winget requires an internet connection to search the repository and download installers. There is no built-in offline mode for standard use, although enterprise environments can set up local mirrors.
Can I use winget to install Microsoft Office or Adobe software?
Some Microsoft products like Visual Studio Code and Teams are available via winget. Adobe Creative Cloud has a winget package (Adobe.CreativeCloud) as well. Major commercial software is increasingly available but coverage varies. Always run winget search to check first.
How do I find the correct package ID for any app?
Run winget search <appname> and look at the ID column. If you are unsure between two results, run winget show <id> on each to see full details including the publisher and homepage URL before installing.
Does winget replace the need for Chocolatey?
For most everyday users, yes. Winget covers the most popular consumer and developer software. Chocolatey still has a larger package library and some enterprise-focused tooling that winget does not match yet. If winget has the package you need, use winget. If it does not, Chocolatey or Scoop are solid alternatives.
- How to Fix Overscan on Windows 11/10: Stop Your Screen Getting Cut Off (2026) - April 1, 2026
- How to Disable Lock Screen on Windows 11/10 in 2026 - April 1, 2026
- Top 7 NFT Integration Ideas for Brands in 2026 - March 31, 2026
