16 KiB
Donut Browser
Open-source anti-detect browser. Unlimited profiles on one computer, each with its own fingerprint, cookies and proxy.
Zero app telemetry · No account needed · Profiles stored on your disk · Optional end-to-end encrypted sync
Your accounts never meet
Websites link accounts that come from the same device, and one ban then takes them all. In Donut, each account runs in its own profile, so every site sees a different device.
Every profile is a separate device
Each profile has its own fingerprint, cookies, extensions and proxy or VPN. WebRTC and DNS use the profile's route. Before a launch, Donut compares the timezone and language of the proxy exit with the fingerprint and stops a mismatch.
The fingerprints come from Wayfern, a Chromium fork that sets them inside the engine. Cloudflare, reCAPTCHA v3 and other anti-bot services do not detect them.
Private at every layer
- No account needed. Profiles, cookies, logins and history stay on your computer.
- Zero app telemetry. No usage data, crash reports or device IDs leave the app.
- A password-locked profile is encrypted on disk and decrypted only while it runs.
- An ephemeral profile keeps its data in memory and is discarded when the browser closes. Clear on close drops cookies, storage and history when the window closes.
- A deleted profile waits 30 days in the trash. Permanent deletion overwrites every file.
- One setting blocks every launch without a proxy or VPN, so no profile starts from your own IP.
- Sync is optional and end-to-end encrypted with a password only you know. Use Donut Sync or run your own server.
Features
Also in the app:
- Groups, tags, notes, statuses, and templates that create many profiles at once.
- Import profiles from Chrome, Edge, Brave or another Chromium browser, with cookies, logins and extensions.
- Import and export cookies, including Playwright
storageStatefiles. - Add extensions from a Chrome Web Store link, a
.crxor.zipfile, or an unpacked folder, and share one set across profiles. - Set Donut as your default browser and choose which profile opens each link.
- The interface is in 11 languages.
Automate with code or AI agents
Start any profile from the local REST API on 127.0.0.1:10108, then connect Playwright, Puppeteer or Selenium over CDP. The sdk folder has Python and Node clients. Connect Claude Code, Cursor, Codex or another client over remote MCP to let an agent work in your profiles. Donut has no AI model of its own. Remote MCP needs a paid plan. Starting profiles from the API and the Synchronizer need Pro or Team.
Guides: quickstart, Playwright with Wayfern, MCP.
Plans
The app is free, with unlimited local profiles. Paid plans add cloud features and automation. Prices are on the pricing page.
| Free | Solo | Pro | Team |
|---|---|---|---|
| Unlimited local profiles Proxies, VPNs and DNS blocklists Local REST API Self-hosted sync |
Everything in Free Encrypted cloud backup Cookie Bot Scheduled recipes Remote MCP for AI agents |
Everything in Solo Browser automation API Cross-OS fingerprints Synchronizer Remote browser sessions |
Everything in Pro Shared profiles Access by profile group Team activity log |
Install
macOS
Or install via Homebrew:
brew install --cask donut
Windows
Download Windows Installer (x64) · Portable (x64)
Linux
| Format | x86_64 | ARM64 |
|---|---|---|
| deb | Download | Download |
| rpm | Download | Download |
| AppImage | Download | Download |
On 64-bit Linux, the install script adds the Donut apt or rpm repository, so updates come through your package manager. For a per-user AppImage, end the command with sh -s -- --appimage.
curl -fsSL https://donutbrowser.com/install.sh | sh
Troubleshooting AppImage
If the AppImage segfaults on launch, install libfuse2 (sudo apt install libfuse2 / yay -S libfuse2 / sudo dnf install fuse-libs), or bypass FUSE entirely:
APPIMAGE_EXTRACT_AND_RUN=1 ./Donut.Browser_x.x.x_amd64.AppImage
If that gives an EGL display error, add WEBKIT_DISABLE_DMABUF_RENDERER=1 or GDK_BACKEND=x11 to the command above. If issues persist, the .deb and .rpm packages are more reliable.
Flatpak and Snap
Releases include an x86_64 Flatpak bundle and a Snap, built from the .deb and tested in their sandboxes by the Linux Packages workflow. Download Donut_*_x86_64.flatpak or Donut_*_amd64.snap from the releases (the nightly has them already) and install it:
flatpak install --user Donut_*_x86_64.flatpak
sudo snap install --dangerous Donut_*_amd64.snap
The Snap leaves the microphone, the camera and the keyring (used by profile import) disconnected until you run sudo snap connect donutbrowser:audio-record, donutbrowser:camera or donutbrowser:password-manager-service. The Flatpak cannot change the default browser, so choose Donut in your system settings instead.
Nix
nix run github:donutbrowser/donutbrowser#release-start
Run from source
git clone https://github.com/donutbrowser/donutbrowser.git
cd donutbrowser
pnpm install
pnpm tauri dev
This needs Node.js (version in .node-version), pnpm, stable Rust and the Tauri v2 prerequisites. With Nix, run nix run .#setup and then nix run .#tauri-dev. See CONTRIBUTING.md.
Self-host sync
Run your own sync server to sync profiles, proxies and groups across devices for free. The server is in donut-sync and ships as the donutbrowser/donut-sync Docker image. See the self-hosting guide.
Contributing
Most of the useful help needs no code.
- Tell other people about Donut. Most users find it by word of mouth.
- Report bugs and request features in GitHub Issues.
- Answer questions in GitHub Discussions.
- Fix and improve translations in
src/i18n/locales. - Write code. Start with CONTRIBUTING.md.
- Star the repo so more people see it.
Star history
Contributors
Contact
For urgent questions or security vulnerability reports, email contact@donutbrowser.com.
License
AGPL-3.0. See LICENSE.










