If you’re like me and looked into uploading UGC emotes, you might’ve been frustrated to run into a validation error like this:
I was frustrated by this error too, since it wasn’t clear where this problem was in the animation I was uploading. So I decided to dig into Roblox’s UGC Validation code and figure out what Roblox was actually checking for.
What resulted from this investigation was the Emote Test Dummy!
It’s a free, basic testing suite with the following features:
- Accurately mimics the UGC validation measurements Roblox makes (as of August 9th, 2025)
- 3D Visualizers and output logging for errors that would cause the emote to be rejected (including context about what frames the errors occur on, and the relevant body parts)
- Analysis of animations that were uploaded to the cloud, or a local on-site CurveAnimation instance.
- Limiting of analysis to a range of frames to repeatedly loop and inspect a problematic area.
- Tweakable delay interval between analysis frames to playback the animation frames at different rates, relative to the fixed 30hz Roblox analyzes animations at.

