# LV2 host doesn't read plug-in version

**URL:** <https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362>\
**Category:** Audio Plugins\
**Created:** [August 24, 2026, 9:56am UTC](https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362 "2026-08-24T09:56:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mgrand](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/mgrand/32/14447_2.png) [@mgrand](https://forum.juce.com/u/mgrand)\
**Post date:** [August 24, 2026, 9:56am UTC](https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362/1 "2026-08-24T09:56:45Z")

</div>

Hi all,

While adding LV2 support to a plug-in host, I noticed that `PluginDescription::version` always comes back empty for LV2 plug-ins, even though the LV2 manifest clearly has version info in it.

On the plug-in side, JUCE writes version info into `dsp.ttl` correctly, but on the host side, `LV2PluginFormat::getDescription()` never reads any of that back out. It populates all other fields but `result.version` is simply left as empty.

Is this a known limitation?

Thanks

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [August 26, 2026, 7:35am UTC](https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362/2 "2026-08-26T07:35:52Z")

</div>

Thanks, that’s added here:

> <https://github.com/juce-framework/JUCE/commit/d8c45cbb4ad2a3bd3cfab1d5056b9902bc14fc06>

---

<div class="post-metadata">

**Author:** ![mgrand](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/mgrand/32/14447_2.png) [@mgrand](https://forum.juce.com/u/mgrand)\
**Post date:** [September 18, 2026, 8:29am UTC](https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362/3 "2026-09-18T08:29:32Z")

</div>

Thanks @reuk!

I think it might be better to read the `doap:revision` field instead though, which JUCE populates with `JucePlugin_VersionString`.  
Because of LV2 not having any `lv2:majorVersion` field for some reason, a JUCE plug-in with version “1.2.3” is read “2.3” with the current fix.  
Perhaps we could check `doap:revision` first and construct from minor/micro version numbers as a fallback?

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [September 18, 2026, 10:19am UTC](https://forum.juce.com/t/lv2-host-doesnt-read-plug-in-version/69362/4 "2026-09-18T10:19:52Z")

</div>

I’m not sure about this. The `lv2` version fields are the ‘official’ way for the plugin to communicate its version information. There’s no major version because all plugins with the same lv2 URI _must_ be compatible. Making a breaking change that would require a new major version implies that the plugin URI should change.

I suppose the issue is that there’s some tension between the JUCE version number, which is somewhat freeform, and the semantics of the LV2 version components, which have specified meanings. Using the JUCE version number for an LV2 plugin requires that the JUCE versioning also obey the LV2 versioning rules.

The [docs here](https://lv2plug.in/ns/lv2core#minorVersion) have more information about LV2 versioning.
