# How to Downgrade from Firebase Blaze to Spark Plan

- Tool: Firebase
- Difficulty: Beginner
- Time required: 5-10 min
- Compatibility: Firebase Console (all projects on Blaze plan)
- Last updated: March 2026

## TL;DR

To downgrade from the Firebase Blaze plan to the free Spark plan, open the Firebase Console, go to your project settings, click the billing or plan section, and select the Spark plan. Before downgrading, check which services require Blaze — Cloud Functions, phone authentication, and multiple Realtime Database instances will stop working immediately. Export or back up any data you need, disable active Cloud Functions, and review your current month's usage to understand final charges.

## Downgrading from Firebase Blaze to Spark Plan

The Blaze plan is Firebase's pay-as-you-go tier that unlocks Cloud Functions, phone auth, and higher usage limits. If your project no longer needs these features, you can switch back to the free Spark plan. This tutorial walks through the pre-downgrade checklist, the actual steps in the Firebase Console, and what to expect after the switch.

## Before you start

- Owner or Billing Admin role on the Firebase project
- Access to the Firebase Console (console.firebase.google.com)
- Knowledge of which services your project currently uses

## Step-by-step guide

### 1. Review which services require the Blaze plan

Before downgrading, understand what you will lose. Cloud Functions stop executing entirely — all deployed functions become inactive. Phone authentication (SMS-based sign-in) stops working. You are limited to a single Realtime Database instance. Firebase Extensions stop running. Cloud Storage blocks executable file uploads. Hosting bandwidth drops to 360 MB/day and storage to 10 GB. If your app depends on any of these, downgrading will break functionality.

**Expected result:** You have a clear list of Blaze-only features your project uses and understand which will stop working.

### 2. Check current usage and billing

In the Firebase Console, go to Usage and billing in the left sidebar (or Project Settings > Usage and billing). Review your current billing period usage for Firestore reads/writes, Cloud Functions invocations, Storage bandwidth, and Auth operations. Note that you will still be charged for any usage during the current billing period up to the downgrade date. The Blaze plan includes the same free-tier quotas as Spark, so you only pay for usage above those limits.

**Expected result:** You understand your current charges and know there are no surprise costs pending before the downgrade.

### 3. Back up data and disable Cloud Functions

Export any data that might be affected by the downgrade. For Firestore, use gcloud firestore export or the Firebase Console export. For Realtime Database, download JSON from the Console. If you have Cloud Functions, consider deleting them before downgrading to avoid confusing error states. Go to the Firebase Console > Functions tab and delete functions you no longer need.

```
# Export Firestore data before downgrading (requires gcloud CLI)
gcloud firestore export gs://YOUR_BUCKET_NAME/backup-before-downgrade

# Or delete Cloud Functions via Firebase CLI
firebase functions:delete functionName --region us-central1
```

**Expected result:** Critical data is backed up and Cloud Functions are disabled or deleted.

### 4. Downgrade to the Spark plan in the Firebase Console

Open the Firebase Console and select your project. Click on the plan indicator at the bottom of the left sidebar (or go to Project Settings > Usage and billing > Details & settings). You will see your current plan as Blaze. Click Modify plan or Change plan, then select the Spark (free) plan. Confirm the downgrade. The change takes effect immediately — Cloud Functions stop, phone auth disables, and free-tier limits apply.

**Expected result:** Your project is now on the Spark plan. The Firebase Console shows Spark as the active plan.

### 5. Verify your app works within Spark limits

After downgrading, test your application thoroughly. Check that authentication still works (email/password and social providers are unaffected). Verify Firestore reads and writes succeed within the daily limits. Confirm that any features that relied on Cloud Functions are either removed from the UI or replaced with alternative implementations. Monitor the Firebase Console's usage dashboard for the next few days to ensure you stay within Spark limits.

**Expected result:** Your app functions correctly with all Spark-compatible features, and you are no longer incurring Blaze plan charges.

## Complete code example

File: `pre-downgrade-checklist.ts`

