/ ... / VST 3 Locations / Format

Plug-in Format Structure

On this page:

Related pages:


For the macOS platform

On the macOS platform, VST 3 Plug-in is a standard macOS bundle, its file extension is ".vst3" and has the following folder structure:

FolderDescription
MyPlugin.vst3/Contents/Resources/folder contains all additional resource files useful for the plug-in
MyPlugin.vst3/Contents/MacOS/folder contains the plug-in’s macOS universal binary (Mach-O)
MyPlugin.vst3/Contents/moduleinfo.jsonthe plug-in’s moduleinfo
MyPlugin.vst3/Contents/Info.plistthe plug-in’s property list
MyPlugin.vst3/Contents/PkgInfospecifies the type and creator codes of the bundle (optional)

For the Windows platform

On the Windows platform, a VST 3 Plug-in is organized as a bundle like package format (simple folder), its file extension is ".vst3" and has the following folder structure:

FolderDescription
MyPlugin.vst3/Contents/Resources/folder contains all additional resource files useful for the plug-in
MyPlugin.vst3/Contents/x86-win/MyPlugin.vst3folder contains the plug-in binary (32 bit dll for i386 architecture)
MyPlugin.vst3/Contents/x86_64-win/MyPlugin.vst3folder contains the plug-in binary (64 bit dll for x86_64 architecture)
MyPlugin.vst3/Contents/arm64ec-win/MyPlugin.vst3folder contains the plug-in binary (64 bit dll for Arm64EC architecture).
Recommended archi for Windows on Arm64!
MyPlugin.vst3/Contents/arm-win/MyPlugin.vst3folder contains the plug-in binary (32 bit dll for Arm classic architecture)
MyPlugin.vst3/Contents/arm64-win/MyPlugin.vst3folder contains the plug-in binary (64 bit dll for Arm64 classic architecture)
MyPlugin.vst3/Contents/moduleinfo.jsonthe plug-in’s moduleinfo
MyPlugin.vst3/desktop.iniused to set custom icon in Windows Explorer
MyPlugin.vst3/Plugin.icocustomized plug-in icon

Note
In previous SDKs, the VST 3 Plug-in was defined as a single dll file with the .vst3 extension. This is deprecated since VST 3.6.10.

The file desktop.ini should contain:

desktop.ini

[.ShellClassInfo]
IconResource=Plugin.ico,0

and you should then change their attributes with this command line (s for system to make sure that Windows will use it for the folder/bundle, r for read-only and h for hidden (optional)):

attrib +s +r +h desktop.ini
attrib +r +h Plugin.ico

Limitation for loading Plug-in DLL in a Host (inside the same process)

See Microsoft Blogs about this:

OSPC ArchitectureHost Process AppCompatible Plug-in Architectures
Windows 10Intel x86Intel x86Intel x86
Windows 10/11Intel x64Intel x64Intel x64*
Windows 10/11Intel x64Intel x86Intel x86
Windows 10/11Arm64Arm64 ClassicArm64 Classic
Windows 11Arm64Arm64ECArm64EC, Intel x64
Windows 11Arm64Intel x64Arm64EC, Intel x64

"TLDR: Please offer both Arm64EC and x64 versions of your DAWs and plug-ins, and please stay up to date with the latest developer tooling and SDKs." (Pete Brown (Microsoft))

Note
With out of process (Inter-Process Commnunication) a Host could overriden these limitations, by allowing for example a Host Arm64 Classic to handle an Arm64EC Plug-in.

For the Linux platform

On Linux, a VST 3 Plug-in is organized as a bundle like package format, its file extension is ".vst3", it follows this folder structure:

FolderDescription
MyPlugin.vst3/Contents/Resources/folder contains all additional resource files useful for the plug-in
MyPlugin.vst3/Contents/i386-linuxfolder contains the plug-in binary (32 bit shared library .so for Kernel Architecture i386)
MyPlugin.vst3/Contents/x86_64-linuxfolder contains the plug-in binary (64 bit shared library .so for Kernel Architecture x86_64)
MyPlugin.vst3/Contents/XXX-linuxwith XXX the architecture name based on the output of command-line "uname -m" (machine hardware) + "-linux" for example: • armv3l-linux
• armv4b-linux
• armv4l-linux
• armv5tel-linux
• armv5tejl-linux
• armv6l-linux
• armv7l-linux
• armv8l-linux
MyPlugin.vst3/Contents/moduleinfo.jsonthe plug-in’s moduleinfo

Merged Bundle

Note that all the bundles can be merged to one, which allows to have a cross-platform bundle/folder.

For example:

MyPlugin.vst3/
    |_ Contents/
    |   |__ Resources/
    |   |   |__ Documentation/
    |   |   |   |__ Manual.pdf
    |   |   |   |__ WhatsNew.pdf
    |   |   |__ Help/
    |   |   |   |__ helpdoc.xml
    |   |   |__ Snapshots/
    |   |   |   |__ 84E8DE5F92554F5396FAE4133C935A18_snapshot.png
    |   |   |   |__ 84E8DE5F92554F5396FAE4133C935A18_snapshot_2.0x.png
    |   |   |__ VST XMLs
    |   |   |   |__ AGain/
    |   |   |       |__84E8DE5F92554F5396FAE4133C935A18/
    |   |   |           |__Generic 8 Cells.xml
    |   |   |           |__WK-Audio ID 8 Cells.xml
    |   |   |__ MyPlugin.srf
    |   |
    |   |__ armv7l-linux/
    |   |   |__ MyPlugin.so
    |   |
    |   |__ i686-linux/
    |   |   |__ MyPlugin.so
    |   |
    |   |__ i386-linux/
    |   |   |__ MyPlugin.so
    |   |
    |   |__ x86_64-linux/
    |   |   |__ MyPlugin.so
    |   |
    |   |__ MacOS/
    |   |   |__ MyPlugin
    |   |
    |   |__ x86_64-win/
    |   |   |__ MyPlugin.vst3
    |   |
    |   |__ arm_64_ec-win/
    |   |   |__ MyPlugin.vst3
    |   |
    |   |__ moduleinfo.json
    |   |__ Info.plist  (macOS Only)
    |   |__ PkgInfo     (macOS Only)
    |
    |____desktop.ini    (Windows only)
    |___ Plugin.ico     (Windows only)