How to Add Custom Fonts in Bubble.io

Table of Contents

Your app looks almost perfect. The layout is clean, the colors are on point — but something still feels off. Nine times out of ten, it’s the font.

Typography is one of the most underrated design decisions you can make. Studies show that 94% of first impressions are design-related, and fonts carry a significant share of that judgment. Get it right, and your app feels polished and trustworthy. Get it wrong, and even the best product can feel amateurish.

The good news? Bubble.io gives you multiple ways to take full control of your typography — from built-in Google Fonts to fully custom uploaded typefaces. This guide walks you through every method, step by step.

Why Custom Fonts Matter More Than You Think

Before jumping into the how, let’s anchor the why.

Typography drives brand recognition by up to 80%. When users land on your app, the font is one of the first signals that tells them whether you’re a professional product or a side project. Research shows that users form an opinion about a website in just 0.05 seconds — and typography is a massive part of that snap judgment.

Beyond aesthetics, there’s a functional argument too. 75% of users judge a company’s credibility based on its website design, according to the Stanford Web Credibility Research project. Your font choice is a credibility signal — not just a style preference.

If you’re running Bubble.io for a SaaS, a client portal, or any kind of B2B tool, this matters even more. Your users are decision-makers. They notice details.

What Bubble.io Supports Out of the Box

Bubble.io comes preloaded with the entire Google Fonts library — over 1,400 free, professionally designed typefaces. For most builders, this is more than enough. But if your brand uses a licensed commercial font, or you want something truly unique, Bubble also lets you add custom fonts via CSS or file upload.

Here’s a quick map of all three methods:

Method

Best For

Difficulty

Google Fonts (built-in)

Most use cases

Beginner

Custom Font Upload

Brand fonts, licensed typefaces

Intermediate

CSS @font-face via Header

Fine-grained control, CDN-hosted fonts

Intermediate

Let’s go through each one.

How to Add Google Fonts in Bubble.io

This is the fastest path and works for the vast majority of projects.

Step 1 — Open the Style Editor

In your Bubble editor, click on any text element on your canvas. In the property panel on the left, look for the Font dropdown. Click it.

Step 2 — Browse and Select

A searchable list of all available Google Fonts will appear. Type a font name (e.g., “Inter”, “Lato”, “Playfair Display”) or scroll to browse. Click the font you want to apply it instantly.

Step 3 — Set Font Globally via Styles

For consistency across your entire app, you want to update your global styles — not just individual elements. Go to:

Design tab → Styles → Edit the Default style for Text, Headings, etc.

Apply your chosen font here. This propagates it across every text element that uses that style, saving you time and preventing inconsistencies.

Pro tip: Use font pairing intentionally. A common high-converting approach is pairing a serif font for headings (authority, trust) with a clean sans-serif for body text (readability). For example: Playfair Display + Inter, or Merriweather + Lato.

 

How to Upload a Custom Font in Bubble.io

If you have a licensed font (e.g., a brand typeface from your design team), here’s how to get it into Bubble.

Step 1 — Get Your Font Files Ready

You’ll need your font in one of these web-compatible formats:

  • .woff2 (recommended — best compression, widest browser support)
  • .woff (good fallback)
  • .ttf or .otf (older, larger files — use only if woff2 isn’t available)

Step 2 — Upload the Font to Bubble

Go to your Bubble editor and navigate to:

Settings tab → General → scroll down to “Custom fonts”

Click “Add a new font” and upload your font file. Give it a clear name — this is what you’ll see in the font dropdown inside the editor.

Step 3 — Apply It Like Any Other Font

Once uploaded, your custom font appears in every font selection dropdown throughout Bubble. Select it on any text element or update your global styles to use it across the app.

Important: Upload separate font files for each weight and style you need (Regular, Bold, Italic, etc.) and name them clearly (e.g., “BrandFont-Bold”, “BrandFont-Regular”). Bubble won’t automatically generate font weights from a single file.

How to Add Fonts via CSS (Advanced Method)

This method gives you the most control and is ideal if your font is hosted on a CDN (like Adobe Fonts / Typekit, or your own server).

Step 1 — Get the Font Embed Code

From your font provider, grab the CSS embed snippet. For example, if using Adobe Fonts, you’ll get something like:

