Library / SDK
vrm-c/UniVRM avatar
vrm-c/UniVRM

UniVRM: Importing and Exporting VRM Avatars in Unity

UniVRM is a gltf-based VRM format implementation for Unity. English is here https://vrm.dev/en/ . 日本語 はこちら https://vrm.dev/

3,391 stars490 forksC#MIT

At a glance

What is it?
UniVRM is the reference C# implementation of the VRM avatar format for Unity, built on glTF 2.0. It handles VRM 1.0, VRM 0.x, glTF 2.0 and VRM-Animation files at both editor and runtime, with the main constraint being that it targets Unity 2022.3 LTS or later.
Who is it for?
UniVRM is the right choice if you are building in Unity and need to load, convert or write VRM avatars, especially if you need runtime import through async/await or the migration path from VRM 0.x to VRM 1.0. It is the wrong choice if your pipeline does not run inside Unity, since the library is C# and tied to the engine.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What UniVRM Solves for Unity Avatar Pipelines

VRM is an extension of glTF 2.0 aimed at humanoid avatars, and UniVRM is the standard implementation of that format for Unity. The problem it addresses is concrete: a glTF file describes meshes and PBR materials but says nothing about a humanoid bone mapping, expression blendshapes, or the metadata a virtual avatar needs. UniVRM reads and writes those extra structures.

Who it is for: Unity developers working with avatars, whether that means loading a downloaded .vrm character into a scene, exporting a rigged model to a portable file, or converting older VRM 0.x assets forward to VRM 1.0. The README frames the library as supporting both the VRM 1.0 specification and the glTF 2.0 specification, so it also serves as a general glTF importer for Unity projects that have nothing to do with avatars.

The scope is narrower than a general 3D asset pipeline. UniVRM does not author models, retarget animation across engines, or provide a standalone converter outside Unity. Everything happens inside the editor or inside a Unity runtime build.

How UniVRM Maps glTF and VRM Into Unity Objects

UniVRM is distributed as Unity packages, and the split between them reflects the format versions. A VRM 1.0 workflow needs both com.vrmc.gltf and com.vrmc.vrm. A VRM 0.x workflow needs com.vrmc.gltf and com.vrmc.univrm. A plain glTF 2.0 workflow needs only com.vrmc.gltf. The gltf package is the shared foundation; the format-specific package layers the VRM extensions on top.

On import, the library parses the container (.vrm, .glb, .gltf or .zip) and builds Unity objects from it. The README states that glTF PBR materials are imported into Unity Built-in Render Pipeline Standard materials, and export runs the same mapping in reverse. That matters because it means the conversion is lossy in a predictable direction: the target is the Built-in RP, not URP or HDRP.

Two integration paths are documented. For editor workflows there is a ScriptedImporter for VRM 1.0 and glTF 2.0, so dropping a file into the project triggers import through Unity's asset pipeline. For runtime there is async/await importing, which lets an application load an avatar without blocking. The README also lists migration of VRM 0.x files into VRM 1.0 files as an import feature, which is the practical reason many teams touch this library at all.

Installing UniVRM and Importing a First Avatar

The README points to the latest release page for downloads. There are two installation routes. The UnityPackage route means downloading a .unitypackage from the release and importing it into the project; the file name tells you which format it covers. VRM-0.XXX.X-YYYY.unitypackage handles VRM 1.0 and glTF 2.0, while UniVRM-0.XXX.X-YYYY.unitypackage handles VRM 0.x. Sample projects ship separately as VRM_Samples-0.XXX.X-YYYY.unitypackage and UniVRM_Samples-0.XXX.X-YYYY.unitypackage.

The UPM route uses Unity's Package Manager. In the editor, open Package Manager, click the plus button, and choose Add package from git URL. The README does not print the git URLs themselves; it says they are listed on the latest release page, so copy them from there rather than guessing. For a VRM 1.0 project you add both packages, in this order:

bash
com.vrmc.gltf
com.vrmc.vrm

If you are working with older VRM 0.x assets instead, the second package changes:

bash
com.vrmc.gltf
com.vrmc.univrm

After the packages resolve, the ScriptedImporter takes over. Copy a .vrm file into the Assets folder and Unity imports it as an asset you can drag into a scene. The README does not document the resulting menu names or the exact inspector layout, so check the documentation site at vrm.dev/en for the current editor walkthrough rather than relying on older tutorials. For runtime loading, the relevant capability is async/await importing, which the README lists as a feature but does not illustrate with code.

Where UniVRM Is the Wrong Tool

The hard constraint is the Unity version. The README states that the latest UniVRM requires Unity 2022.3 LTS or later as of v0.128.0. The previous-release table maps older Unity versions to older UniVRM releases and labels those combinations not supported. If you are pinned to Unity 2021.3 or 2020.3, you are on a branch the project has stopped maintaining, and you inherit whatever bugs existed at that point.

Platform testing is also limited. The README lists Standalone (Windows, Mac, Linux), iOS, Android and WebGL as supported build targets and says other platforms may work but are not tested. If you ship to a console or an unusual target, you are outside the tested set.

