AlwaysOnTop is a lightweight, portable Windows System Tray application that allows you to keep selected application windows visible above other windows.
Whether you're monitoring information, keeping a reference window visible, or working across multiple applications, AlwaysOnTop gives you control over which windows stay on top.
Unlike simple topmost toggles, AlwaysOnTop can remember pinned applications across restarts, automatically re-pin reopened windows, manage multi-process application suites, handle elevated Administrator windows, and preserve relative window stacking order.
No installer. No third-party dependencies. No unnecessary background services.
Download the latest version of AlwaysOnTop
Download AlwaysOnTop.exe from the release assets and run it on Windows 10 or Windows 11.
- No installation required.
- No third-party dependencies.
- Requires .NET Framework 4.x.
- Administrator privileges are only needed when managing certain elevated applications.
Note: Windows SmartScreen may display a warning because the executable is not digitally signed. The complete source code is available in this repository for inspection.
AlwaysOnTop features a clean Windows interface with Light, Dark and System theme support.
The System theme automatically follows your Windows Light/Dark appearance setting, including changes made while the utility is running.
- 📌 Always on Top pinning — Keep individual or multiple application windows above other windows.
- 🔄 Persistent application pinning — Automatically restore Always on Top status when pinned applications are reopened.
- 🎯 Interactive window picker — Select a visible window directly from your desktop using a crosshair.
- 🖥️ Process-level management — Target applications that don't appear in conventional window lists.
- 🛡️ Administrator support — Detect elevated processes and optionally restart the utility with Administrator privileges.
- 🧩 Multi-process application support — Manage related windows belonging to complex application suites.
- 🪟 Intelligent Z-order handling — Preserve the relative stacking order of multiple pinned windows.
- 🌗 Light, Dark and System themes — Choose your preferred appearance or follow Windows automatically.
- ⌨️ Global keyboard shortcut — Toggle Always on Top for the active window using
Ctrl + Alt + T. - 🚀 Windows startup integration — Optionally launch automatically and start minimised to the System Tray.
- 🪶 Lightweight and portable — Approximately 65 KB, written in C# using native Windows APIs.
- Windows 10 or Windows 11
- .NET Framework 4.x
- Administrator privileges only when managing certain elevated applications
- Open the latest release.
- Download
AlwaysOnTop.exefrom the Assets section. - Save the executable to a folder of your choice.
- Double-click
AlwaysOnTop.exeto launch the utility. - Select an application to pin or use the interactive window picker.
No traditional installation is required.
Note: AlwaysOnTop runs in the System Tray. Closing the main window minimises the application rather than terminating it. Use Quit Utility to exit completely.
The fastest way to pin a window is to bring it into focus and press:
Ctrl + Alt + T
Press the shortcut again to toggle its Always on Top status.
The Running Applications panel (top-left) displays currently visible standard application windows.
- Browse all detected application windows.
- Use the real-time search filter to find an application.
- Select one or more applications.
- Click 📌 Pin Selected App, or double-click a row to pin immediately.
Ideal for everyday Windows applications.
The Running Windows Processes panel (top-right) provides access to active Windows processes.
It displays:
- Process name
- Process ID (PID)
- Detected window status
A live search filter makes it easy to locate a particular process.
This method is useful for applications that use non-standard windows, borderless interfaces, tray-hosted components or multiple background processes.
The interactive picker lets you select a window directly from the desktop without needing to know its process name.
- Click 🎯 Pick Window on Screen in the application header.
- Your mouse pointer changes to a crosshair (
+). - Move the pointer over the window you want to pin.
- A floating information banner displays the detected application, window title and PID.
- Left-click the target window to pin it.
To cancel the picker, press Esc, right-click, or click an empty desktop or taskbar area.
AlwaysOnTop does more than temporarily apply a topmost flag.
Pinned applications are remembered in the configuration file:
AlwaysOnTop.settings.json
If you close a pinned application and reopen it later, AlwaysOnTop automatically detects its new window and reapplies the Always on Top status.
This is particularly useful for applications that restart or recreate their windows during normal operation.
The Always on Top Applications panel displays your saved pinned applications.
You can:
- Double-click an entry to unpin it.
- Select entries and click ✕ Remove Selected from Always on Top.
- Click Remove All from Always on Top to clear all pinned applications.
Selecting Quit Utility removes the Always on Top flag from currently managed windows before the utility exits.
This ensures that a normal shutdown does not intentionally leave applications stuck on top.
Windows User Interface Privilege Isolation (UIPI) restricts certain interactions between applications running at different privilege levels.
This can prevent standard-user utilities from reliably managing windows belonging to elevated applications.
AlwaysOnTop includes:
- Detection of elevated target processes.
- A convenient 🛡️ Run as Administrator option.
- Support for managing elevated application windows when running with appropriate privileges.
Security: Administrator privileges are not required for normal operation. Only elevate AlwaysOnTop when necessary.
Some Windows applications use multiple processes to manage different parts of their interface. These processes may create separate windows, making conventional Always on Top utilities less reliable.
AlwaysOnTop includes process-family matching to identify related processes and manage their associated windows together.
This helps maintain consistent Always on Top behaviour for applications with complex, multi-process architectures, without requiring users to identify and pin every related process individually.
Certain applications use custom window frameworks or non-standard window handling that doesn't always respond reliably to conventional topmost operations.
AlwaysOnTop uses native Win32 functionality, including:
SetWindowPosHWND_TOPMOSTAttachThreadInput
A thread-input attachment fallback provides additional handling for windows that require it.
When several applications are pinned simultaneously, conventional topmost utilities can sometimes cause background pinned windows to jump in front of the active window.
AlwaysOnTop addresses this by applying topmost status in back-to-front Z-order.
This helps maintain the relative stacking order of pinned applications, so the window you're actively using isn't unnecessarily obscured by another pinned window.
AlwaysOnTop supports three appearance modes:
| Theme | Description |
|---|---|
| System | Automatically follows Windows Light/Dark mode |
| Light | Clean, light Windows interface |
| Dark | Dark slate interface with matching controls and title bar |
To change themes, right-click the System Tray icon and select Theme.
The System theme automatically responds to Windows appearance changes while the utility is running.
AlwaysOnTop is designed to operate quietly in the background.
Closing the application window using X or Minimize to Tray keeps the utility running in the System Tray.
You can reopen the manager using the tray icon or exit completely using Quit Utility.
Enable Start automatically on Windows start to launch AlwaysOnTop when you sign in.
The utility uses the current-user Windows startup registry location:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Enable Start minimised to System Tray to launch directly into the background without displaying the main manager window.
| Action | Shortcut / Control |
|---|---|
| Toggle Always on Top for active window | Ctrl + Alt + T |
| Pin an application or process | Select + Pin, or double-click |
| Unpin a pinned application | Select + Remove, or double-click |
| Pick a window from the desktop | 🎯 Pick Window on Screen |
| Cancel window picker | Esc, right-click or click empty desktop |
| Change theme | Tray icon → Theme |
| Open the manager | Left-click or double-click tray icon |
| Quit completely | Quit Utility |
AlwaysOnTop is written in C# using Windows Forms and native Win32 APIs through P/Invoke.
It can be compiled using the C# compiler supplied with the Windows .NET Framework installation.
No Visual Studio installation or third-party NuGet packages are required.
Open a Command Prompt and run:
git clone https://github.com/LibbyLamarr/AlwaysOnTop.git
cd AlwaysOnTopRun the included build script:
build.batThe script invokes the .NET Framework C# compiler:
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe
The build produces:
AlwaysOnTop.exe
The resulting executable is approximately 65 KB and requires no additional third-party packages.
AlwaysOnTop/
├── screenshots/
│ ├── AlwaysOnTop-Light.png
│ └── AlwaysOnTop-Dark.png
├── AlwaysOnTop.cs
├── app.ico
├── build.bat
├── README.md
└── LICENSE
| File | Description |
|---|---|
AlwaysOnTop.cs |
Complete C# application source, WinForms UI, Win32 integration and window management engine |
app.ico |
Multi-resolution application and System Tray icon |
build.bat |
Build script using the .NET Framework C# compiler |
screenshots/ |
Light and Dark theme application screenshots |
README.md |
Project documentation |
LICENSE |
MIT License |
The compiled AlwaysOnTop.exe is available from the repository's Releases page.
The utility also generates:
AlwaysOnTop.settings.json
This JSON file stores pinned application information, startup preferences and theme settings.
AlwaysOnTop is implemented using C# Windows Forms and native Windows APIs.
Its primary components include:
- Window discovery: Enumerates visible application windows and running processes.
- Window picker: Uses mouse and keyboard hooks to identify windows directly from the desktop.
- Topmost engine: Applies and maintains window topmost status through Win32 APIs.
- Persistent configuration: Stores pinned applications and user preferences in JSON.
- Process matching: Identifies applications and related multi-process suites.
- Z-order management: Preserves relative stacking order between pinned windows.
- System Tray integration: Provides background operation and application controls.
- Theme engine: Supports Windows appearance integration and custom Light/Dark rendering.
The application is contained in a compact C# codebase, making it straightforward to inspect, modify and compile.
- Windows only: AlwaysOnTop uses Windows-specific APIs and is not compatible with macOS or Linux.
- Elevated applications: Some Administrator-level windows may require the utility to run with elevated privileges.
- Protected windows: Windows security restrictions may prevent interaction with certain protected or system-level windows.
- Exclusive fullscreen applications: Always on Top behaviour is not guaranteed for exclusive fullscreen games or applications.
- Application-specific behaviour: Some applications may override topmost settings or use unusual window management techniques.
AlwaysOnTop is designed for standard Windows desktop environments and cannot override every operating-system-level restriction.
AlwaysOnTop is a personal project, shared in case others find it useful. It has been developed with AI assistance, and I am continuing to test, refine and improve its features.
Suggestions, bug reports and contributions are welcome through GitHub Issues.
AlwaysOnTop is released under the MIT License.
See the LICENSE file for details.
AlwaysOnTop started as a personal project to have an always on top utility and as an alternative to using Windows Power Toys, which I previously been using solely for this feature.
I've made it freely available in case it can be of use to others.
If you enjoy using AlwaysOnTop and would like to offer support, you're very welcome to buy me a coffee! It's entirely optional, but always appreciated.
Thank you for looking at AlwaysOnTop :)
📌 AlwaysOnTop — Keep the windows that matter exactly where you need them.

