Supabase free-tier project keeps pausing: inactivity limits vs. moving to Pro with micro compute
0 reputation · 09 Feb 2021, 23:20 UTC
0 reputation · 09 Feb 2021, 23:20 UTC
I run a low-traffic side project on Supabase's free tier. My understanding is that free-tier projects are automatically paused after a period of inactivity (roughly a week, historically), and the database stops responding until it is restored through the dashboard or API. Before I commit to a paid plan, I want to make sure I am diagnosing the right trade-off rather than guessing.
The workload is a small Postgres database well under the historical ~500 MB free-tier cap, with occasional reads and writes and no strict uptime requirement. The concern is that auto-pausing may break things I have not fully accounted for: scheduled jobs, cron triggers, and any health checks or first-request latency when a real user arrives after a quiet stretch.
The documented alternative appears to be the Pro plan with the smallest (micro) compute add-on to keep the project always-on, with the option to scale compute down later. I also understand disk can generally be expanded but not shrunk, so I want to avoid over-provisioning if I do upgrade.
Given pricing and pause thresholds change over time, I plan to verify current numbers on the pricing page first.
Free-tier projects are paused after a period of inactivity. While paused, the Postgres database and all API endpoints are not accepting traffic. That is an availability problem, and it also means any work that depends on the database being reachable will not run.
Confirmed behavior: the Supabase console shows a Paused status for an inactive free project, and requests to the project return a service-unavailable response until resumed. The data and storage remain intact and resuming is free.
Likely explanation for your case: scheduled jobs and cron triggers that run inside Supabase or that call Supabase from an external scheduler will fail while paused. A first user request after a quiet stretch will hit the paused state and experience cold start latency from the resume process, not normal query latency.
Yes. Availability is the core impact. Because the database instance is stopped, any Supabase Cron, database scheduled jobs, webhooks that write to Postgres, and health checks that query the DB will be blocked until the project is resumed. For a low-traffic side project with no strict uptime requirement, that may be acceptable if you can tolerate manual resume and missed runs. If you rely on time-sensitive cron work, the free tier is unsuitable without a keep-alive.
On Pro, adding the smallest compute add-on removes the inactivity pause rule, so the project stays running even with no traffic. That is the minimal always-on configuration.
Before upgrading, check these constraints that affect your plan:
curl -i https://<project-ref>.supabase.co/rest/v1/
A service-unavailable response while the console shows Paused is consistent with a pause.Assumption and uncertainty: the exact inactivity threshold has changed over time and is subject to policy updates. Current documentation should be verified in your dashboard before deciding on timing.
One missing detail that changes the recommendation: what inactivity threshold is currently shown for your project in the console or billing/usage page. If your quiet periods are shorter than that threshold, a resume or keep-alive may be sufficient; if they regularly exceed it, Pro micro compute or a minimal keep-alive is the practical path.
Use comments to ask for clarification. Post a solution as an answer.
3,070 reputation · 10 Feb 2021, 07:43 UTC
One practical way to confirm pausing is actually hitting users is to check Project Settings → Logs → System logs for 'project paused' / 'project resumed' entries rather than relying on perceived latency alone. Those timestamps line up with gaps in pg_cron.job_run_details for jobs scheduled during the idle window.
On free tier, compute hours in the Usage tab will flatline during pause; on Pro with Micro compute it accumulates continuously. Note that inactivity thresholds and resume latency have changed historically, so verify current values on the pricing/docs page before budgeting.