|

EVERY Windows User Should Know How to Use WinGet! (FREE Built-in Tool)

WinGet guide for Windows: install, update, and manage apps with the free built-in package manager

WinGet is the free package manager built into Windows 11 that installs, updates, and removes apps straight from PowerShell or Terminal — no browsing to websites and clicking through installers. Open PowerShell, type winget search followed by an app name to find it, then winget install with the app’s ID to install it. A single command, winget upgrade --all, then updates every app on your PC at once.

Applies to: Windows 11 (23H2, 24H2, 25H2) and Windows 10 (22H2) | Last updated: July 11, 2026

EVERY Windows User Should Know How to Use WinGet! (FREE Built-in Tool)

Key Takeaways

  • WinGet is Microsoft’s own package manager — it is built into Windows 11 out of the box and installs apps from official, trusted sources instead of random download sites
  • Install any app with one linewinget install Brave.Brave downloads the official package and installs it without ever opening a browser
  • Update everything at oncewinget upgrade --all --include-unknown (short form winget upgrade -r -u) updates every app on your PC in one go
  • Back up your whole app listwinget export writes every installed app to a single file, and winget import reinstalls the lot on a fresh Windows install
  • Prefer clicking to typing? Tools like UniGetUI and Winhance run these same WinGet commands behind a graphical interface

Quick Steps:

  1. Right-click the Start button and open Terminal (Admin) or PowerShell (Admin)
  2. Confirm WinGet is installed with winget -v
  3. Find an app with winget search brave
  4. Install it by its ID with winget install Brave.Brave
  5. Update every app at once with winget upgrade -r -u
  6. Back up your app list with winget export -o C:\apps.json and restore it later with winget import -i C:\apps.json

What Is WinGet, and Why Should You Use It?

WinGet is Microsoft’s own package manager for Windows. A package manager cuts out the usual routine of opening your browser, hunting for the right official website, downloading an installer, and clicking Next over and over. Instead, you tell WinGet the name of the app you want, and it fetches it from a trusted source and installs it quietly in the background. If you have ever used a Linux package manager, it is the exact same idea, just for Windows.

That “trusted source” part is a big reason I like using it. When you install something with WinGet, you are not pulling a random file off a sketchy download site covered in fake download buttons — you are getting the official package from the official source. WinGet can pull from a few different sources, too: the main WinGet repository (a large, community-maintained repo), the Microsoft Store source, and a newer font source that Microsoft added for installing fonts.

These days I find myself reaching for WinGet whenever there is a single app I want to install, rather than going to a website to download the installer. It pulls from official sources, it is fast, and it can update everything in one command. The one honest downside: all of this happens in the terminal, in PowerShell, and plenty of Windows users do not live in the terminal. Typing commands can feel awkward at first — but if you can get past that, WinGet genuinely saves a lot of time and frustration.

Note: Not every app is on WinGet. For an app to appear, the developer has to submit it to the winget-pkgs community repository on GitHub and resubmit it every time they release an update. So every now and then you will go looking for something and it simply will not be there — that is completely normal, and you can still grab those apps the usual way.

If you want the full technical reference, Microsoft maintains the official WinGet documentation, which lists every command and option.

How to Check If WinGet Is Installed (and Fix It If It’s Missing)

WinGet is already built into Windows 11 and works on a fresh install. On Windows 10, it is best to check whether it is installed first, and install it if it is not. To open PowerShell, right-click the Start button and choose Terminal (Admin) or PowerShell (Admin). If those do not appear in the menu, just search for them in the Start menu instead.

A quick word on that “as admin” part, because it matters. If you are only searching for apps or checking what is already installed, you do not need admin at all. But the moment you start installing, updating, or removing apps, open the terminal as admin — a lot of apps install for the whole system, and without admin rights Windows will prompt you for permission on every single one, and some installs will just fail.

With PowerShell open, confirm WinGet is there by checking its version:

winget -v

If you get a version number back, WinGet is installed. The first time you run a command, you may be asked to accept some agreements — type Y for yes and press Enter. If instead you get a winget is not recognized error, do not worry. I have a full separate guide on how to install and fix WinGet on Windows 10 and 11 — sort that out first, then come back here.

How to Install and Repair WinGet on Windows

Read the full written guide on how to install and fix WinGet on Windows 10 and 11 if the command is not recognized on your PC.

How to Search for and Install Apps with WinGet

Searching and installing is what you will do most often. Say you want the Brave browser. Search for it like this:

winget search brave

WinGet returns a list of results, and for each one it shows the name, an ID column, and the source it came from. Most results come from the WinGet source, and some come from the Microsoft Store source. That ID is the part to pay attention to, because app names can be very similar — if you install by name alone, WinGet might grab the wrong one or stop and ask you to be more specific. The safest way is to install using the exact ID.

