FlutterFlow supports two ways to add custom fonts: selecting from the built-in Google Fonts catalog (1000+ fonts, no upload needed) or uploading your own TTF/OTF files through Theme Settings. Upload each weight variant (Regular, Medium, Bold) as a separate file to avoid faux-bold rendering. Assign fonts to specific typography styles like Headline or Body in Theme Settings so every Text widget on every page uses your brand font automatically.
Using Custom Fonts in Your FlutterFlow App
Typography is a major part of your brand identity. FlutterFlow makes it easy to use any Google Font instantly or upload proprietary font files. This tutorial covers both approaches and shows how to set up your typography hierarchy so every text element in your app uses the correct font automatically.
Prerequisites
- A FlutterFlow project open in the builder
- Custom font files in TTF or OTF format (if not using Google Fonts)
- Multiple weight variants of your font (Regular, Medium, Bold) as separate files
Step-by-step guide
Select a Google Font from the built-in font catalog
Select a Google Font from the built-in font catalog
Go to Theme Settings (paintbrush icon in left Navigation Menu) → Typography tab. Click on the font family name for any typography style (e.g., Headline Large). A font picker panel opens with a search bar. Type the name of any Google Font — like Inter, Poppins, Roboto, or Plus Jakarta Sans. Click the font name to select it. FlutterFlow downloads and applies the font instantly, including all available weight variants. No file upload needed.
Expected result: The selected Google Font appears in the typography preview and applies to all widgets using that typography style.
Upload custom TTF or OTF font files for proprietary fonts
Upload custom TTF or OTF font files for proprietary fonts
In Theme Settings → Typography, click Custom Fonts at the top of the font panel. Click Upload Font and select your TTF or OTF file for the Regular (400) weight. After uploading, click Upload Font again for each additional weight: Medium (500), SemiBold (600), and Bold (700). Name each upload with the weight so FlutterFlow correctly maps them. Each weight file must be uploaded separately — FlutterFlow does not extract multiple weights from a single file.
Expected result: Your custom font family appears in the font picker with all uploaded weight variants available.
Assign the custom font to typography styles in Theme Settings
Assign the custom font to typography styles in Theme Settings
With your custom font uploaded, click each typography style name (Display Large, Headline Large, Headline Small, Body Medium, Body Small, etc.) and select your custom font from the font picker. For heading styles, you might use one font family. For body styles, use the same or a different one. Set the font weight for each style: Headline Large might use Bold (700), while Body Medium uses Regular (400). Set font size and letter spacing to complete each style definition.
Expected result: All typography styles in Theme Settings reference your custom font with appropriate weights.
Verify the font on a page by applying typography styles to Text widgets
Verify the font on a page by applying typography styles to Text widgets
Navigate to any page and select a Text widget. In the Properties Panel, click the text style dropdown and choose a typography style like Headline Small or Body Medium. The Text widget should render in your custom font at the specified weight and size. Check multiple typography styles across the page to verify all weights render correctly — especially Bold, which should look distinctly heavier than Regular.
Expected result: Text widgets display your custom font correctly at each typography style's weight and size.
Reference the custom font in Custom Code for exported projects
Reference the custom font in Custom Code for exported projects
When writing Custom Widgets or after exporting the code, access your font via FlutterFlowTheme.of(context).bodyMediumFamily for the font family name. For manual reference, use the family name exactly as it appears in Theme Settings. In exported projects, font files are in the assets/fonts/ directory and registered in pubspec.yaml under the fonts section. You can also use GoogleFonts.fontName() for Google Fonts in Custom Code.
1// Reference theme font in Custom Code2Text(3 'Custom styled text',4 style: TextStyle(5 fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,6 fontSize: 16,7 fontWeight: FontWeight.w400,8 ),9);1011// Or use Google Fonts directly12import 'package:google_fonts/google_fonts.dart';1314Text(15 'Google Font text',16 style: GoogleFonts.poppins(17 fontSize: 16,18 fontWeight: FontWeight.w600,19 ),20);Expected result: Custom Code renders text using the same font defined in Theme Settings.
Complete working example
1GOOGLE FONTS METHOD:2 1. Theme Settings → Typography3 2. Click font family name on any style4 3. Search: "Inter" or "Poppins" or your choice5 4. Click to apply — all weights included automatically67CUSTOM FONT UPLOAD METHOD:8 1. Theme Settings → Typography → Custom Fonts9 2. Upload: MyFont-Regular.ttf (weight 400)10 3. Upload: MyFont-Medium.ttf (weight 500)11 4. Upload: MyFont-SemiBold.ttf (weight 600)12 5. Upload: MyFont-Bold.ttf (weight 700)13 6. Upload: MyFont-Italic.ttf (optional)1415TYPOGRAPHY STYLE ASSIGNMENTS:16 Display Large: MyFont, 57px, Bold 70017 Headline Large: MyFont, 32px, Bold 70018 Headline Medium: MyFont, 24px, SemiBold 60019 Headline Small: MyFont, 20px, SemiBold 60020 Title Large: MyFont, 22px, Medium 50021 Title Medium: MyFont, 18px, Medium 50022 Body Large: MyFont, 16px, Regular 40023 Body Medium: MyFont, 14px, Regular 40024 Body Small: MyFont, 12px, Regular 40025 Label Large: MyFont, 14px, Medium 50026 Label Medium: MyFont, 12px, Medium 5002728CUSTOM CODE ACCESS:29 FlutterFlowTheme.of(context).bodyMediumFamily30 GoogleFonts.poppins(fontSize: 16)Common mistakes when creating a Custom Font for Your FlutterFlow App
Why it's a problem: Uploading only the Regular weight and then applying Bold styling
How to avoid: Upload each weight variant (Regular 400, Medium 500, SemiBold 600, Bold 700) as separate TTF/OTF files. Most professional fonts provide these as individual files.
Why it's a problem: Using more than two different font families across the app
How to avoid: Choose one font family for headings and one for body text (or the same family for both). Use weight variations instead of extra font families for visual hierarchy.
Why it's a problem: Not setting the font on all typography styles in Theme Settings
How to avoid: Update every typography style in Theme Settings to use your chosen font family. Click through each one (Display, Headline, Title, Body, Label) and set the font.
Best practices
- Use Google Fonts for the fastest setup — FlutterFlow includes all weights automatically
- Upload all weight variants (Regular, Medium, SemiBold, Bold) when using custom font files
- Assign your font to ALL typography styles, not just headings, for full consistency
- Test Bold and Italic rendering to confirm they use true font weights, not faux styling
- Limit your app to one or two font families to keep file size small and design clean
- Use FlutterFlowTheme.of(context).bodyMediumFamily in Custom Code to reference theme fonts
- Check font licensing — some fonts restrict mobile app distribution
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I want to set up custom typography in my FlutterFlow app using the Inter font from Google Fonts. Create a complete typography hierarchy with appropriate sizes and weights for Display, Headline, Title, Body, and Label styles.
Change the font family on all typography styles to Inter. Set Headline Large to Bold 32px, Body Medium to Regular 14px, and Body Small to Regular 12px.
Frequently asked questions
How many Google Fonts are available in FlutterFlow?
FlutterFlow includes the full Google Fonts catalog — over 1,000 font families. Search by name in the font picker panel.
Can I use variable fonts in FlutterFlow?
FlutterFlow does not support variable font files directly. Upload static font files for each weight variant (Regular, Medium, Bold, etc.) as separate TTF files.
Do custom fonts work on all platforms (iOS, Android, web)?
Yes. Uploaded TTF/OTF files and Google Fonts render correctly on iOS, Android, and web. The font files are bundled into the build output for each platform.
Will custom fonts slow down my app?
Each font file adds 50-400KB depending on the character set. Using two font families with four weights each adds roughly 400KB-1.6MB total — minimal impact on modern devices. Google Fonts may load slightly slower on first render if not cached.
Can I use different fonts for different languages?
Yes. If your app supports multiple languages, upload font files that include the required character sets (e.g., CJK characters for Chinese/Japanese/Korean). Google Fonts like Noto Sans cover most scripts.
Can RapidDev help select and configure fonts for my brand?
Yes. RapidDev can recommend font pairings, configure a complete typography system, and ensure your fonts render correctly across all platforms and screen sizes.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation