# blender-to-unity-fbx-exporter: An FBX Add-on That Fixes the Unity Axis Mismatch

> This Blender add-on exports FBX files that Unity imports with the correct rotations and scales, by rotating root objects 90 degrees around X during export and restoring the scene afterwards. It targets Blender 3.2 and newer, ships as a single Python file under the MIT licence, and documents two known import quirks.

**EdyJ/blender-to-unity-fbx-exporter** — FBX exporter addon for Blender compatible with Unity's coordinate and scaling system.

- Repository: https://github.com/EdyJ/blender-to-unity-fbx-exporter
- Stars: 1,283 · Forks: 121
- Language: Python
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/edyj-blender-to-unity-fbx-exporter

## Blender and Unity Do Not Agree About Axes

Blender uses a right-handed coordinate system with Z up, and Unity uses a left-handed one with Y up. An asset moved between them therefore arrives rotated, and the usual workflow for dealing with that involves an import setting or an export option that is supposed to cancel the difference out.

The add-on exists because those workarounds do not hold up in every case. The README states the aim plainly: exported FBX files are imported into Unity with the correct rotations and scales. It targets Blender 3.2 and newer, is written in Python, and is distributed as one file, blender-to-unity-fbx-exporter.py, under the MIT licence.

The scope of what is exported is also defined. All Empty, Mesh and Armature objects in the current scene are exported, except those in excluded collections, and the full hierarchy is preserved including local positions and rotations. That last clause is the one that matters, because the axis fix and the hierarchy fix are the same problem seen from two sides.

The author is Angel Edy Garcia, who writes about the tool on vehiclephysics.com, so the context is asset production for a driving simulation rather than a general purpose DCC tool.

## Modify the Scene, Export, Then Put the Scene Back

The mechanism is a temporary edit of the Blender scene rather than a post-processing step on the FBX file. The exporter modifies the objects in the scene right before writing the file, and reverts the modifications afterwards.

The specific change is a rotation of plus 90 degrees around the X axis applied to every object to be exported, done without actually modifying the visual pose of the geometry or of the children. It starts at the root objects and is propagated recursively to the children, which inherit a minus 90 rotation after their parent is transformed. The modified scene is then handed to Blender's built-in FBX exporter with the proper options applied, and finally the scene is restored to the state it was in before the modifications.

The cancellation happens on the Unity side. When Unity imports the FBX file, all objects receive a rotation of minus 90 degrees around the X axis to preserve their visual pose. Since the objects in the file already carry plus 90, the two cancel out and everything lands correctly.

That restore step is what makes the approach safe to use in an interactive session. The alternative would be baking a rotation into the file and leaving the scene wrong, and an artist who exported fifty assets and then noticed their scene had been rotated would have an unpleasant afternoon.

## Why Not the Built-in Apply Transform Option

The README has a dedicated section on this, and the reason it gives is specific rather than a matter of taste. The Experimental - Apply Transform option of the default FBX exporter does not work with object hierarchies of more than two levels. Objects beyond the second level keep receiving unwanted rotation and scaling when they are imported into Unity.

That is a precise and testable claim, and it explains the shape of the whole add-on. The rotation has to be propagated down the hierarchy in a way that a one-shot transform application does not manage, and a hierarchy deeper than two levels is where the default option gives up.

The second rejected alternative is the Bake Axis Conversion option in the Unity import settings, which the README dismisses with the observation that it does not seem to work properly with Blender-generated FBX. The word seems carries some weight, and it is worth noting that this sentence describes observed behaviour rather than a reproduced test, so if your pipeline relies on that option today, the practical step is to try a small export from the add-on and compare it against what you have today rather than taking either claim on trust.

## Why Not Import the .blend File Into Unity

The third alternative considered is skipping FBX entirely and opening the .blend file directly in the Unity project. The README rejects it because it requires Blender to be installed on the system, and lists two consequences that matter commercially.

The first is the Asset Store. Importing a .blend directly is a no-go for publishing packages in the Unity Asset Store, because the end user would need Blender installed to use what you published.

The second is Unity Cloud Build. The README states plainly that .blend files do not work with Unity Cloud Build, which is a hard blocker for any project that builds in the cloud, since the build agent will not have Blender on it.

Both arguments are about the deployment target rather than about file formats, which is the interesting part of this add-on's position. It is not trying to be a better FBX writer in the abstract. It is trying to produce a file that a Unity project can consume without needing any tool other than Unity, which is what makes the asset pipeline shippable to people who are not you.

## Two Known Import Quirks

The known issues section is short and both entries are actionable rather than vague.

The first is negative scaling. A scale of (-1, 1, 1) with no rotation is imported as scale (-1, -1, -1) with a rotation of (-180, 0, 0). The README states that in Unity this is equivalent, and that it may be changed to the original scale of (-1, 1, 1) and rotation of (0, 0, 0) if you prefer. So the geometry ends up in the right place, and the difference is in how the transform is represented.

