What DAWs use to differentiate plugins?

I have the following use case:

On macOS, I build my plugin with all debug symbols and I generate a “~/Library/Audio/Plug-ins/VST3/VAC-6V_Debug.vst3” folder.

I also build for “release” without debug symbols and I generate a “~/Library/Audio/Plug-ins/VST3/VAC-6V.vst3” folder.

When I use the VST3 Plugin Test host that comes with the SDK it only shows me one plugin.

So my question is, what needs to be different between these 2 bundles so that they get picked up as 2 different plugins by the DAWs?

Clearly the name of the folder seems to be irrelevant, so what is relevant?


Each VST3 plugin is identified by its UID defined in the processor component not by its name or filename.

BEGIN_FACTORY_DEF ("Steinberg Media Technologies", 

	//---First Plug-in included in this factory-------
	// its kVstAudioEffectClass component
				PClassInfo::kManyInstances,	// cardinality

here it is AGainProcessorUID

Yes I do confirm that it works… here is what I ended up doing:

#ifndef NDEBUG
static const ::Steinberg::FUID JambaTestPluginProcessorUID(0x1a410f8a, 0xbfb94a04, 0x9cf832e0, 0xd3f0e2ee);
static const ::Steinberg::FUID JambaTestPluginControllerUID(0xf831107a, 0x489b4284, 0xbe16d9db, 0xe12bb012);
#define stringPluginName "JambaTestPlugin_Debug"
static const ::Steinberg::FUID JambaTestPluginProcessorUID(0xaa3926ff, 0x6d324b93, 0x80f3f867, 0x9545fa05);
static const ::Steinberg::FUID JambaTestPluginControllerUID(0xbe691f77, 0x73d04d92, 0x9ef55ad4, 0x4cc563c8);
#define stringPluginName "JambaTestPlugin"

BEGIN_FACTORY_DEF ("pongasoft",

    // JambaTestPluginProcessor processor
    DEF_CLASS2 (INLINE_UID_FROM_FUID(JambaTestPluginProcessorUID),
                PClassInfo::kManyInstances,  // cardinality
                kVstAudioEffectClass,        // the component category (do not changed this)
                stringPluginName,            // here the Plug-in name (to be changed)
                Vst::kDistributable,         // means that component and controller could be distributed on different computers
                Vst::PlugType::kFx,          // Subcategory for this Plug-in (to be changed)
                FULL_VERSION_STR,            // Plug-in version (to be changed)
                kVstVersionString,           // the VST 3 SDK version (do not changed this, use always this define)
                pongasoft::test::jamba::RT::JambaTestPluginProcessor::createInstance)  // function pointer called when this component should be instantiated


I end up using different IDs based on NDEBUG (Debug vs Release build) as well as a different name so that it can be differentiated in the list of plugins (which usually shows the name not the UIDs…)