@import url(“https://use.typekit.net/abc1234.css”);

 

Or if self-hosting, you’d write a @font-face rule like:

@font-face {

  font-family: ‘YourFontName’;

  src: url(‘https://yourdomain.com/fonts/YourFont.woff2’) format(‘woff2’);

  font-weight: normal;

  font-style: normal;

}

 

Step 2 — Add It to the Page Header

In Bubble, go to:

Page settings (click anywhere outside elements on a page) → SEO / metatags → “Script/meta tags in header”

Paste your CSS inside a <style> tag:

<style>

  @import url(“https://use.typekit.net/abc1234.css”);

</style>

 

Or link the stylesheet directly:

<link rel=”stylesheet” href=”https://use.typekit.net/abc1234.css”>

 

Step 3 — Reference the Font in Bubble

In Bubble’s font dropdown, your newly imported font won’t appear automatically. You’ll need to use a plugin or manually enter the font name in a custom CSS field.

The easiest workaround: Install the “Custom CSS” plugin from the Bubble marketplace. Use it to apply your font to specific element classes:

.custom-heading {

  font-family: ‘YourFontName’, sans-serif;

}

 

Then add that class to your Bubble elements via the “Attribute” field in the element’s property panel (type class → value custom-heading).

Common Problems (And How to Fix Them)

Font not showing after upload

This usually means the file format isn’t supported or the file is corrupted. Convert your font to .woff2 using a free tool like Transfonter and re-upload.

Font renders in editor but not in preview/live

Check that you’re not blocking external resources in your Bubble settings. If using a CDN-hosted font, make sure the CDN allows cross-origin requests (CORS headers must be set correctly).

Bold/italic weight not loading

You need separate uploads for each weight. A single font file rarely contains all weights. Upload “FontName-Bold.woff2” and “FontName-Regular.woff2” as separate entries.

Font looks different on mobile vs. desktop

This is a rendering difference between operating systems — not a Bubble issue. Test on multiple devices and consider adjusting font-size or line-height for mobile breakpoints using Bubble’s responsive settings.

Google Font isn’t updating across the app

You’ve applied it to individual elements, not your global styles. Go to Design → Styles and update the style that element uses. Changes at the style level cascade across every element that uses it.

Best Practices for Fonts in Bubble.io

Here’s what separates polished Bubble apps from cluttered ones:

Limit yourself to two fonts maximum. One for headings, one for body text. Every additional font adds visual noise and slows your app’s load time. Research consistently shows that simpler typographic systems outperform complex ones in user testing.

Prioritize .woff2 format. It delivers the smallest file size at the same quality — often 30% smaller than .woff and up to 60% smaller than .ttf. Faster fonts mean faster apps.

Match font personality to product tone. A fintech dashboard calls for clean, neutral sans-serifs like Inter or IBM Plex Sans. A creative portfolio wants personality — something like Cormorant Garamond or DM Serif Display. Think of fonts as the tone of voice for your product.

Use consistent line-height and letter-spacing. In Bubble’s style editor, set line-height to at least 1.5x your font size for body text — this dramatically improves readability. Slightly increase letter-spacing for headings set in all caps.

Check performance impact. Each font weight you load adds an HTTP request. Tools like Google PageSpeed Insights will flag excessive font loading. Stick to 2-3 weights maximum per font family.

Conclusion

Adding custom fonts in Bubble.io is one of those small changes that makes a massive difference to how your product is perceived. Whether you go with Google Fonts for speed, upload a branded typeface for consistency, or embed via CSS for full control — you now have every method you need.

The formula is simple: pick two fonts maximum, prioritize .woff2 for performance, apply globally through Styles, and test across devices. That’s it.

Your app’s credibility gets a quiet but powerful upgrade the moment you nail your typography. Now go make it happen.

🎯 Turn Browsers Into Booked Calls

Get complete targeting, campaign design, and scaling that fills your pipeline — done for you.

7-day Free Trial |No Credit Card Needed.

FAQs

Does Bubble.io support Google Fonts natively?

Yes — Bubble.io includes the complete Google Fonts library (1,400+ fonts) natively in the font selector. You can access any Google Font directly from any text element's property panel or from the global Styles editor, with no code required.

Can I upload a paid/licensed font to Bubble?

Yes. Bubble allows you to upload custom font files in .woff2, .woff, .ttf, and .otf formats through Settings → General → Custom fonts. Just make sure your font license allows web embedding before uploading.

What's the best font format to use in Bubble?

Always use .woff2 when possible. It offers the best compression (up to 30% smaller than .woff) and is supported by all modern browsers. Smaller font files mean faster page loads and better user experience.

Why isn't my custom font showing in Bubble's dropdown after upload?

Check that your file was uploaded in a supported format and that it isn't corrupted. Also confirm you're looking in the correct location (the font selector inside a text element or in the Styles panel). If the issue persists, try converting the font to .woff2 using Transfonter and re-uploading.

We deliver 100–400+ qualified appointments in a year through tailored omnichannel strategies

What to Build a High-Converting B2B Sales Funnel from Scratch

Lead Generation Agency

Build a Full Lead Generation Engine in Just 30 Days Guaranteed