If your head asset no longer passes the dynamic head validation, you need to fix and reupload your head asset to the Marketplace. You do not need to update the body when the head was published as part of a body bundle. You just need to update the head asset.
This guide provides detailed information on how to perform a manual fix by re-caging your asset using a provided cage template using the following 5 main steps:
- Re-validate your catalog head asset to confirm issues.
- Export your head (or body bundle) from Roblox as a glTF.
- Fix your Head asset in Blender.
- Import your fixed head back into Studio.
- Provide the asset ID of your updated head to Roblox.
1. Verify the catalog head asset fails validation
Roblox recently updated the dynamic head validation parameters to allow more existing catalog heads to pass validation while still enforcing that all heads in the catalog are dynamic. It's important to double check that your head still fails validation before proceeding with the rest of the steps.
Open a new Roblox Studio and verify you have the beta feature glTF Export enabled (you might need to restart Studio to pick up the new setting)
- Verify your beta settings in File > Beta Features.
Run the following script in the command bar.
- You have the option to provide either the head id (asset ID) or the bundle id (for a full body bundle) . Just replace my_asset_id with the correct ID and remove the leading -- to run
- Uncomment createExportFromHeadAssetId(your_asset_id) to retrieve only the head asset
- Uncomment createExportFromBodyBundleId(your_bundle_id) to retrieve the full body as a bundle (includes the head)
local AssetService = game:GetService("AssetService")local Players = game:GetService("Players")local function createExportFromHeadAssetId(assetId: number)local hd = Instance.new("HumanoidDescription")hd.Head = assetIdlocal char = Players:CreateHumanoidModelFromDescriptionAsync(hd, Enum.HumanoidRigType.R15)local headMesh = char.Head :: MeshPartheadMesh.Size = headMesh.MeshSizeheadMesh.CFrame = CFrame.identityheadMesh.Locked = falselocal exportModel = Instance.new("Model", workspace)exportModel.Name = "ExportThisAsGLTF"headMesh.Parent = exportModelendlocal function getOutfitId(bundleInfo)for _, item in pairs(bundleInfo.Items) doif item.Type == "UserOutfit" thenreturn item.Idendenderror("Could not find outfit ID")endlocal function createExportFromBodyBundleId(bundleId: number)local bundleInfo = AssetService:GetBundleDetailsAsync(bundleId)local outfitId = getOutfitId(bundleInfo)local hd = Players:GetHumanoidDescriptionFromOutfitIdAsync(outfitId)local char = Players:CreateHumanoidModelFromDescriptionAsync(hd, Enum.HumanoidRigType.R15)char:PivotTo(CFrame.identity)char.Name = "ExportThisAsGLTF"char.Parent = workspaceend-- createExportFromHeadAssetId(your_asset_id)-- createExportFromBodyBundleId(your_bundle_id)Once the script runs, you will see a "ExportThisAsGLTF" model in workspace. Right-click and select Save To Roblox. This will popup the publish window:
- In Content type, select Avatar Item.
- In Asset Category, select Head or Body (if you used a body bundle).
- Wait for the validation result.
- If the dynamic head validation passes then you don't have to update this asset.
- Cancel the publish operation (so you don't incur fees).
If your asset failed the dynamic head validation then you need to continue with the following steps.
2. Export Your Head from Roblox
Export your head or entire body from Blender as a glTF file:
- In the explorer, right-click on the "ExportThisAsGLTF" model and select Save/Export > Save as glTF.
3. Fix your Head asset in Blender
Fix your asset in Blender, or preferred 3D modeling software. In many cases, you may save time using a brand new head cage and fitting the cage over your character head. You may also see other validation issues that need to be addressed from the first step.
In Blender, open a new empty scene and import the glTF file.
- In the glTF import settings, disable Guess Original Bind Pose.

Ensure everything you need for the head is present, including the cage, attachment points, facial joints and facial animations.
Roblox Studio flips avatars by 180 degrees on import, so you need to rotate your asset back by 180 in Blender (Hotkeys: R+Z then type 180).
Most often heads fail validation due to cage issues. For example, the cage may be completely inside the head, has incorrect UVs or looks completely misplaced in the model. In most cases we recommend you do not spend time editing the original cage and instead:
- Delete it from the asset.
- Select the cage from the head template in this folder that best matches the shape of your head asset. These are Roblox provided templates for cages with the correct UV settings.

Ensure the Blender animation start value is set to 0.
Remove vertex colors. In Blender this can be done by clicking on the mesh and then under the data tab selecting color attributes and removing any that exist.

If needed, remove vertex color shading nodes for fbx export. The blender fbx exporter is more picky then glTF and won't accept nodes in between the texture input and the shader.


Modify your head asset to pass validation:
- Align cage eyes and mouth regions to the head.
- Ensure your head includes a rig, with poses keyframed and mapped to the FACs standard so that:
- Eyes must blink.
- Mouth must open and close.
- Face must express happy and sad.
Export your updated head asset to FBX file format using the correct settings explained here (If you have PBR, you may want to use glTF).
- Setup textures for FBX export (if needed). Blender will import the glTF textures in such a way that they won't be able to be exported in an FBX file by default. 1. To fix this go through each image and save it to your disk locally.

4. Import your fixed head back into Studio
Import your head back into Studio and verify that it passes validation. If validation fails, check the error messages and address the issues in your 3D modeling software again. If validation passes, use the following steps to upload as a Development Item (not Avatar item).
Import the FBX/glTF file with your (fixed) head asset back into Studio.
- Your fixed head must contain: head mesh, cage mesh, face rig, and updated textures (if you modified them).
- Later, you will save these assets as a Model in Studio (not as an individual asset such as the head mesh).
Make sure your head asset passes validation.
- The easiest way to accomplish this is:
- Select Save to Roblox on your asset.
- Select Avatar Item.
- Set its Asset Category to Head.
- Wait for the Dynamic Head validation result (pass or fail).
- Cancel the save operation so you don't incur publishing fees at this time.
- If your head doesn't pass validation then you need to go back to Blender or Maya and make the appropriate fixes to pass validation.
If your head passes validation, publish your asset as a Development Item.
In the Explorer, select the Model of your avatar, ensure that it includes the head mesh, face rig, and the cage data.
- If you save the model for the entire character body, the upload process automatically extracts the head data.
Select Save to Roblox on your asset.

Select Development Item.
Set its Asset Category to Model.
Set Asset Privacy to Public.
- If you are enrolled in Asset Privacy beta, disable the beta before uploading your fixed asset.
Save the model to Roblox (no publishing fees are incurred).
After saving to Roblox, save the asset ID provided.
- While you can submit either the head or body asset, there is no distinction between head and body asset when saving as a development item.
- For submission to the web form, we prefer that you get the asset ID of the head, but you can use either the head or body asset ID and Roblox will replace the head accordingly.
5. Provide the assetID of your updated head
Use the following steps to provide Roblox the updated asset ID to replace your head with:
- Use the link to the web form in the email notification corresponding to your asset to communicate back the asset ID of your updated head.
- You will be asked to enter your date of birth for each update. This is a legal requirement we can't bypass.
- You can submit multiple times. We will use your last submission as the "final" version to the update.
- Roblox will complete the update of your catalog asset with the modifications you provided.
Additional Resources
Roblox has published a series of documentation and video tutorials on best practices for creating dynamic head assets.