Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Figma Design – Figma Learn
  • Build design systems
  • Variables

The difference between variables and styles

Written by Figma Man

Updated at June 19th, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Administration – Figma Learn
    Manage files and projects Manage a team Manage your account Manage a Figma organization Manage Enterprise plan settings and permissions Billing Manage Figma in a school
  • Figma Design – Figma Learn
    Create prototypes Import and export Create designs Tour the interface Dev Mode Work together in files Build design systems Figma Draw
  • Get started – Figma Learn
    Set up your account Layers 101
  • FigJam – Figma Learn
    Import and export Run meetings Work on boards Tour the interface
  • Community – Figma Learn
    Explore the Community Creator tools and resources
  • Help – Figma Learn
    Troubleshoot Common questions Work with support
  • Work across Figma – Figma Learn
    Figma AI Work across Figma
  • Courses, tutorials, projects – Figma Learn
    Courses Projects
  • Figma Slides – Figma Learn
    Create and edit slides Present slide decks Tour the interface Import and export
  • Figma Buzz – Figma Learn
    Templates in Figma Buzz Create and edit assets in Figma Buzz Overview
  • Figma Make – Figma Learn
    Tour the interface Work with Figma Make
  • Figma Sites – Figma Learn
    Design a site Create webpages and breakpoints Make your site interactive Preview and publish a site Tour the interface
+ More

Table of Contents

Foundational differences Scalability and management Supporting features Scope variables Prototype with variables Code syntax with variables Final thoughts

As Figma extends its feature set with variables, you might be wondering: What is the difference between variables and styles? When should I choose one over the other? Are styles becoming obsolete?

After all, they seem to function similarly on the surface:

  • Both act as sources of truths.
  • Both can be published to team libraries and reused throughout designs.
  • Both support efficient design system management because updates to a variable or style will prompt updates for all designs using them.

Styles and variables have key differences that make them valuable in different situations.

In this article, we’ll highlight their differences and help you decide whether to use on, or both, in your designs.

Foundational differences

There are a couple of key differences between styles and variables: the types of values they use, their appearance on canvas, and the use of modes.

Styles can store a variety of properties:

  • A property with a single raw value, like a solid fill #FFFFFF
  • A property with multiple raw values, like a color gradient
  • Other formats like blend modes, images, GIFs, videos

Styles are built to hold a combination of values, where all values get expressed all at once. For example, you can store font family, font size, and font weight properties in one text style simultaneously. When you apply the text style on a text layer, all properties will be used on the text layer at the same time. 

In another example, let's take a look at color styles which can be a combination of different fill types and variables, and are organized in a top-to-bottom stack. A color style is like looking at a “stack” of cards from above, where each card is a fill. If the color at the top is transparent enough, you can see the color below it. You can also manually rearrange the fill to change what you see from the top.Edit color style modal with a cursor reordering stack of color fills

Variables can store single, raw values. For example, raw values can include solid fills like #FFFFFF, numbers like 16 or -32.75, and boolean values true and false. 

Variables are built to hold one or more single, reusable values, but only one value can be expressed at a time. Each value corresponds to a different variable mode. This is true of all variable types. Unlike styles, a variable is like set of cards with where you can view only one card, and what card you get to see depends on its context.

For example, let’s say we have a collection of variables with light and dark modes. We apply them to various layers in a frame, and set the frame to dark mode. All layers with the variables will express the values from dark mode. If we switch the frame to light mode, the variables will switch their expressed values to light mode. switching frame between light and dark modes from the right sidebar

Even though modes are built for variables, Figma allows us to apply them to styles.

Say we have a number variable for a default font size. The variable has two single, raw values: 16 for a mobile mode and 18 for a desktop mode. We apply this variable to a text style’s font family property, as well as other variables and values to other properties.

Now, we can switch the mode on any text layer using this text style, because it uses a variable with multiple modes.

Learn how to back styles with variables.

Takeaways

  • A variable stores raw, reusable values. Styles stores a composite of different values.
  • If a variable has multiple values (i.e. modes), it can only express one value at a time. A style’s composite of values are expressed all at once.
  • If you want to create different contexts for your design elements (such as light and dark modes) you will need to use variables and variable modes.

