Firefox is many users' default browser of choice — privacy-focused, fast, and not from Microsoft or Google. Here's how to install it silently with winget for one-shot setups and team deployments.
TL;DR
Open Terminal as Administrator:
winget install --id Mozilla.Firefox -e --silent --accept-package-agreements --accept-source-agreements
Firefox installs as English (en-US) by default. ~30 seconds.
What gets installed
| Field | Value |
|---|---|
| Package ID | Mozilla.Firefox |
| Publisher | Mozilla |
| Installer type | NSIS (Nullsoft) |
| License | MPL-2.0 |
| Latest version | 151.0.2 (May 2026) |
| Homepage | mozilla.org/firefox |
| Default install path | C:\Program Files\Mozilla Firefox |
The installer:
- Adds Firefox to Start Menu and taskbar (optional)
- Creates a desktop shortcut
- Doesn't set itself as default browser (you opt-in via Settings)
- Skips telemetry opt-in dialog when silently installed
Locale variants
Firefox publishes locale-specific builds. Replace the ID for non-English:
winget install --id Mozilla.Firefox.DE-DE -e --silent # German
winget install --id Mozilla.Firefox.FR-FR -e --silent # French
winget install --id Mozilla.Firefox.JA-JP -e --silent # Japanese
winget install --id Mozilla.Firefox.ZH-CN -e --silent # Simplified Chinese
winget install --id Mozilla.Firefox.VI-VN -e --silent # Vietnamese
Search for your locale:
winget search Mozilla.Firefox
Per-user install
Firefox supports per-user install — no admin needed:
winget install --id Mozilla.Firefox -e --scope user --silent
Installs to %LOCALAPPDATA%\Mozilla Firefox.
Firefox Developer Edition / ESR
For the developer build (separate profile, dev tools always on):
winget install --id Mozilla.Firefox.DeveloperEdition -e --silent
For Extended Support Release (LTS for enterprises):
winget install --id Mozilla.Firefox.ESR -e --silent
Runs side-by-side with regular Firefox.
Customise with installer overrides
NSIS installers (Firefox uses NSIS) accept /S for silent. To override the install path:
winget install --id Mozilla.Firefox -e --override "/S /D=C:\Apps\Firefox"
/D= MUST be the last flag and unquoted (NSIS quirk).
Pre-configure Firefox for team / enterprise
After install, drop a policies.json to lock down or pre-configure Firefox for enterprise:
$policiesPath = "C:\Program Files\Mozilla Firefox\distribution"
New-Item -ItemType Directory -Path $policiesPath -Force | Out-Null
@'
{
"policies": {
"DisableTelemetry": true,
"DisableFirefoxStudies": true,
"DontCheckDefaultBrowser": true,
"Homepage": {
"URL": "https://intranet.company.com",
"Locked": true
},
"Bookmarks": [
{
"Title": "Company Wiki",
"URL": "https://wiki.company.com",
"Placement": "toolbar"
}
]
}
}
'@ | Out-File -Encoding utf8 "$policiesPath\policy.json"
Restart Firefox, the policies apply. Full reference: mozilla.github.io/policy-templates.
Variations
Specify version
To freeze on a tested version:
winget install --id Mozilla.Firefox -e --version 150.0.1 --silent
List versions:
winget show --id Mozilla.Firefox --versions
Pin to current major
winget pin add --id Mozilla.Firefox --version "151.*"
Now winget upgrade --all won't jump to Firefox 152. See winget pin guide.
Verify
& "C:\Program Files\Mozilla Firefox\firefox.exe" --version
# Mozilla Firefox 151.0.2
Upgrade silently
winget upgrade --id Mozilla.Firefox -e --silent --accept-package-agreements --accept-source-agreements
Firefox also auto-updates by default; winget upgrade is for environments where you've disabled auto-update or want centrally-managed updates.
Uninstall silently
winget uninstall --id Mozilla.Firefox --silent --disable-interactivity
To also wipe the Firefox profile (bookmarks, history, saved logins):
winget uninstall --id Mozilla.Firefox --silent
Remove-Item "$env:APPDATA\Mozilla\Firefox" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Mozilla\Firefox" -Recurse -Force -ErrorAction SilentlyContinue
Detailed: How to uninstall Windows apps with winget.
In a fresh-machine script
# Install Firefox + Thunderbird for a privacy-focused desktop
$apps = @(
"Mozilla.Firefox",
"Mozilla.Thunderbird",
"Bitwarden.Bitwarden"
)
foreach ($id in $apps) {
winget install --id $id -e --silent `
--accept-package-agreements --accept-source-agreements
}
Common errors
"Firefox is already installed" — winget detects existing. Force-reinstall:
winget install --id Mozilla.Firefox -e --silent --force
Wrong locale installed — winget defaults to en-US. Use the specific locale ID:
winget install --id Mozilla.Firefox.VI-VN -e --silent
"Installer hash does not match" — Mozilla pushed a new release before the manifest updated. Wait a day or --force. See hash mismatch fix.
See also
- Firefox on winget.tech → — full package details
- How to install Windows apps with winget → — beginner guide
- Top 15 packages for gaming PCs → — includes Firefox
- Fresh Windows 11 setup → — full workflow
