What is it?
FancyText is a text rendering module for Roblox that supports custom fonts, text effects, inline icons, and rich formatting through tags.
It’s built for dynamic UI text, animations, colors, and special effects, so you don’t have to hand-roll character-by-character tweening every time you want text to shake, wave, or type itself out.
The github repo goes into a lot more detail than this post, so check it out if you want the full picture.
Important: This model does not include the TTFToRoblox tool for generating custom fonts.
The executable and Python source code are only available via the GitHub repository linked above.
Demo

Usage
local ft = require(path.to.FancyText)
local text = "<shadow 5 5><wave><typewrite><rainbow>This is FancyText"
local cleanup_trove = ft.MakeText(container, text, {
FontFace = Font.new("rbxassetid://fonts/families/Inconsolata.json"),
FontSize = 80,
VerticalAlign = "Center"
})
-- cleanup when done..
task.delay(10, function()
cleanup_trove:Clean()
end)
You can also swap a Studio-designed TextLabel for FancyText at runtime with FromLabel, then trigger effects on demand - e.g. a click-triggered exit transition - with :PlayEffect:
-- design titleLabel visually in Studio, then upgrade it at runtime
local trove = ft.FromLabel(titleLabel, { FontSize = 40 }, "<shadow><gradientWave>")
closeButton.MouseButton1Click:Once(function()
trove:PlayEffect("fade", {"0", "1"}, true) -- auto-cleans when the fade finishes
end)
Features
- Custom Fonts via TTFToRoblox, plus support for Roblox’s built-in Font/FontFace
- 15+ built-in text effects (shake, wave, rainbow, typewriter, animated gradients, etc.), all stackable
- Inline icons embedded directly in text
- Left, Right, and Center text alignment
- Automatic UI scaling relative to 1920x1080
- Intelligent word wrapping with custom fonts
- BBCode-style tags to toggle effects on/off
- Easy to extend with your own custom effects
- Swap a design-time TextLabel for FancyText at runtime with
FromLabel - Trigger effects like
fall/fadeon demand from any event, not just a tag-driven timer
Build
You can get FancyText either from the model above or from the GitHub releases.
Please note that the GitHub releases will likely be more up to date than the model.
Support
Any feedback is appreciated. Please report bugs in this thread.
If you’d like to support me, just leave a like on this post and star the github repo! ![]()
A note on custom fonts: FancyText doesn’t ship with any bundled fonts, you convert and add your own via TTFToRoblox. Before using a converted font in your game, make sure you actually have the rights to it: most free fonts (e.g. Google Fonts, SIL Open Font License) are fine, but many “premium”/marketplace fonts only license you to use them, not to redistribute a converted copy. That’s on you to check per font, not something FancyText enforces.

