devAlice
← Windows

scoop vs winget — Windows package managers compared and split

winget for desktop apps, scoop for CLI/portable. Use both — setup and practical split.

Windows package managers don't have a single unified standard like macOS Homebrew. winget (MS official) and scoop (community) each have clear strengths and weaknesses, so usually you use both. This guide covers differences, setup, and a practical split.

I think the "use both" answer is the honest one here. Not because using two tools is elegant — it isn't — but rather because winget and scoop have genuinely non-overlapping strengths: winget integrates well with the Microsoft catalog and handles GUI apps cleanly, while scoop handles developer CLI tools without admin prompts or PATH pollution. Because they solve different problems, picking one means giving up what the other does well.

Target: Windows 10/11 (Windows initial setup complete).

TL;DR

ItemwingetscoopChocolatey
Maintained byMicrosoft officialCommunityCommunity
Install locationSystem (admin)~/scoop/ (user, no admin)System (admin)
StrengthDesktop GUI apps, official catalogCLI tools, portable, isolatedOldest catalog
WeaknessCLI tool catalog is weakFewer desktop GUI appsUAC prompt every time
PrivilegeAdmin required (usually)User-levelAdmin required
Recommended forDesktop apps (Chrome, VS Code, etc.)Dev CLIs (jq, fzf, gh, neovim, etc.)Legacy catalog only

Recommendation: winget (desktop) + scoop (CLI). Chocolatey only for things missing from both.

1. winget — Desktop Apps First

1.1 Check Install

Built into Win11 and Win10 21H1+. Verify:

winget --version
# v1.7.x or above

If absent, update "App Installer" via Microsoft Store.

1.2 Common Commands

# Search
winget search vscode
 
# Install
winget install --id Microsoft.VisualStudioCode -e
 
# Upgrade everything
winget upgrade --all
 
# List installed
winget list
 
# Uninstall
winget uninstall --id ...
# Browsers / editors
winget install --id Google.Chrome -e
winget install --id Mozilla.Firefox -e
winget install --id Microsoft.VisualStudioCode -e
 
# Comms
winget install --id Notion.Notion -e
winget install --id SlackTechnologies.Slack -e
winget install --id Discord.Discord -e
 
# Dev
winget install --id Git.Git -e
winget install --id Docker.DockerDesktop -e
winget install --id Microsoft.PowerShell -e
winget install --id JetBrains.Toolbox -e
 
# Utilities
winget install --id 7zip.7zip -e
winget install --id Anysphere.Cursor -e
winget install --id Tailscale.Tailscale -e

1.4 export / import

# Export current machine's packages
winget export -o packages.json
 
# Import on a new machine
winget import -i packages.json

Restore all GUI apps in one shot — huge time saver on new PCs.

2. scoop — CLI Tools First

2.1 Install

No admin PowerShell needed:

# Unblock policy once (permanent)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
 
# Install scoop
irm get.scoop.sh | iex

Install location: ~\scoop\ (user folder). No system changes = clean.

2.2 First-time Setup

# Better search (across non-main buckets)
scoop install scoop-search
 
# Extra buckets (extras, versions, java, etc.)
scoop bucket add extras
scoop bucket add versions
scoop bucket add java
scoop bucket add nerd-fonts

2.3 Common Commands

scoop search jq           # search
scoop install jq          # install
scoop update              # fetch all manifests
scoop update *            # upgrade all packages
scoop list                # list installed
scoop uninstall jq        # uninstall
scoop cleanup *           # remove old versions
# CLI essentials
scoop install jq          # JSON CLI
scoop install fzf         # fuzzy finder
scoop install ripgrep     # rg, grep replacement
scoop install fd          # find replacement
scoop install bat         # cat with syntax
scoop install eza         # ls replacement
scoop install gh          # GitHub CLI
scoop install neovim
scoop install delta       # git diff pager
 
# Fonts
scoop install JetBrainsMono-NF
scoop install FiraCode-NF
 
# System utilities
scoop install sudo        # WSL-style sudo for PowerShell
scoop install which
scoop install grep        # GNU grep
scoop install sed         # GNU sed
scoop install touch