The second is instanced collections. Child objects in instanced collections receive a rotation of 90 degrees around the X axis, and clearing this rotation in Unity gives the expected result. That issue is tracked as issue 3 in the repository.

Both are cases where a small manual step in Unity produces the expected result, which is a different category of problem from the hierarchy bug the add-on exists to fix. If your assets rely heavily on instanced collections, the second quirk is the one to budget time for.

## The List of Situations That Have Been Tested

The README ends with a tested and working list, and it is the most reassuring part of the document because it is specific. Mixed Empty and Mesh hierarchies with a depth greater than three are covered, which is the case the default exporter fails. Local rotations are preserved, and non-uniform scaling is handled.

The list also covers the Blender features that usually break exporters. Mesh modifiers work. Animations work. Multi-user meshes and linked objects work, both with and without modifiers. Armatures and the Armature modifier work.

The outliner states are covered too, which is where most export scripts quietly drop content. Partial selections are handled through Selected Objects Only. Hidden objects and collections, marked with the eye icon, are handled, and disabled objects, marked with the monitor icon, are imported with the MeshRenderer disabled in Unity rather than being dropped. Disabled collections are handled, excluded collections are not exported at all, and nested collections are supported. An object whose parent sits in a disabled or excluded collection is also covered, and custom object properties survive the export.

The repository layout matches this focus on verification, with a tests/ directory alongside the single add-on file.

## Installing a Single File in Blender and Where the Export Lives

Installation is the standard Blender add-on flow and takes three steps. You clone the repository or download the add-on file blender-to-unity-fbx-exporter.py to your device. In Blender you go to Edit, Preferences, Add-ons and use the Install button with the file browser to select the add-on file. You then enable it with the enable checkbox.

Using it afterwards is a menu item. The export is under File, Export, Unity FBX (.fbx), and the File Browser it opens exposes selection and armature options, so you can choose to export only the selected objects and you can set armature related behaviour at export time.

The project publishes no GitHub releases, so the add-on is used by downloading the file from the repository rather than by installing a tagged package, and there is no update mechanism beyond replacing the file. The repository is not archived and the last push was on 2026-04-16, which is worth weighing if this add-on ends up in a production asset pipeline that you need to keep working.

## Conclusion

The add-on fits a pipeline where Blender produces assets for Unity and the built-in exporter options do not survive a hierarchy deeper than two levels, and it does not fit a project that does not use Blender, that only imports static single-object meshes, or that has already solved the axis problem with a different pipeline. Before adopting it, check the known issues, because negative scaling is imported as an equivalent but different transform and children of instanced collections still arrive rotated 90 degrees around X, and note the maintenance position, since the repository has no releases and the last push was on 2026-04-16. The add-on is MIT licensed and installs as a single Python file through the Blender preferences add-on browser.

## FAQ

### How do I install the Blender to Unity FBX exporter?

Clone the repository or download blender-to-unity-fbx-exporter.py, then in Blender go to Edit, Preferences, Add-ons, use the Install button to select the file, and enable the add-on with the checkbox. It targets Blender 3.2 and newer.

### How does the exporter fix the coordinate mismatch with Unity?

It temporarily rotates every exported object by plus 90 degrees around the X axis, propagating it from the root objects down to the children, exports with Blender's built-in FBX exporter, and then restores the scene. Unity applies minus 90 degrees on import, so the two rotations cancel and the visual pose is preserved.

### Why not use the Experimental Apply Transform option of the default FBX exporter?

The README says it does not work with object hierarchies of more than two levels, and that objects beyond the second level keep receiving unwanted rotation and scaling when imported into Unity. The add-on is built to handle deeper hierarchies.

### What are the known issues with the exported FBX?

Negative scaling is imported with a different but equivalent transform, so a scale of (-1, 1, 1) arrives as (-1, -1, -1) with a rotation of (-180, 0, 0). Child objects in instanced collections also receive a 90 degree rotation around the X axis, which can be cleared in Unity.

### What does the exporter include in the file?

All Empty, Mesh and Armature objects in the current scene except those in excluded collections, with the full hierarchy preserved including local positions and rotations. The File Browser exposes selection and armature options, and the README lists animations, modifiers, armatures, custom properties and the various outliner visibility states as tested and working.

## Sources

- [EdyJ/blender-to-unity-fbx-exporter on GitHub](https://github.com/EdyJ/blender-to-unity-fbx-exporter)
- [Issues](https://github.com/EdyJ/blender-to-unity-fbx-exporter/issues)
- [License: MIT](https://github.com/EdyJ/blender-to-unity-fbx-exporter/blob/master/LICENSE)
- [README](https://github.com/EdyJ/blender-to-unity-fbx-exporter/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/edyj-blender-to-unity-fbx-exporter
