# How to Use SEO Best Practices in Bubble

- Tool: Bubble
- Difficulty: Beginner
- Time required: 20-25 min
- Compatibility: All Bubble plans (custom domain on paid)
- Last updated: March 2026

## TL;DR

Bubble apps can rank well in search engines with proper SEO configuration. This tutorial covers setting unique page titles and meta descriptions for every page, using proper heading hierarchy (H1, H2, H3), adding alt text to images, creating clean URL structures with slugs, optimizing page speed for search ranking factors, and submitting your sitemap to Google Search Console.

## Overview: SEO in Bubble

This tutorial is a comprehensive guide to making your Bubble app visible in search engine results. You will learn both the foundational SEO techniques and Bubble-specific implementation details.

## Before you start

- A Bubble app on any plan (paid for custom domain)
- Basic understanding of SEO concepts
- A Google Search Console account
- Familiarity with Bubble's Settings and Design tabs

## Step-by-step guide

### 1. Set page titles and meta descriptions

For each page in your app, go to the page's property editor (double-click the page background or select the page in Element Tree). In the Appearance tab, find the SEO/meta section. Set a unique Page title (50-60 characters) that includes your target keyword. Set a Meta description (120-155 characters) that describes the page content and encourages clicks. For dynamic pages like blog posts or product pages, use dynamic data: insert the record's title field into the Page title. Avoid duplicate titles across pages.

**Expected result:** Every page has a unique, keyword-rich title and compelling meta description.

### 2. Use proper heading hierarchy

Every page should have exactly one H1 heading that describes the main topic. In Bubble, select a Text element and set its HTML tag to H1 in the element properties. Use H2 for section headings and H3 for sub-sections. Do not skip levels (no H1 then H3). Use headings for structure, not just visual size — set the HTML tag separately from the font size. For dynamic pages, set the H1 to the record's title field. This helps search engines understand your page structure and improves rankings for target keywords.

**Expected result:** Pages have proper H1→H2→H3 heading hierarchy communicating page structure to search engines.

### 3. Optimize URLs with slugs

Clean URLs improve both SEO and user experience. For dynamic pages, use Bubble's slug feature. Add a slug field to your Data Type or use the built-in Slug field. When creating records, set the slug to a URL-friendly version of the title (lowercase, hyphens instead of spaces). Configure your dynamic page to use slugs in the URL instead of unique IDs. In the page type settings, enable 'Use slug in URL'. This changes URLs from yourapp.com/page/1234567890 to yourapp.com/page/your-keyword-rich-title.

> Pro tip: Set slugs using the 'Set a thing's slug' workflow action, not 'Make changes to a thing'. Slugs have their own dedicated action.

**Expected result:** Dynamic pages use readable, keyword-containing URLs instead of random IDs.

### 4. Add alt text to images and optimize media

For every Image element, add descriptive alt text in the element properties. Alt text should describe what the image shows in 5-10 words. For dynamic images, use the record's title or description field as alt text. Compress images before uploading (under 200KB for standard images). Use Imgix parameters for on-the-fly optimization. Add Open Graph meta tags for social sharing: set the OG Image, OG Title, and OG Description in the page's SEO settings for attractive link previews on social media.

**Expected result:** All images have descriptive alt text and are optimized for fast loading.

### 5. Submit your sitemap to Google Search Console

Bubble does not auto-generate a sitemap, so you need to create one. Build a page or backend workflow that outputs XML listing all your public page URLs. Alternatively, use a sitemap generator service. Once you have a sitemap URL, go to Google Search Console, verify your domain (add a TXT record or HTML meta tag), then submit your sitemap URL under Sitemaps → Add a new sitemap. Monitor the Coverage report for indexing issues. Also set up the robots.txt in Bubble's Settings → SEO tab to allow crawling of public pages and block admin pages.

**Expected result:** Your sitemap is submitted to Google and pages are being crawled and indexed.

## Complete code example

File: `Workflow summary`

```text
SEO OPTIMIZATION CHECKLIST
=====================================

PAGE TITLES & META:
  Every page: unique title (50-60 chars)
  Every page: meta description (120-155 chars)
  Dynamic pages: title from database field
  No duplicate titles across pages
  Include target keyword in title

HEADING HIERARCHY:
  One H1 per page (main topic)
  H2 for section headings
  H3 for sub-sections
  Set via HTML tag property, not font size
  Dynamic H1 from record title field

URL OPTIMIZATION:
  Enable slugs on dynamic pages
  Set slug: 'Set a thing's slug' action
  Format: lowercase, hyphens, keyword-rich
  Before: /page/1234567890
  After: /page/keyword-rich-title

IMAGE OPTIMIZATION:
  Alt text on every Image element
  Compress: under 200KB standard images
  Imgix: ?w=800&q=75&auto=compress,format
  OG Image set for social sharing

TECHNICAL SEO:
  Custom domain (paid plan)
  Sitemap: XML with all public URLs
  Submit to Google Search Console
  robots.txt: allow public, block admin
  OG tags: title, description, image

PAGE SPEED:
  Optimize images (Imgix parameters)
  Reduce element count (< 150)
  Audit plugins (remove unused)
  Defer below-fold content
```

## Common mistakes

- **Using the same page title on every page** — Duplicate titles confuse search engines about which page to rank for which query Fix: Set unique, keyword-specific titles for every page, using dynamic data for database-driven pages
- **Not using a custom domain for SEO** — The default bubbleapps.io subdomain shares domain authority with all other Bubble apps and limits your SEO potential Fix: Connect a custom domain on a paid Bubble plan to build your own domain authority
- **Skipping alt text on images** — Search engines cannot understand images without alt text, missing an opportunity to rank in image search Fix: Add descriptive alt text to every Image element, using dynamic data for database images

## Best practices

- Set unique titles and meta descriptions on every page
- Use exactly one H1 per page with your target keyword
- Enable URL slugs for readable, keyword-rich URLs
- Add alt text to every image element
- Submit a sitemap to Google Search Console
- Use a custom domain for stronger SEO authority
- Monitor Google Search Console for indexing issues regularly
- Optimize page speed as it directly affects search rankings

## Frequently asked questions

### Can Bubble apps rank well in Google?

Yes. With proper SEO configuration, Bubble apps can rank for competitive keywords. The main limitations are page speed (Bubble is slower than static sites) and the SPA architecture.

### Do I need a paid plan for SEO?

A custom domain (paid plan) is strongly recommended for SEO. The default bubbleapps.io subdomain shares authority with all other Bubble apps.

### Does Bubble support structured data?

Not natively, but you can add JSON-LD structured data via HTML elements with dynamic Bubble data. This enables rich snippets in search results.

### How do I generate a sitemap in Bubble?

Create a backend workflow or API endpoint that outputs XML listing your public page URLs. Alternatively, use a third-party sitemap generation service.

### Does Bubble render content for search engine crawlers?

Bubble uses server-side rendering for initial page loads, so search engine crawlers can see your content. Dynamic content loaded after page load may not be indexed.

### Can RapidDev help with Bubble SEO?

Yes. RapidDev can implement comprehensive SEO optimization for Bubble apps including technical setup, structured data, sitemap generation, and ongoing monitoring.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/use-seo-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/use-seo-in-bubble