```typescript
/**
 * Pre-downgrade checklist script
 * Run this to audit your Firebase project before switching to Spark plan
 */

import { initializeApp, cert } from 'firebase-admin/app';
import { getFirestore } from 'firebase-admin/firestore';
import { getAuth } from 'firebase-admin/auth';

const app = initializeApp({
  credential: cert('./service-account.json'),
});

const db = getFirestore(app);
const auth = getAuth(app);

async function auditProject() {
  // Check total users
  const userList = await auth.listUsers(1000);
  console.log(`Total auth users: ${userList.users.length}`);

  // Check for phone auth users (will break on Spark)
  const phoneUsers = userList.users.filter((u) =>
    u.providerData.some((p) => p.providerId === 'phone')
  );
  console.log(`Phone auth users (will lose access): ${phoneUsers.length}`);

  // Check Firestore collections
  const collections = await db.listCollections();
  console.log('\nFirestore collections:');
  for (const col of collections) {
    const snapshot = await col.count().get();
    console.log(`  ${col.id}: ${snapshot.data().count} documents`);
  }

  // Spark plan limits reminder
  console.log('\n--- Spark Plan Daily Limits ---');
  console.log('Firestore reads:  50,000/day');
  console.log('Firestore writes: 20,000/day');
  console.log('Firestore deletes: 20,000/day');
  console.log('Hosting bandwidth: 360 MB/day');
  console.log('Cloud Functions: NOT AVAILABLE');
  console.log('Phone Auth: NOT AVAILABLE');
}

auditProject().catch(console.error);
```

## Common mistakes

- **Downgrading without realizing Cloud Functions are Blaze-only** — undefined Fix: Audit your app for any callable functions, Firestore triggers, or scheduled functions before downgrading. Replace them with client-side logic or remove the features from your app.
- **Expecting to keep the same usage levels on the Spark plan** — undefined Fix: Spark has strict daily limits: 50K Firestore reads, 20K writes, 360 MB hosting bandwidth. If your app exceeds these, requests will fail. Monitor usage in the Console for several days before downgrading.
- **Not backing up data before downgrading** — undefined Fix: While Firestore data is not deleted on downgrade, you lose access to Cloud Functions that may be critical for data processing. Export data using gcloud firestore export or the Console before switching plans.

## Best practices

- Always audit which Blaze-only features your project uses before downgrading
- Back up Firestore and Realtime Database data before making plan changes
- Delete or disable Cloud Functions before downgrading to avoid confusing error states
- Set up Google Cloud budget alerts even on the Spark plan to catch unexpected re-upgrades
- Test your app thoroughly after downgrading to catch any broken features
- Monitor the Firebase Console usage dashboard for the first week after downgrading
- Consider keeping a small Blaze budget instead of downgrading if you rely on Cloud Functions
- Review phone auth users and migrate them to email or social sign-in before downgrading

## Frequently asked questions

### Will I lose my data when downgrading from Blaze to Spark?

No. Firestore documents, Realtime Database data, Storage files, and Auth users are all preserved. However, Cloud Functions stop executing and phone authentication disables immediately.

### Can I upgrade back to Blaze after downgrading?

Yes. You can switch between Spark and Blaze at any time in the Firebase Console. Upgrading to Blaze re-enables Cloud Functions, phone auth, and higher usage limits immediately.

### Will I be charged for the rest of the billing period after downgrading?

You are charged for any pay-as-you-go usage incurred before the downgrade date. There is no monthly subscription fee on Blaze — it is purely usage-based. After downgrading, no further charges accrue.

### What happens to deployed Cloud Functions when I downgrade?

Cloud Functions stop executing immediately. They are not deleted — if you upgrade back to Blaze, they resume working. However, any triggers or HTTP endpoints will return errors while on the Spark plan.

### Is there a hard spending cap on the Blaze plan instead of downgrading?

No. Firebase does not offer a hard spending cap on the Blaze plan. Budget alerts are notification-only and do not stop charges. If you need guaranteed cost control, downgrading to Spark is the only option.

### Can RapidDev help optimize my Firebase costs before I decide to downgrade?

Yes, RapidDev can audit your Firebase usage, optimize Firestore queries, reduce Cloud Functions cold starts, and implement cost-saving patterns that may keep your Blaze costs low enough that downgrading is unnecessary.

---

Source: https://www.rapidevelopers.com/firebase-tutorial/how-to-downgrade-firebase-blaze-plan
© RapidDev — https://www.rapidevelopers.com/firebase-tutorial/how-to-downgrade-firebase-blaze-plan
