DynamicToClassic converts dynamic heads to their classic face and head counterparts.
This was originally made for a game of mine as it uses Roblox’s classic face system to change the face of a player via a decal in the player’s head. I’ve opened sourced it to contribute to the community
Update (1/28/2026): I have rewrote this system to mostly use HumanoidDescriptions for most of the work now, instead of the hacky method of replacing the player’s head with code. I also updated the module to grab the table of assets over HTTPSService so it’s easier to update
Update (4/21/2025): In order for this to continue working you must set the “PlayerCharacterDestroyBehavior” property in workspace to “Disabled”
Elements:
Supports workspace.MeshPartHeadsAndAccesories set to Disabled or Enabled
Source is only on github for now, but uses HTTPSService to grab the table of assets
Easy to edit along with it somewhat being modular
Devtool plugin to make workflow easy for people modifying it
Please keep in mind that the current table provided is outdated, if any heads arent supported please submit a pull request on the GitHub to Faces.json. Make sure to follow the current formatting with comments as such
(these are from a outdated version, current one is much better)
Installation:
You need to enable Allow HTTP Requests in File > Experience Settings > Security
You can get the dev-tool plugin here
You can get the source here (only on GitHub for now, Roblox Library asset is outdated
Put the example script (provided on the github) in ServerScriptService or workspace if you’re messy, with the module parented to it with the code for the ConversionHandler module
This is my first time making a post like this so sorry if some of it seems a bit messy or unprofessional. Also I do know Roblox is going to make it so you can toggle classic faces on a dynamic head at some point, but I don’t know if it’ll be a decal like it is currently.
I could try making a studio version. For now just load the players avatar with the moonanimator plugin, rename it to “StarterCharacter”, drop it into StarterPlayer, Playtest, then select and copy your character in workspace, stop the playtest and then paste it into studio
Actual lifesaver. I’ve been having an issue with the new ‘replacements’ for classic faces, where even if you disable dynamic heads, they appear as a special mesh and have a mouth inside. When you make the head semitransparent it looks very bad.
Thank you for this, submitting the pull request now, will update the module tomorrow or later today. Sorry for the late reply I have been busy with IRL stuff.
Sorry to interrupt but I’ve been trying to get this to work for ages and its just not working, it also doesn’t seem to be working in the game it was made for as well so if it is broken please fix it if you have time, or I’m just being a idiot and implementing it wrong.
Watch out, public systems that do this are now apparently getting taken down for misusing roblox systems. If this is really the reason, I’ve never seen such blatant censorship from this company, they’re really at an all time low right now.
It’s only on GitHub right now and it’ll probably stay that way. Also I’ve been working on this since 2023 and there’s a older version of this uploaded to roblox, but its out of date now.
I actually created a system like this myself, that being said; It didn’t go too well for me. So just as a heads up, make sure to keep it offsite, its stupid, I know.