Scalability and management

One of the most powerful ways of managing and scaling a design system is through aliasing tokens.

  • A design token is an industry term to refer to reusable values, meant to help design and code stay in sync.
  • Aliasing is a method of organizing a design system by allowing any design token to inherit the value of another design token.

Variables allows you to do exactly this.

For example, let’s say the variable "brand-400" (which is one of our design tokens) has a value of #EAEA00. We want the variable "icon-default" (another design token) to be an alias of brand-400, meaning it will inherit whatever value brand-400 has.

Two tokens side by side. Token on the left is called 'brand-400' with a lime-green color swatch labeled #EAEA00; Token on the right is called 'icon-default' with the same lime-green color swatch, and a gray pilled labeled 'brand-400'.

If the value of brand-400 ever changes, then icon-default will follow suit, as long as it’s still bound to brand-400’s definition.

Two tokens side by side. Token on the left is called 'brand-400' with a neon pink color swatch labeled #EA4E99; Token on the right is called 'icon-default' with the same neon pink color swatch, and a gray pilled labeled 'brand-400'.

Styles don't support aliasing. In other words, they cannot be applied to variables and other styles. Variables can be applied to both.

Because variables support aliasing, it offers more robust support for complex, scalable token structures. They allow you to define primitive values that can flow through other tokens and elements of your design system. It also makes updating and managing design systems more efficient.

For example, let’s say we create a variable that acts as a global token, and we use it to define other variables at varying levels. If the global token changes, then everything downstream changes.

cursor changes global token from pink to coral and all tokens downstream change

If we only want some tokens to change, this structure allows us to choose the correct token upstream and change it without having to manually rework everything downstream.

token changes from pink global token to purple token and all tokens downstream change

Aliasing is supported for all variable types. Learn how to alias variables.

Takeaways:

  • Variables can be applied to styles and other variables, but styles cannot be applied to either
  • Variables help scale a growing design system and make managing a design system more efficient

Supporting features

Scope variables

Scoping is fully supported for number variables but will be expanded to other variable types in the future.

Scope variables to limit which properties a variable can be applied to.

For example, you can limit a color variable to only stroke fills, so you wouldn’t be able to apply the variable to any other fill properties. This gives you better control over where it can be used and cuts out the guesswork when designing.

Learn how to scope variables.

Takeaways:

  • Since scoping is available to variables but not styles, use variables if you want to take advantage of scoping capabilities
  • Scoping is currently available for number variables and will expand to other types in the future

Prototype with variables

In prototyping, variables are used to store object states or properties. Prototype interactions are used to modify variable values, which can change the appearance, content, or visibility of objects in a design—all in a few simple frames.

Learn how to use variables in advanced prototypes.

Code syntax with variables

Code syntax is currently in development and will be available soon.

When you open a variable’s editing modal, you’ll see a section titled Code syntax. Code syntax represents variables in code using valid variable names. This information will appear in Dev Mode and will help designers and developers create a seamless handoff experience.

Learn more about code syntax.

Takeaway: If you're looking to improve your handoff experience, you can take variables and code syntax into consideration

Final thoughts

Whether you choose to use variables or styles depends largely on your goals. You might focus solely on variables to take advantage of design token scalability. Or you might find that sticking to styles is suitable for your projects. Or you might end up using some combination of both!

Styles will remain ‌a key feature in Figma Design. Despite their similarities, variables are not a replacement for styles. Rather, they are additive to Figma’s core feature set.

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • Overview of variables, collections, and modes
  • Guide to variables in Figma
  • Apply variables to designs
  • Modes for variables
  • Create and manage variables and collections
  • Blog
  • Best practices
  • QR code generator
  • Color wheel
  • Colors
  • Color picker
  • Color palettes
  • Color palette generator
  • Color contrast checker
  • Font Library
  • Templates
  • Developers
  • Integrations
  • Affiliate program
  • Resource library
  • Reports and insights
  • Support
  • Status
  • Legal and privacy
  • Modern slavery statement
  • Climate disclosure statement
  • COMPARE
  • Sketch
  • Adobe XD
  • Framer
  • Miro
  • COMPANY
  • Events
  • Customers
  • Careers
  • Newsroom
Expand