# Text Layers now in Lottie Creator

*By Benjamin Halko · February 24, 2026*

Real text layers are now in Lottie Creator. Edit, animate, and update typography dynamically.

---

Hey, I’m Ben — and I’ve got exciting news: Text in [Lottie Creator](https://lottiefiles.com/creator) is here finally here! 🎉

The team has been hard at work on this for the past 5 months, and we know you’ve been patiently waiting for this moment too.

Before this, a lot of motion-with-text workflows in Lottie Creator ended up converting text into shape layers. It works visually, but it’s “baked in” — meaning edits can get painful (copy changes, localization, multiple versions). So when we worked on this project, we wanted to get it right.

![](https://blog-cdn.lottiefiles.com/2026/02/1.gif)

With **real text layers**, you can:

-   **Edit copy anytime** (without rebuilding your animation)
-   **Keep text crisp at any size**
-   **Animate typography cleanly** (fills, opacity, strokes, range styling)
-   **Make text dynamic with Motion Tokens** (update copy with real data)

Which brings us back to… why did it take 5 months?

# Shapes vs. Text

Lottie Creator was optimized for handling shapes, this includes rectangles, ellipses, paths, etc. Anything that fell under the shape category in the [Lottie spec](https://lottiefiles.github.io/lottie-docs/shapes/). This presented an issue when implementing text, because text is not a shape.

Let’s take a simple animated fill colour as an example:

![](https://blog-cdn.lottiefiles.com/2026/02/2.gif)

In Lottie, shapes are made up of a [group](https://lottiefiles.github.io/lottie-docs/shapes/#group) of elements that consist of path data, styling, and transform. These elements can be added and removed as needed.

In order to apply an animated fill, you can apply a [fill element](https://lottiefiles.github.io/lottie-docs/shapes/#fill). This includes properties like color, opacity, etc., and these properties can each be animated.

So if you want to create a square that animates from red to blue, the Lottie format would look something like:

```markdown
- Shape Layer	
	- "Animated_Red_Rectangle"
	  - Rectangle Path
	    - Position
        - Size
	  - Fill
		  - Color
				- Frame 0 : Red
				- Frame 30: Blue
		- Opacity
		    - 100%
```

## Text in Lottie

Now lets try and do the same thing with text. Lottie Creator makes it seamless, but there is a lot going on in the background.

![](https://blog-cdn.lottiefiles.com/2026/02/3.gif)

Text is made up of multiple large data structures.

### Text Document

First we have the [text document](https://lottiefiles.github.io/lottie-docs/text/#text-document), which holds **all** of the base properties for a text object. This includes color, stroke, font family, font size, alignment, and the actual text string to be rendered.

This alone required us to refactor data paths and functions to make sure we handle this new document type.

Unfortunately text documents do not store animated properties. Sure we can set a font colour using text documents, but if we want to animate them we will need something else.

### Text Range

This is where [text range](https://lottiefiles.github.io/lottie-docs/text/#text-range) comes in. These allow you to style a range of your text string, and support animation. For our use case we can apply a text range over 100% of the text and apply fills, strokes, opacity, etc., to that instead of the text document.

So if we want to see the red to blue animated fill on a text element, our final Lottie will look something like:

```markdown
- Text Layer
  - Text Data
		- Text Document
		- Text: Hello Lottie
		- FontFamily: Comic Sans
		- Size: 40px
		- Alignment: Center
	- Text Range
	  - Start: 0%
	  - End: 100%
	  - Style
		  - Fill Color
			  - Frame 0 : Red
				- Frame 30: Blue
			- Opacity
				- 100%
```

So now you can see, something as simple as setting an animated fill is handled very differently between these 2 types.

Luckily, with the power of 🌟 **Lottie Creator 🌟** all of this is handled for you automatically!

# Font Management

Another obstacle we had to over come was dealing with fonts.

Typically when you want to use a specific font on the web, you just need to specify the name or url of the font, and the browser will render it for you.

```css
body {
	font-family: "Comic Sans MS", "Comic Sans", cursive, sans-serif;
}
```

However, in Lottie Creator we use [ThorVG](https://github.com/thorvg/thorvg) to render everything on the art board, including text, and ThorVG requires us to [load the font data](https://github.com/thorvg/thorvg/blob/826205e67906cef8f463f21b6b166a0fb092d53c/inc/thorvg.h#L2093) ourselves. This means we need to manage downloading and managing fonts ourselves.

## Font Access

The first issue was where we were going to get fonts from.

We ended up going with [Google Fonts](https://fonts.google.com) because of the large library of free to use fonts. The more fonts the better, both because variety is cool, and also because it means we have a better chance of matching a similar font if we cannot find your font.

### Local Fonts

We also wanted to allow access to the users own local fonts.

Browser’s have the ability to load system fonts when using `font-family` , however they do not give access to the TTF data. So again, we have to do it ourselves.

In the past this was difficult to achieve, however there is a new Web API, [`Window.queryLocalFonts()`](https://developer.mozilla.org/en-US/docs/Web/API/Local_Font_Access_API) that allows us to get a list of local fonts, including TTF data. The only issues with this method is that not all browsers are supported (sorry Firefox and Safari).

## Text support across the ecosystem

Getting text to work in Lottie Creator is one thing — making sure it renders properly across the ecosystem is another. The good news: text support is landing across the stack too.

-   **ThorVG:** Expanded text feature support and improved Lottie parsing for rendering outside of Lottie Creator. ([details](https://www.thorvg.org/post/thorvg-v1-0-a-new-generation-released#viewer-2swrb1795))
-   **dotLottie:** Added a way to store font assets in the spec so text can travel with your animations across runtimes and renderers. ([spec update](https://dotlottie.io/spec/2.0/#assets))

# What you can make with text

If you’re using text in motion, this unlocks a lot of “real product” and “real content” use cases:

-   **Kinetic typography** (emphasis, reveals, highlights)

[Embedded content](https://lottie.host/embed/da7c059d-017c-4ddf-a022-f3e5babaee7f/KDrADNompF.lottie)

-   **UI microcopy in motion** (empty states, onboarding titles, tooltips)

[Embedded content](https://lottie.host/embed/1a5f2376-7bd4-4425-bd72-9359e33a3271/Vxk06NnGiV.lottie?stateMachineId=StateMachine1)

-   **One animation, many versions** (localized campaigns, seasonal edits, variants)

.gdn-embed { max-width: 900px; width: 100%; margin: 20px auto 10px; } .gdn-embed iframe { width: 100%; height: 850px; border: 0; border-radius: 16px; display: block; }

## Bonus: Dynamic text with Motion Tokens

![](https://blog-cdn.lottiefiles.com/2026/02/4.gif)

If you want to go one step further: text doesn’t have to be “final” when you export.

With **[Motion Tokens](http://lottiefiles.com/motion-tokens)**, developers can update a text value at runtime — so the same animation can say:

-   “Happy Birthday, Aisha”
-   “Happy Birthday, Ken”
-   or switch language/labels based on locale or app state

Want to see it live? Try this out:

.cake-embed { max-width: 900px; width: 100%; margin: 20px auto 10px; } .cake-embed iframe { width: 100%; height: 680px; border: 0; border-radius: 16px; display: block; }

# Wrapping Up

So there you have it, a small look into the inner workings of Lottie Creator development and what it opens up to you. I hope all you typography enthusiasts enjoy the new feature! A huge shoutout to everyone that helped work on this feature for the last few months!  
  
The developers, the managers, the marketing team, you guys are amazing! <3

---

## Related Articles

- [How to Create Animations with AI Using Lottie Creator WebMCP](/blog/working-with-lottie-animations/how-to-create-animations-with-ai-using-lottie-creator-webmcp)
- [How to Develop and Publish a Plugin for Lottie Creator](/blog/working-with-lottie-animations/how-to-develop-and-publish-a-plugin-for-lottie-creator)
- [Lottie/dotLottie vs. GIF: Choosing the Right Animation for You](/blog/working-with-lottie-animations/lottie-vs-gif)
- [Introducing Motion Copilot 2.0 in Lottie Creator](/blog/working-with-lottie-animations/introducing-motion-copilot-on-lottie-creator)