winget install Brave.Brave

The quickest way to get the ID is to highlight it in the search results, copy it with Ctrl + C, and paste it after winget install with Ctrl + V (or a right-click). Press Enter, accept any package agreement if prompted, and WinGet downloads the official package and installs it — no browser required.

You will sometimes see people add --id and --exact to a command like this:

winget install --id Brave.Brave --exact

All that does is force WinGet to match that one exact ID and nothing else. It is handy when you are installing something with a common name and WinGet keeps returning several matches, but you do not have to use it — for most apps, giving WinGet the ID on its own is more than enough.

Install multiple apps with one command

Setting up a new PC? You do not have to install apps one by one, and you do not need any scripting. List them all in a single install command, separated by spaces:

winget install 7zip.7zip Nilesoft.Shell

WinGet installs 7-Zip first and then moves straight on to Nilesoft Shell, one after the other, all from that single line. You can add as many apps as you like this way — just keep adding a space and the next ID. This is also exactly where the silent flags in the next section earn their keep: add them once at the end and they apply to the whole batch, so you can kick it off and walk away.

How to Update Every App on Your PC with One Command

This is probably my favorite thing about WinGet. First, see everything installed:

winget list

You will notice this shows almost every app on your system — not just the ones you installed with WinGet — along with their version numbers. Normally, keeping all of that up to date is a chore, with every app nagging you to update on its own schedule. WinGet turns it into one step. Run winget upgrade to see a neat list of every app with an update waiting, then update them all at once:

winget upgrade --all

There is a small catch a lot of guides skip. Some apps show their version as “unknown,” and by default those quietly get left behind. So I always add --include-unknown to catch them:

winget upgrade --all --include-unknown

And if you want the shorter version that power users lean on, it is the same command with a lot less typing:

winget upgrade -r -u

Run updates silently, with no prompts

When WinGet installs or updates something, it can stop to ask you to accept an agreement, or the installer itself might pop up. To keep the whole thing quiet, add a few flags to the end of the command:

winget upgrade --all --include-unknown --silent --accept-package-agreements --accept-source-agreements --disable-interactivity

Here --silent runs each installer quietly, the two --accept flags stop it asking you to agree to anything, and --disable-interactivity tells WinGet not to pause for any prompts at all. A couple of these have short versions — --silent is just -h, for example — which is what power users chain together. The one thing WinGet cannot skip is the Windows User Account Control prompt asking for permission, so it is not 100% hands-off, but it is about as close as you will get.

winget upgrade -r -u -h --accept-package-agreements --accept-source-agreements --disable-interactivity

Stop specific apps from updating (pinning)

Sometimes you do not want everything updated — maybe an app needs to stay on a specific version, or it is a licensed app you would rather not touch. You can tell WinGet to leave it alone by pinning it:

winget pin add Brave.Brave

Now WinGet skips that app whenever you run “upgrade all.” To really lock it down so it will not update at all until you say so, add --blocking:

winget pin add Brave.Brave --blocking

How to Uninstall Apps with WinGet

Removing an app is just as simple — use the name or the ID:

winget uninstall Brave.Brave

There is one gotcha worth knowing. If an app was installed just for your user account and you try to uninstall it from an admin window, WinGet will not find it — an admin window runs as a different user, so it cannot see apps installed only for your account. The fix is simple: open a normal PowerShell window (not as admin) and run the same uninstall command there.

Tip: Uninstall an app from the same place you installed it. Anything installed just for your user, remove from a normal terminal; anything installed for the whole system, remove from an admin terminal. It is the one time in this whole guide you do not want the admin window.

Other than that, WinGet just runs the app’s own uninstaller, so it is the same as removing it from Settings — only quicker.

Where Does WinGet Install Apps? (and Can You Change It?)

A question I get a lot: where do all these apps actually get installed to? The honest answer is that WinGet does not really decide that. When you install something, WinGet just runs that app’s own installer, so where it ends up is up to the installer itself. Most bigger, system-wide apps go into the Program Files folder, and some smaller, user-only apps get tucked away in your AppData folder.

You do get a couple of flags to try to steer this. --scope lets you ask for either a user install or a machine-wide one, and --location (or -l for short) lets you try to point an app at a specific folder or even a different drive:

winget install Brave.Brave --scope machine --location "D:\Apps\Brave"

Here is the important part: both of those only work if that particular app’s installer supports them, and plenty of installers just ignore them. So you cannot reliably force every app onto, say, your D drive — and that is not WinGet being difficult, it is simply not WinGet’s call to make. A lot of you have asked me to build that kind of thing into Winhance, and this is exactly why it is not a simple switch to flip.