2.5 export / import

# Export — JSON
scoop export -c > scoop.json
 
# Import on a new machine
scoop import scoop.json

Same pattern as winget. Automates setup on both machines.

3. Avoiding Conflicts

Installing the same tool via both makes it ambiguous which one runs (depends on PATH order).

Rule: one tool, one manager. Check duplicates with Get-Command git -All.

3.1 Git

  • winget Git for Windows = full SSH/GCM/help (recommended)
  • scoop git = lighter, portable
  • Usually use winget Git (GCM integration).

3.2 Node / Python

  • Both can install them, but mise / nvs / pyenv-win is preferred (version managers)
  • See mac/dev-toolchain — mise works on Windows too.

3.3 VS Code

  • winget only — integrated auto-update
  • scoop vscode is portable, no auto-update

4. Chocolatey — When?

Occasionally something missing from both winget and scoop exists (specialized enterprise software, drivers). Chocolatey's catalog is the oldest and broadest.

# Administrator PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install <pkg> -y

UAC consent every time. Recommendation: last resort.

5. Practical Split Table

CategoryManagerExamples
BrowserswingetChrome, Firefox, Edge
Editors/IDEswingetVS Code, Cursor, JetBrains Toolbox
Comms appswingetSlack, Discord, Notion
Git clientswingetGit for Windows, GitHub Desktop
ContainerswingetDocker Desktop
VirtualizationwingetVirtualBox, VMware
Fonts (Nerd)scoopJetBrainsMono-NF, FiraCode-NF
CLI toolsscoopjq, fzf, ripgrep, fd, bat, eza, gh, delta
Shell utilitiesscoopsudo, which, neovim
Patches / drivers(manual or Chocolatey)NVIDIA Studio Driver, etc.

6. Automation Script (optional)

Automate the first 30 minutes of a new Windows setup. setup.ps1:

# winget — desktop
$wingetApps = @(
    "Google.Chrome",
    "Microsoft.VisualStudioCode",
    "Anysphere.Cursor",
    "Git.Git",
    "Microsoft.PowerShell",
    "Docker.DockerDesktop",
    "JetBrains.Toolbox",
    "Tailscale.Tailscale",
    "AgileBits.1Password",
    "AgileBits.1Password.CLI"
)
foreach ($app in $wingetApps) {
    winget install --id $app -e --accept-package-agreements --accept-source-agreements
}
 
# scoop — CLI
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
irm get.scoop.sh | iex
scoop bucket add extras
scoop bucket add nerd-fonts
 
$scoopApps = @(
    "jq", "fzf", "ripgrep", "fd", "bat", "eza", "gh", "delta",
    "neovim", "sudo", "JetBrainsMono-NF"
)
foreach ($app in $scoopApps) {
    scoop install $app
}

Run:

PowerShell -ExecutionPolicy Bypass -File .\setup.ps1

Combined with Windows initial setup's setup-windows.ps1, a fresh Windows is ready in under an hour.

Verification

  1. winget --version / scoop --version both work
  2. winget list / scoop list show installed packages
  3. gh --version — scoop-installed tool in PATH
  4. code --version — winget-installed tool in PATH
  5. winget upgrade --all / scoop update * — both succeed

Troubleshooting

winget missing (Windows 10)

  • Microsoft Store → update "App Installer"
  • Older than 21H1: update OS

scoop install fails with "running scripts is disabled"

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

winget "Failed when searching source"

winget source reset --force
winget source update

scoop package not on PATH

  • Open a new terminal — scoop updates PATH after install but existing shells don't see it
  • Or $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User")

Same tool conflicts

Get-Command foo -All to inspect PATH order. Remove one side and reinstall.

scoop font not applied

  • scoop installs fonts per user. Other users/system services won't see them
  • For system-wide, use winget or manual install

References

Changelog

  • 2026-05-12: First draft. winget vs scoop vs Chocolatey comparison + split table + automation script + six troubleshooting cases.

Keep reading