# Changing plans

> Upgrade or downgrade a SupaHost instance between Builder, Pro and Business. What changes, the minute or two of downtime while the VM resizes, and what to check before you switch.

Source: https://supahost.app/docs/platform/changing-plans · Updated 2026-11-11

You can move your instance between Builder, Pro and Business at any time from the dashboard. Changing plan resizes the VM, so all projects on the instance are offline for about a minute or two while it restarts on the new size. Plan the switch for a quiet time.

## How to change plan

1. Open **Dashboard → Usage & billing** (only the owner can change plans).
2. Click **Change plan** and pick the new plan.
3. Confirm. The instance is resized to the new machine type.

The sidebar also has an **Upgrade** button, hidden on Business, which is the largest self-serve plan. For Enterprise, email supahost@volods.com.

To switch between monthly and annual billing, use the **Monthly / Annual** toggle on the same page. See [Free trial and billing](/docs/platform/trial-and-billing).

## What happens during the resize

- The VM stops, changes machine type, and starts again. Every project on the instance is unavailable for about a minute or two.
- Your data stays where it is. Databases, Storage files and settings live on the instance's disk, which is kept.
- The disk only ever grows, so a smaller plan keeps the disk you have.
- Your URLs, keys, custom domains and IP address don't change.

Clients see failed requests while the VM restarts. supabase-js retries Realtime connections on its own, but your app should handle a short burst of errors from the Data API, Auth and Storage. A small retry with backoff on server-side calls is enough:

```ts
async function withRetry<T>(fn: () => PromiseLike<{ data: T | null; error: unknown }>, tries = 4) {
  for (let i = 0; i < tries; i++) {
    const { data, error } = await fn()
    if (!error) return data
    await new Promise((r) => setTimeout(r, 500 * 2 ** i)) // 0.5s, 1s, 2s, 4s
  }
  throw new Error('Request failed after retries')
}

const bookings = await withRetry(() => supabase.from('bookings').select('id, starts_at').limit(50))
```

## What changes with each plan

| | Builder | Pro | Business |
|---|---|---|---|
| Server | 2 shared vCPU, 4 GB RAM | Dedicated 2 vCPU, 8 GB RAM | Dedicated 4 vCPU, 16 GB RAM |
| Projects included | 5 | 15 | 30 |
| Database / file storage / egress | 8 GB / 100 GB / 250 GB | 25 GB / 250 GB / 500 GB | 50 GB / 500 GB / 1 TB |
| Custom domains | 1 | 3 | 10 |
| Daily backups kept | 7 days | 7 days | 14 days |
| Point-in-time recovery | No | 7 days | 14 days |
| Branching | No | Yes | Yes |
| SSH and direct Postgres | No | No | Yes |

## Upgrading

Moving up gives you more CPU and memory straight after the restart, bigger shared quotas, more included projects and domains, and the features of the new plan:

- **To Pro:** point-in-time recovery and branching become available.
- **To Business:** you can add SSH keys and open a tunnel to Postgres. Port 22 opens once the first key is added. Backups and PITR are kept for 14 days.

Upgrade when the instance is regularly busy, not only when it's full. Signs it's time: slow queries that are already indexed, high CPU during normal traffic, or usage alerts every month. See [High CPU usage on your instance](/kb/high-cpu).

## Downgrading

Check these before moving to a smaller plan:

1. **Projects.** If you have more projects than the new plan includes, each extra one costs $3 a month. Delete projects and branches you no longer need first.
2. **Custom domains.** Extra domains beyond the new allowance cost $2 a month each.
3. **Quotas.** If your database, file storage or egress is above the new plan's quota, you'll pay overage or need add-ons. See [Usage, quotas and add-ons](/docs/platform/usage).
4. **Backups.** Retention follows your plan. Going from Business to Pro shortens the window from 14 to 7 days, so expect older backups to be pruned.
5. **Point-in-time recovery and branching** aren't on Builder. Delete branches before moving to Builder, and export anything you'd want from them.
6. **SSH.** Below Business, port 22 is closed and the tunnel stops working. Move any scripts that use `supahost-psql` or the tunnel to the Data API or Studio first.
7. **Capacity.** A smaller VM handles less traffic. Compare your busiest hour against the guides on [Plans and limits](/docs/platform/plans).

## During the trial

To lift the trial's 3-project limit, activate the paid plan early. See [Free trial and billing](/docs/platform/trial-and-billing).

## Related

- [Plans and limits](/docs/platform/plans)
- [Instances](/docs/platform/instances)
- [Can SupaHost scale as my app grows?](/kb/scaling)