Render pipeline support is the quieter limitation. Material conversion is documented against the Built-in Render Pipeline Standard shader. Projects built on URP or HDRP will not get a straight material mapping from the import path described in the README, and the README does not describe a URP or HDRP conversion path. Finally, UniVRM is not a general-purpose avatar tool: it will not help you outside Unity, and it will not fix a model whose rig or expression setup does not match the VRM specification in the first place.

UniVRM Compared With Blender and glTF-Only Workflows

The most common alternative for people arriving from outside Unity is the Blender VRM add-on, which exports and imports VRM files from within Blender. The difference in approach is the runtime target. The Blender add-on produces a file; it does not give you a runtime loader, an async import path, or engine-side material conversion. UniVRM is a runtime and editor library, and its value is in the loading, migration and conversion code, not in the file writing alone.

The second alternative is going glTF-only. A project that only needs meshes and PBR materials can use the com.vrmc.gltf package by itself and skip the VRM packages entirely. That is a legitimate choice, and it is the correct one if your assets have no humanoid rig or expression data to preserve. What you give up is the VRM-specific layer: bone mapping, expressions and the metadata that makes an avatar portable between VRM-aware applications.

A third option is a different engine's VRM implementation. The trade-off there is ecosystem alignment rather than capability. If your project is already in Unity, adopting a non-Unity implementation means either moving the avatar pipeline out of the engine or maintaining a conversion step, and the README's migration feature for VRM 0.x to VRM 1.0 exists precisely to avoid rewriting assets when the format moves.

Maintenance, Licensing and Upgrade Cost

The repository is not archived, and the last push was on 2026-08-20. Releases have continued through 2026: v0.131.0 on 2025-12-12, v0.131.1 on 2026-06-19 and v0.131.2 on 2026-07-24. That is a steady cadence rather than a burst, and the version numbering suggests incremental changes rather than format resets.

The upgrade cost is dominated by the Unity version, not by UniVRM itself. Because the latest releases require Unity 2022.3 LTS or later, moving to a current UniVRM means moving your editor version first. The previous-release table exists so that teams on older Unity can stay on an older UniVRM, but the README marks those combinations as not supported, so bug fixes and format updates do not flow back. Plan the Unity upgrade as the real migration.

Licensing is MIT, per the LICENSE.txt file at the repository root and the README's license section. MIT is permissive and places few conditions on redistribution, but the VRM format itself is governed separately by the VRM Consortium, and the README links to that specification repository. Whether a given avatar's licence permits your intended use is a question about the avatar, not about UniVRM. That is a legal question for your own counsel, not something the library's licence answers.

Editorial conclusion

UniVRM is the right choice if you are building in Unity and need to load, convert or write VRM avatars, especially if you need runtime import through async/await or the migration path from VRM 0.x to VRM 1.0. It is the wrong choice if your pipeline does not run inside Unity, since the library is C# and tied to the engine. Before adopting it, confirm your Unity version is 2022.3 LTS or later, decide whether you need the VRM 1.0 packages (com.vrmc.gltf plus com.vrmc.vrm) or the VRM 0.x packages (com.vrmc.gltf plus com.vrmc.univrm), and check whether your target platform is one of the tested ones: Standalone, iOS, Android or WebGL.

Frequently asked questions

How to install UniVRM?

The README gives two routes: download a .unitypackage from the latest release and import it, or add the UPM packages through Package Manager using Add package from git URL, with the URLs listed on the release page. A VRM 1.0 project needs both com.vrmc.gltf and com.vrmc.vrm.

How do I add UniVRM to Unity?

Install the packages as above, then use the ScriptedImporter that the README lists for VRM 1.0 and glTF 2.0, which handles files dropped into the project. The latest UniVRM requires Unity 2022.3 LTS or later.

How can I convert a Unity file to a VRM file?

The README lists export at both runtime and editor as a feature, with Unity Built-in RP Standard materials exported into glTF PBR materials. The specific editor menu for export is not documented in the README; the documentation site at vrm.dev/en covers the workflow.

What is a .vrm file?

It is a 3D avatar file format built as an extension of glTF 2.0. UniVRM supports VRM 1.0 (.vrm), VRM 0.x (.vrm), glTF 2.0 (.glb, .gltf, .zip) and VRM-Animation (.vrma).

How do I get a VRM file?

You can produce one by exporting from Unity with UniVRM, which the README lists as an export feature at both runtime and editor. UniVRM can also migrate an existing VRM 0.x file into VRM 1.0 on import.

Is there an alternative to UniVRM?

The Blender VRM add-on is the common alternative for authoring and exporting VRM files outside Unity, but it does not provide a runtime loader or engine-side material conversion. A project that only needs glTF 2.0 can install just com.vrmc.gltf and skip the VRM packages.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. vrm-c/UniVRM on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/vrm-c-univrm.svg)](https://hysenlabs.com/projects/vrm-c-univrm)