The missing hierarchical window manager for Windows. Stop searching, start navigating.
See the codehttps://github.com/user-attachments/assets/43d3c613-c7c2-45a5-be38-eede70fd772a
The tool that should have shipped with your OS.
BetterWinTab is a native Windows window navigator for people who keep many apps, browsers, terminals, editors, and work contexts open at the same time. Press Ctrl + Tab, search or browse your windows, and focus the one you need without touching the mouse.
Free. Open source. Native Windows. MIT licensed.
Download Free for Windows 10/11 · View Source on GitHub
BetterWinTab, or BWT, is a keyboard-first replacement for the classic SO switching experience.
Instead of showing one flat, recency-ordered list like Alt + Tab, it gives you one compact surface for every open window, grouped by context, searchable in real time, and designed to disappear the moment you select what you need.
Modern desktops are not small anymore.
Developers, designers, students, and power users often run multiple VS Code windows, browser profiles, terminals, file explorers, notes, dashboards, and communication apps at the same time. All the SOs still treats them mostly as a flat list ordered by whatever you touched last.
That creates three problems:
| Problem | What Happens |
|---|---|
| No context | code.exe, chrome.exe, terminals, and explorers sit side by side with no meaning. |
| Volatile order | Every click reshuffles the switcher, so spatial memory breaks. |
| Slow discovery | Finding one window among dozens becomes scanning, guessing, and repeating. |
BetterWinTab solves this by making window navigation context-aware, searchable, and keyboard-driven.
Use BetterWinTab when you want to:
Win + V.Smart Folders fill themselves automatically based on process names, window classes, or custom rules. Open a new VS Code, Chrome, Terminal, Explorer, Vivaldi, Brave, or Edge window and it appears in the right context immediately.
You can also create manual folders and drag windows into them when you want full control.
Search is always ready. Type part of a title, app name, subtitle, or process name and BetterWinTab filters every open window instantly.
The matcher is typo-tolerant and built for fast, imperfect typing under pressure.
When the local semantic model is available, BetterWinTab also performs an asynchronous
hybrid rerank using intfloat/multilingual-e5-small. Lexical results appear first, so
the model never blocks typing. The ONNX model and SentencePiece tokenizer are downloaded
on demand from Hugging Face and cached under %LocalAppData%\BetterWinTab\Models.
Window, tab, and clipboard content embeddings remain in memory for the current process.
If no open window matches your search, BetterWinTab becomes an application launcher. Find installed programs and open them with one keystroke.
BetterWinTab is designed for flow:
| Shortcut | Action |
|---|---|
Ctrl + Tab | Show or hide the overlay |
Tab / Shift + Tab | Move between folders |
Arrow keys | Move through windows |
Enter | Focus the selected window or launch the selected app |
Esc | Clear search or close the overlay |
F5 | Refresh windows |
Delete | Close the selected window |
0-9, a-z, A-Z | Start typing instantly to search across all open windows — no need to click the search box |
Tab (while searching) | Toggle search mode between All windows and Apps (app launcher) |
The activation hotkey can be changed from Settings -> General.
Enable Browser tabs in Settings -> General to include tabs from Chrome, Edge, and Brave in the same search as windows. The integration has two parts: the unpacked Chromium extension and a small Native Messaging host that connects the extension to BetterWinTab. It does not require remote debugging.
Run these commands from the repository root (BetterWinTab):
# Build the Native Messaging host
dotnet build BrowserExtension\NativeHost\BetterWinTab.NativeHost.csproj -c Release
Then load the extension in every Chromium browser you want to use:
chrome://extensions, edge://extensions, or brave://extensions.BrowserExtension folder.Register the Native Messaging host from the repository root. Replace the example values with the IDs copied in the previous step:
Set-ExecutionPolicy -Scope Process Bypass
.\BrowserExtension\install-native-host.ps1 `
-ExtensionId "CHROME_EXTENSION_ID","EDGE_EXTENSION_ID","BRAVE_EXTENSION_ID"
You can also complete this step from the BetterWinTab UI. Open
Settings -> General -> Browser tabs, paste each browser's extension ID into
the matching field, and click Register browser integration. BetterWinTab
will copy the Native Messaging host to %LocalAppData%, register it for the
current Windows user, and show the result in the settings panel. Administrator
permissions are not required.
You can pass only the browsers you use. For example, Chrome only:
.\BrowserExtension\install-native-host.ps1 -ExtensionId "CHROME_EXTENSION_ID"
Finally, reload the extension in each browser, restart BetterWinTab, and enable
Settings -> General -> Browser tabs. The browser tab title and URL will then
appear in the normal BetterWinTab search, and pressing Enter will activate the
tab in its browser window.
After changing background.js or manifest.json, click Reload on the
extension card. After rebuilding the Native Messaging host, restart the browser
and BetterWinTab so the new host executable is used.
Each tab card shows the browser icon and the tab's favicon when the site provides one. Chromium's normal extension API does not provide screenshots of all background tabs; a live tab image is only available for the currently visible tab with additional capture permissions.
Settings also reports the Native Messaging bridge state for Chrome, Edge, and Brave,
including whether each browser is connected and how many tabs were last received.
Cards label native windows as WINDOW, browser tabs as TAB, and launchable apps as APP.
Firefox is detected in Settings, but its extension bridge is not included yet.
BetterWinTab includes a focused clipboard panel for recent text and image items. Entries, pins, and image bytes are session-only and are cleared when BetterWinTab restarts. Selecting an entry copies it back to the system clipboard, including captured images.
The rich-text Notes editor converts Markdown copied as plain text into formatted notes, including headings, lists, blockquotes, code blocks, tables, and links. It also supports pasting images from the clipboard and dropping image files. Images are embedded in their notes and remain available after BetterWinTab restarts.
Open the Recycle Bin directly from the overlay without minimizing windows or hunting through the desktop.
Use built-in theme presets or create your own. BetterWinTab exposes semantic color tokens for accent, background, surfaces, cards, borders, text hierarchy, and danger states.
BetterWinTab is not an Electron app. It is built with C#, .NET 8, and WinUI 3, with Win32 interop for window enumeration, global hotkeys, live thumbnails, and native shell integration.
The easiest way to install BetterWinTab is to download the latest .exe from GitHub Releases:
Download: https://github.com/sgm1018/BetterWinTab/releases
Releases may include:
BetterWinTab supports Windows 10/11.
| Tool | Version |
|---|---|
| Windows | Windows 10 19041+ or Windows 11 |
| .NET SDK | 8.0.x |
| Visual Studio Code | Any recent version |
| Inno Setup | 6.x, only needed to build the installer |
Check your SDK:
dotnet --version
BetterWinTab must be built for x64. Building without the platform flag can cause native WinUI dependencies to fail at startup.
dotnet build BetterWinTab.csproj -p:Platform=x64
Build output:
bin\x64\Debug\net8.0-windows10.0.19041.0\
From VS Code, you can also run the predefined task:
Ctrl + Shift + B -> build-x64
Recommended VS Code task:
Ctrl + Shift + P -> Tasks: Run Task -> run-x64
Manual run:
Stop-Process -Name BetterWinTab -Force -ErrorAction SilentlyContinue
dotnet build BetterWinTab.csproj -p:Platform=x64
Start-Process "bin\x64\Debug\net8.0-windows10.0.19041.0\win-x64\BetterWinTab.exe"
Hot reload:
dotnet watch run --project BetterWinTab.csproj -p:Platform=x64 --runtime win-x64
Once the app starts, press Ctrl + Tab to show the overlay.
Create .vscode/launch.json if needed:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug BetterWinTab",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-x64",
"program": "${workspaceFolder}/bin/x64/Debug/net8.0-windows10.0.19041.0/win-x64/BetterWinTab.exe",
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
}
]
}
Then press F5 and use breakpoints in the C# files.
Create a self-contained release build:
dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release
Publish output:
bin\Release\net8.0-windows10.0.19041.0\win-x64\publish\
Publish profiles are available under Properties/PublishProfiles/ for win-x64, win-x86, and win-arm64.
Publish first:
dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release
Then compile the installer with Inno Setup:
& "C:\Program Files (x86)\Inno Setup 6\iscc.exe" installer.iss
Installer output:
installer-output\BetterWinTab-Setup-1.0.0-x64.exe
BetterWinTab is released under the MIT License.
Built by sgm108.
The missing hierarchical window manager for Windows. Stop searching, start navigating.
See the codehttps://github.com/user-attachments/assets/43d3c613-c7c2-45a5-be38-eede70fd772a
The tool that should have shipped with your OS.
BetterWinTab is a native Windows window navigator for people who keep many apps, browsers, terminals, editors, and work contexts open at the same time. Press Ctrl + Tab, search or browse your windows, and focus the one you need without touching the mouse.
Free. Open source. Native Windows. MIT licensed.
Download Free for Windows 10/11 · View Source on GitHub
BetterWinTab, or BWT, is a keyboard-first replacement for the classic SO switching experience.
Instead of showing one flat, recency-ordered list like Alt + Tab, it gives you one compact surface for every open window, grouped by context, searchable in real time, and designed to disappear the moment you select what you need.
Modern desktops are not small anymore.
Developers, designers, students, and power users often run multiple VS Code windows, browser profiles, terminals, file explorers, notes, dashboards, and communication apps at the same time. All the SOs still treats them mostly as a flat list ordered by whatever you touched last.
That creates three problems:
| Problem | What Happens |
|---|---|
| No context | code.exe, chrome.exe, terminals, and explorers sit side by side with no meaning. |
| Volatile order | Every click reshuffles the switcher, so spatial memory breaks. |
| Slow discovery | Finding one window among dozens becomes scanning, guessing, and repeating. |
BetterWinTab solves this by making window navigation context-aware, searchable, and keyboard-driven.
Use BetterWinTab when you want to:
Win + V.Smart Folders fill themselves automatically based on process names, window classes, or custom rules. Open a new VS Code, Chrome, Terminal, Explorer, Vivaldi, Brave, or Edge window and it appears in the right context immediately.
You can also create manual folders and drag windows into them when you want full control.
Search is always ready. Type part of a title, app name, subtitle, or process name and BetterWinTab filters every open window instantly.
The matcher is typo-tolerant and built for fast, imperfect typing under pressure.
When the local semantic model is available, BetterWinTab also performs an asynchronous
hybrid rerank using intfloat/multilingual-e5-small. Lexical results appear first, so
the model never blocks typing. The ONNX model and SentencePiece tokenizer are downloaded
on demand from Hugging Face and cached under %LocalAppData%\BetterWinTab\Models.
Window, tab, and clipboard content embeddings remain in memory for the current process.
If no open window matches your search, BetterWinTab becomes an application launcher. Find installed programs and open them with one keystroke.
BetterWinTab is designed for flow:
| Shortcut | Action |
|---|---|
Ctrl + Tab | Show or hide the overlay |
Tab / Shift + Tab | Move between folders |
Arrow keys | Move through windows |
Enter | Focus the selected window or launch the selected app |
Esc | Clear search or close the overlay |
F5 | Refresh windows |
Delete | Close the selected window |
0-9, a-z, A-Z | Start typing instantly to search across all open windows — no need to click the search box |
Tab (while searching) | Toggle search mode between All windows and Apps (app launcher) |
The activation hotkey can be changed from Settings -> General.
Enable Browser tabs in Settings -> General to include tabs from Chrome, Edge, and Brave in the same search as windows. The integration has two parts: the unpacked Chromium extension and a small Native Messaging host that connects the extension to BetterWinTab. It does not require remote debugging.
Run these commands from the repository root (BetterWinTab):
# Build the Native Messaging host
dotnet build BrowserExtension\NativeHost\BetterWinTab.NativeHost.csproj -c Release
Then load the extension in every Chromium browser you want to use:
chrome://extensions, edge://extensions, or brave://extensions.BrowserExtension folder.Register the Native Messaging host from the repository root. Replace the example values with the IDs copied in the previous step:
Set-ExecutionPolicy -Scope Process Bypass
.\BrowserExtension\install-native-host.ps1 `
-ExtensionId "CHROME_EXTENSION_ID","EDGE_EXTENSION_ID","BRAVE_EXTENSION_ID"
You can also complete this step from the BetterWinTab UI. Open
Settings -> General -> Browser tabs, paste each browser's extension ID into
the matching field, and click Register browser integration. BetterWinTab
will copy the Native Messaging host to %LocalAppData%, register it for the
current Windows user, and show the result in the settings panel. Administrator
permissions are not required.
You can pass only the browsers you use. For example, Chrome only:
.\BrowserExtension\install-native-host.ps1 -ExtensionId "CHROME_EXTENSION_ID"
Finally, reload the extension in each browser, restart BetterWinTab, and enable
Settings -> General -> Browser tabs. The browser tab title and URL will then
appear in the normal BetterWinTab search, and pressing Enter will activate the
tab in its browser window.
After changing background.js or manifest.json, click Reload on the
extension card. After rebuilding the Native Messaging host, restart the browser
and BetterWinTab so the new host executable is used.
Each tab card shows the browser icon and the tab's favicon when the site provides one. Chromium's normal extension API does not provide screenshots of all background tabs; a live tab image is only available for the currently visible tab with additional capture permissions.
Settings also reports the Native Messaging bridge state for Chrome, Edge, and Brave,
including whether each browser is connected and how many tabs were last received.
Cards label native windows as WINDOW, browser tabs as TAB, and launchable apps as APP.
Firefox is detected in Settings, but its extension bridge is not included yet.
BetterWinTab includes a focused clipboard panel for recent text and image items. Entries, pins, and image bytes are session-only and are cleared when BetterWinTab restarts. Selecting an entry copies it back to the system clipboard, including captured images.
The rich-text Notes editor converts Markdown copied as plain text into formatted notes, including headings, lists, blockquotes, code blocks, tables, and links. It also supports pasting images from the clipboard and dropping image files. Images are embedded in their notes and remain available after BetterWinTab restarts.
Open the Recycle Bin directly from the overlay without minimizing windows or hunting through the desktop.
Use built-in theme presets or create your own. BetterWinTab exposes semantic color tokens for accent, background, surfaces, cards, borders, text hierarchy, and danger states.
BetterWinTab is not an Electron app. It is built with C#, .NET 8, and WinUI 3, with Win32 interop for window enumeration, global hotkeys, live thumbnails, and native shell integration.
The easiest way to install BetterWinTab is to download the latest .exe from GitHub Releases:
Download: https://github.com/sgm1018/BetterWinTab/releases
Releases may include:
BetterWinTab supports Windows 10/11.
| Tool | Version |
|---|---|
| Windows | Windows 10 19041+ or Windows 11 |
| .NET SDK | 8.0.x |
| Visual Studio Code | Any recent version |
| Inno Setup | 6.x, only needed to build the installer |
Check your SDK:
dotnet --version
BetterWinTab must be built for x64. Building without the platform flag can cause native WinUI dependencies to fail at startup.
dotnet build BetterWinTab.csproj -p:Platform=x64
Build output:
bin\x64\Debug\net8.0-windows10.0.19041.0\
From VS Code, you can also run the predefined task:
Ctrl + Shift + B -> build-x64
Recommended VS Code task:
Ctrl + Shift + P -> Tasks: Run Task -> run-x64
Manual run:
Stop-Process -Name BetterWinTab -Force -ErrorAction SilentlyContinue
dotnet build BetterWinTab.csproj -p:Platform=x64
Start-Process "bin\x64\Debug\net8.0-windows10.0.19041.0\win-x64\BetterWinTab.exe"
Hot reload:
dotnet watch run --project BetterWinTab.csproj -p:Platform=x64 --runtime win-x64
Once the app starts, press Ctrl + Tab to show the overlay.
Create .vscode/launch.json if needed:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug BetterWinTab",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-x64",
"program": "${workspaceFolder}/bin/x64/Debug/net8.0-windows10.0.19041.0/win-x64/BetterWinTab.exe",
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
}
]
}
Then press F5 and use breakpoints in the C# files.
Create a self-contained release build:
dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release
Publish output:
bin\Release\net8.0-windows10.0.19041.0\win-x64\publish\
Publish profiles are available under Properties/PublishProfiles/ for win-x64, win-x86, and win-arm64.
Publish first:
dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release
Then compile the installer with Inno Setup:
& "C:\Program Files (x86)\Inno Setup 6\iscc.exe" installer.iss
Installer output:
installer-output\BetterWinTab-Setup-1.0.0-x64.exe
BetterWinTab is released under the MIT License.
Built by sgm108.