MANIFEST File Documentation
Summary
A .manifest file is a Windows application manifest: an XML document that tells the operating system how to run a program — which shared-library versions it needs, whether it requires administrator rights (UAC), and its DPI and compatibility settings. It is plain UTF-8 text with the MIME type application/xml, so you can read it in Notepad or Notepad++. You don't run it; Windows reads it automatically when launching the matching .exe. Editing one is a developer task.
Technical details
| Feature | Value |
|---|---|
| Full name | Windows Application Manifest (side-by-side assembly manifest) |
| File extension | .manifest |
| MIME type | application/xml |
| Format type | XML metadata file (UTF-8 text) |
| Developer | Microsoft |
| Introduced | Windows XP (2001); UAC manifests since Windows Vista (2007) |
| Open standard | No — Microsoft schema (well-formed XML) |
| Magic number | None — XML text, typically starts <?xml or <assembly |
| Root element | <assembly> in namespace urn:schemas-microsoft-com:asm.v1 |
| Delivery | Embedded in the .exe/.dll as a resource, or external App.exe.manifest |
| Declares (UAC) | requestedExecutionLevel: asInvoker / highestAvailable / requireAdministrator |
| Declares (display) | DPI awareness, common-controls visual styles |
| Declares (deps) | Dependent assemblies (e.g. Common Controls v6, VC++ runtime) |
| Declares (compat) | supportedOS GUIDs, long-path awareness |
| Tooling | Visual Studio, mt.exe (manifest tool) |
| Same-name others | Java MANIFEST.MF (text), PWA web app manifest (JSON) |
| Related extensions | .xml, .exe, .dll, .config, .application |
| Category | System / configuration |
| Specification URL | learn.microsoft.com/windows/win32/sbscs/application-manifests |
What is a .manifest file?
On Windows, a .manifest file is an XML document that describes how an executable should be loaded and run. Microsoft calls it an application manifest or side-by-side (SxS) assembly manifest. It was introduced with Windows XP in 2001 to solve "DLL hell": a manifest lets a program declare exactly which versions of shared components it depends on, so Windows binds the right ones instead of whatever happens to be installed globally. Since Windows Vista (2007), manifests also carry the User Account Control (UAC) privilege level, which is why a program does or does not prompt for administrator rights when you launch it.
A manifest is developer-facing metadata, not user content. It is plain UTF-8 XML, so it opens in any text editor, but you never "run" it — Windows reads it automatically when it launches the matching program. Most users meet a loose .manifest file only by finding a MyApp.exe.manifest in a program's folder and wondering what it is. The sections below cover the XML structure, the UAC level and the DPI/compatibility settings a manifest carries, how it is embedded into or shipped beside an executable, and why the same word is reused by unrelated formats. The authoritative reference is Microsoft's application-manifest documentation.
The XML structure
A manifest is a small, well-formed XML tree. It usually opens with an XML declaration, then an <assembly> root element in the Microsoft assembly namespace, and inside it a handful of elements that each control one aspect of how the program loads.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="MyCompany.MyApp"
version="1.0.0.0" processorArchitecture="amd64"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security><requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges></security>
</trustInfo>
<dependency><dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="amd64"
publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly></dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>
<assemblyIdentity> names this application or assembly with a name, version and processor architecture. <dependency> lists shared components the app needs — the example pulls in Common Controls version 6, which is what gives an app the modern themed buttons and dialogs instead of the flat Windows 95 look. <trustInfo> carries the UAC level, and <application> → <windowsSettings> holds display and compatibility settings. Note that different sub-trees use different namespace versions (asm.v1, asm.v3), which is normal for manifests.
The requestedExecutionLevel and UAC
The single most consequential field is requestedExecutionLevel inside <trustInfo>. It declares the privilege the program asks Windows for at launch, and it takes one of three values. asInvoker runs the app with the same rights as whatever started it, with no elevation prompt — the correct default for most programs. highestAvailable requests the highest privileges the user can grant. requireAdministrator forces an elevation prompt every time, and the program will not start without administrator rights. This one attribute is why some installers and system tools always show the UAC consent dialog while ordinary apps do not: Windows reads the level from the manifest before the program's own code runs.
DPI awareness and OS compatibility
Beyond privileges, a manifest tunes how the program renders and which Windows versions it targets. The dpiAware (and newer dpiAwareness) setting tells Windows the app scales itself for high-resolution displays; without it, Windows bitmap-stretches the app on a 4K monitor, producing the blurry text people often try to fix. The <compatibility> section lists supportedOS GUIDs, one per Windows release the app has been tested against, which affects how certain compatibility shims behave. A longPathAware setting opts the app into path lengths beyond the old 260-character MAX_PATH limit. All of these are declarative: the app doesn't call an API to request them, it states them in the manifest and Windows applies them at load time.
Embedded versus external manifests
A manifest reaches Windows one of two ways. It can be embedded as a resource inside the .exe or .dll itself (resource type RT_MANIFEST, ID 1), which is the usual production form — there is no loose file, and the manifest travels inside the binary. Or it can ship as an external file in the same folder, named after the program: MyApp.exe.manifest. Windows checks for the external file and uses it if present. Developers embed a manifest with Visual Studio's project settings or with the manifest tool mt.exe (mt.exe -manifest App.manifest -outputresource:App.exe;1). This is why finding a loose .manifest next to a program matters: some apps rely on that external file and fail to launch if you delete it.
The same name, different formats
"Manifest" is reused across ecosystems, and the bare .manifest extension is only the Windows meaning. Inside a Java .jar archive, META-INF/MANIFEST.MF is a plain-text (not XML) manifest listing the main class and JAR attributes. Progressive web apps use a JSON web app manifest (usually manifest.json or manifest.webmanifest) describing the installable app's name and icons. Build tools and game engines write asset or cache manifests as text or JSON listing bundled files. These share the word but not the format — if a file called "manifest" is JSON or a plain key-value list rather than an <assembly> XML tree, it is one of these other kinds, not a Windows application manifest.
Frequently asked questions
How do I open a .manifest file?
It is XML text, so open it in Notepad, Notepad++ or VS Code to read it. You don't normally run it; Windows reads it automatically when launching the related .exe. You can also rename a copy to .xml to view it in an XML editor.
Can I delete a .manifest file?
If it sits next to a program as MyApp.exe.manifest, no — some apps won't start without it. Build or temporary manifests inside a developer's project folder are usually safe to remove. When in doubt, keep it.
What is the difference between a .manifest file and MANIFEST.MF?
Different things that share the name. A Windows .manifest is XML describing how to run an app; MANIFEST.MF inside a Java .jar is a plain-text file listing the JAR's main class and attributes. They are not interchangeable.
References
- Microsoft — Application manifests (Win32)
- Microsoft — requestedExecutionLevel (UAC) in manifests
- Microsoft — Manifest tool (mt.exe)
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.