Back Up and Restore Your Entire App List with WinGet

This is genuinely one of the most useful WinGet tricks, and it is perfect for setting up a fresh Windows PC. Once your current PC is set up exactly how you like it, you can tell WinGet to write out a list of everything you have installed into a single file. Use -o for output, followed by the path where you want the file saved:

winget export -o C:\apps.json

Giving it a full path like C:\apps.json matters — if you only give a file name on its own, it saves into whatever folder your terminal happens to be in, which is easy to lose. Now you have one small file that describes your entire app setup. Next time you get a new PC or do a clean install of Windows, you do not reinstall everything by hand. Point WinGet at that file with -i for input:

winget import -i C:\apps.json

WinGet goes off and reinstalls your whole app list, one after the other. And the file does not have to live on the PC itself — drop it on a USB flash drive, and when you are setting up a fresh install (or a whole batch of PCs), plug the drive in and point winget import at the file right there on the stick. It just needs to be somewhere the PC can reach. Instead of losing an evening reinstalling everything by hand, it is one command and you let it run.

One common follow-up: can you point import at local installer files you have already downloaded, so you do not re-download everything each time? The honest answer is no. When you run winget import, it always downloads each app fresh from the source — it will not install from local files sitting on your USB. WinGet does have a separate winget download command that saves an app’s installer into a folder, but import still will not install from those. If what you really want is to set up PCs from installers you have already saved, you are looking at a small PowerShell or batch script that loops through the installers in a folder — and at that point it is not really a WinGet job anymore.

If deploying the same setup across several machines is your goal, I have a dedicated walkthrough on how to configure Windows once and deploy it to every PC with Winhance. And because everything here runs in PowerShell, it pairs nicely with these PowerShell commands every Windows user should know.

Prefer a Graphical Interface? Try UniGetUI or Winhance

If living in the terminal is not your thing, there are apps that give you the same power with a clickable interface. The main one I point people to is UniGetUI, and it is genuinely brilliant because it is not just a graphical interface for WinGet — it sits on top of most package managers out there, so WinGet, Scoop, Chocolatey, npm, and more are all managed from one place. It is really a full software manager for searching, installing, and keeping everything up to date, and under the hood it is running the same kinds of commands covered in this guide.

UniGetUI — Full Walkthrough

Read the full written walkthrough on using UniGetUI as a graphical package manager for Windows, or grab it from the UniGetUI GitHub page.

The other option is my own tool, Winhance. Winhance uses WinGet under the hood as its first source, with a fallback to Chocolatey if something is not on WinGet (it does not use Scoop, at least at the time of writing). But it is a different thing to UniGetUI — Winhance is not trying to be a full software manager. Its external software section is there to help you get a new PC set up quickly with the most common apps people actually need, from a curated list, rather than managing every single package on your system.

Winhance — Windows Enhancement Utility

So the simple way to think about it: if you want an app to manage all of the software on your PC, UniGetUI is your friend; if you are setting up a fresh Windows install and just want the essentials in a couple of clicks, that is where Winhance comes in. You can download Winhance from winhance.net or the Winhance GitHub repository.

Even if the terminal really is not for you and you never touch any of this again, remembering just three commands — winget install, winget upgrade -r -u, and winget export — will already save you a serious amount of time the next time you are installing or updating apps on Windows.

Frequently Asked Questions

Is WinGet free, and is it safe to use?

Yes on both counts. WinGet is Microsoft’s own package manager and is free and built into Windows 11. It is safe because it installs the official package from an official source — the community-maintained WinGet repository or the Microsoft Store — rather than a random installer from a third-party download site.

Does WinGet work on Windows 10?

Yes. WinGet ships built into Windows 11, but on Windows 10 you may need to install it first. Check by running winget -v in PowerShell — if you get a version number, you are set. If you get a “not recognized” error, follow my dedicated guide on installing and repairing WinGet, linked above.

How do I update all my apps with WinGet at once?

Run winget upgrade --all --include-unknown, or the shorter winget upgrade -r -u. This updates every app with a pending update in one pass, including apps whose version WinGet reports as “unknown,” which are skipped by default without the --include-unknown flag.

Can I choose where WinGet installs an app?

Only sometimes. You can try the --scope and --location flags, but they only work if the app’s own installer supports them, and many installers ignore them. WinGet runs each app’s installer as-is, so the final install location is ultimately decided by that installer, not by WinGet.

What is the difference between WinGet and UniGetUI?

WinGet is the command-line package manager built into Windows. UniGetUI is a free graphical app that sits on top of WinGet (and other managers like Scoop and Chocolatey), giving you the same install-and-update power through a clickable interface. UniGetUI runs WinGet commands for you behind the scenes.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *