Figma to Web Fonts Workflow
Master the complete workflow for exporting fonts from Figma designs and converting them for web use. Learn font licensing, variable font handling, design token extraction, and seamless design-to-development handoff.
TL;DR - Key Takeaways
- • Figma uses Google Fonts by default—check licensing before using custom fonts
- • Export font information via Figma's Inspect panel or design tokens plugins
- • Convert font files to WOFF2 for optimal web performance (70-90% smaller)
- • Use CSS font-display: swap for better loading performance
In this article
Figma has become the industry standard for UI/UX design, and with that comes the need to seamlessly transfer typography choices from design to development. Unlike graphic design where fonts are embedded in final outputs, web development requires a different approach—fonts must be loaded, licensed for web use, and optimized for performance.
This guide covers the complete workflow from identifying fonts used in Figma designs to implementing them in production web applications. Whether you're a designer preparing handoff documentation or a developer implementing designs, understanding this workflow ensures typographic consistency and optimal performance.
The key challenge is bridging the gap between what designers see in Figma (where fonts are rendered locally or via Figma's font service) and what developers can use on the web (where fonts must be explicitly loaded and licensed for web distribution).
Understanding Fonts in Figma
Figma accesses fonts from three sources, each with different implications for web development.
Google Fonts (Default)
Figma includes all Google Fonts by default. These are free to use on the web and can be loaded directly from Google's CDN or self-hosted.
Web Implementation Options:
- Load from Google Fonts CDN (easiest, performance trade-offs)
- Self-host using google-webfonts-helper
- Use Fontsource NPM packages for React/Next.js
Local Fonts (via Figma Desktop)
Designers using the Figma desktop app can access locally installed fonts. These fonts appear in designs but may not be available to developers unless shared separately.
Warning: Local fonts require separate licensing for web use. The designer's desktop license typically doesn't include web distribution rights.
Shared Team Fonts (Enterprise)
Enterprise Figma plans allow uploading custom fonts that are shared across the organization. This ensures consistency but still requires separate web licensing.
Enterprise Font Workflow:
- Centralized font management in Figma Organization settings
- Consistent font availability across all team members
- Font files can be downloaded for development use
Extracting Font Information from Figma
Before converting fonts, you need to identify exactly which fonts, weights, and styles are used in the design.
Using the Inspect Panel
Select any text layer and open the Inspect panel (right sidebar in Dev Mode) to see font details.
font-family: Inter;
font-size: 16px;
font-weight: 500;
line-height: 24px;
Design Tokens Plugins
Plugins like "Tokens Studio" or "Style Dictionary" can export all typography styles as JSON.
{
"typography": {
"body": {
"fontFamily": "Inter",
"fontWeight": 400,
"fontSize": "16px"
}
}
}Pro Tip: Create a Font Inventory
Before starting development, document all unique font-family + weight combinations used in the design. This prevents discovering missing fonts mid-development and helps optimize font loading by only including what's actually used.
Font Licensing for Web Use
Font licensing is often the most overlooked aspect of the Figma-to-web workflow. Just because a font appears in a Figma design doesn't mean it can legally be used on the web.
Free/Open Source Fonts
Google Fonts, Font Squirrel fonts, and fonts with OFL (Open Font License) can be freely used on websites. These are the safest choice for web projects.
Commercial Fonts (Require License)
Fonts from Adobe Fonts, MyFonts, or Fontspring require purchasing a web license. Desktop licenses don't cover web use. Web licenses are typically priced per pageviews or as a one-time fee.
System Fonts (No License Needed)
Fonts like Arial, Helvetica, Georgia are installed on users' devices. They can be specified in CSS but shouldn't be distributed as web fonts.
License Verification Checklist
- ✓Check the font's original source and license terms
- ✓Verify web embedding/hosting is permitted
- ✓Check pageview limits if using a commercial license
- ✓Document licenses for future reference
Converting Fonts for Web
Once you have licensed font files (typically TTF or OTF), convert them to web-optimized formats.
Recommended Format Priority
WOFF2 (Primary)
Best compression (30% smaller than WOFF), supported by 97%+ browsers. Use as primary format.
WOFF (Fallback)
Fallback for older browsers. Only needed if supporting IE11 or very old Safari versions.
@font-face CSS Example
@font-face {
font-family: 'Inter';
src: url('/fonts/Inter-Regular.woff2') format('woff2'),
url('/fonts/Inter-Regular.woff') format('woff');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Inter';
src: url('/fonts/Inter-Bold.woff2') format('woff2'),
url('/fonts/Inter-Bold.woff') format('woff');
font-weight: 700;
font-style: normal;
font-display: swap;
}Variable Fonts
If the Figma design uses a variable font (like Inter Variable), convert to WOFF2 variable format. One file replaces multiple weight files, reducing HTTP requests and total download size.
Performance Optimization
Fonts significantly impact web performance. Optimize loading to prevent layout shifts and improve Core Web Vitals.
Font Subsetting
Remove unused glyphs from font files. If your site is English-only, you can reduce font size by 80%+ by removing non-Latin characters.
# Using pyftsubset (fonttools)
pyftsubset Inter-Regular.ttf --unicodes="U+0000-00FF" --output-file=Inter-Regular-latin.ttf
Preload Critical Fonts
Preload fonts used above the fold to reduce render-blocking.
<link rel="preload" href="/fonts/Inter-Regular.woff2"
as="font" type="font/woff2" crossorigin>font-display Strategy
Control how fonts render during loading to balance FOUT/FOIT.
swap
Show fallback immediately, swap when loaded. Best for body text.
optional
Use font only if already cached. Best for slow connections.
Design Token Workflow
For larger projects, establish a design token system that keeps Figma and code in sync.
Token Structure Example
// typography-tokens.json
{
"font": {
"family": {
"primary": { "value": "Inter" },
"secondary": { "value": "Playfair Display" }
},
"weight": {
"regular": { "value": "400" },
"medium": { "value": "500" },
"bold": { "value": "700" }
},
"size": {
"xs": { "value": "12px" },
"sm": { "value": "14px" },
"base": { "value": "16px" },
"lg": { "value": "18px" },
"xl": { "value": "24px" }
}
}
}Figma → Tokens
Use Tokens Studio plugin to export typography styles. Push to GitHub or sync with build tools.
Tokens → CSS/Tailwind
Use Style Dictionary or custom scripts to generate CSS variables or Tailwind config from tokens.
Convert Your Figma Fonts
Upload TTF or OTF files from your Figma designs and convert them to optimized WOFF2 for web use.
Start Converting FontsWritten & Verified by
Sarah Mitchell
Product Designer, Font Specialist
Figma to Web Fonts FAQs
Common questions about Figma font workflows
