Text
Text is essential in games and applications, and PixiJS provides three different systems to cover different needs:
Text: High-quality, styled raster textBitmapText: Ultra-fast, GPU-optimized bitmap fontsHTMLText: Richly formatted HTML inside the Pixi scene
Each approach has tradeoffs in fidelity, speed, and flexibility. Let’s look at when and how to use each one.
Text: Rich Dynamic Text with Styles
The Text class renders using the browser's native text engine, and then converts the result into a texture. This allows for:
- Full CSS-like font control
 - Drop shadows, gradients, and alignment
 - Support for dynamic content and layout
 
Use it when:
- You need detailed font control
 - Text changes occasionally
 - Fidelity is more important than speed
 
Avoid when:
- You're changing text every frame
 - You need to render hundreds of instances
 
BitmapText: High-Performance Glyph Rendering
BitmapText uses a pre-baked bitmap font image for glyphs, bypassing font rasterization entirely. This gives:
- High rendering speed
 - Ideal for thousands of changing labels
 - Low memory usage
 
Use it when:
- You need to render lots of dynamic text
 - You prioritize performance over styling
 - You predefine the characters and styles
 
Avoid when:
- You need fine-grained style control
 - You change fonts or font sizes frequently
 
To use BitmapText, you must first register a bitmap font via:
BitmapFont.from(...)to create on the fly, orAssets.load(...)if using a 3rd-party BMFont or AngelCode export
HTMLText: Styled HTML Inside the Scene
HTMLText lets you render actual HTML markup in your PixiJS scene. This allows:
<b>,<i>,<span>style formatting- Fine layout and text flow
 - Emoji, RTL, links, and more
 
Use it when:
- You want complex HTML-style markup
 - Static or semi-dynamic content
 - Your users expect "document-like" layout
 
Avoid when:
- You need pixel-perfect performance
 - You're rendering hundreds of text blocks
 - You need GPU text effects
 
Next Steps
Each text type has a corresponding guide that covers setup, font loading, style options, and limitations in more detail: