Tell Me When Down
How it worksWhat we checkPricing
Security reportsBlogFree toolsCompareDocs
Log inGet started
All postsWhen your free tier falls asleep

MongoDB Atlas cluster paused: why it happens and how to stop it

September 21, 2026·6 min read
Close-up of rack-mounted database servers lit blue in a dark data centre.

Your app worked last month. Today every database call fails, and the Atlas dashboard shows your cluster as paused.

Nothing broke. MongoDB Atlas paused your Free cluster because nothing had connected to it in a while.

Here's why it happens, how to get it back, and how to stop it catching you out again.

MongoDB Atlas cluster paused: why it happens

Atlas automatically pauses a Free cluster after 30 days of inactivity, which MongoDB defines as zero connections to the cluster.

"Free cluster" is the current name for what used to be called M0. Same thing; the Atlas docs renamed it to match the dashboard.

Once paused, the cluster refuses every connection until you resume it. To your app, that looks exactly like the database being down.

Some Atlas warning emails have said 60 days. MongoDB's current documentation says 30. Plan around the shorter number.
30 days
with zero connections before a Free cluster pauses
7 days
warning email sent before the pause
0
connections allowed while it's paused
Flex
the paid tier Atlas never auto-pauses

The warning email you probably missed

Atlas emails you seven days before it pauses the cluster, and again once it has.

If that address is an old inbox or a filtered folder, the first you hear of it is a broken app.

Some people get the warning even though their app is busy. In one MongoDB community thread, the suggested cause was a different project with an idle Free cluster.

So before you panic, check which cluster and project the email actually names.

How to resume a paused MongoDB Atlas cluster

Resuming happens in the Atlas dashboard, not from your app:

  1. Log in to MongoDB Atlas and pick the organization and project that own the cluster.
  2. Open the project's Clusters page.
  3. Click Resume on the paused cluster.

Once it's running again, your app can connect to it as before.

If Atlas won't let you resume it

There's one catch. Atlas can't resume a paused Free cluster that was running an older MongoDB version it can no longer restore to the current one.

In that case MongoDB's documented route is roundabout, and it costs money for a short while.

  • Spin up a paid M10 cluster on the same MongoDB version and restore the Free cluster's backup snapshot into it.
  • Upgrade that cluster, export with mongodump, and load the data into a fresh Free cluster with mongorestore.
  • Delete the M10 so it stops billing you.
MongoDB's own advice: export a copy of your data if you won't use a Free cluster for a long time. That copy is your way out if a resume is ever blocked.

How to stop MongoDB Atlas pausing your cluster

You have two honest options.

How to stop it for good: upgrade off the Free tier

Atlas's docs say it doesn't automatically pause inactive Flex clusters, which are a paid tier.

If the app matters to real users, this is the real fix. The pause is how the Free tier stays free.

How to keep a Free cluster active with a scheduled ping

The pause only triggers after 30 days of zero connections. So one real connection a day resets the clock with plenty of room to spare.

Make it a real connection from an app or script. The same forum thread warns that browsing collections in the Atlas UI or Compass may not count as activity.

One gotcha: Atlas only accepts connections from IP addresses on your project's access list. A scheduled job running somewhere new will be refused until you allow it.

Hand this prompt to your AI tool and it'll write a daily keep-alive that fails loudly:

paste into Claude or ChatGPT
Write a GitHub Actions workflow that keeps my MongoDB Atlas Free cluster from being auto-paused for inactivity.

Requirements:
- Runs once a day on a schedule, plus workflow_dispatch so I can run it by hand.
- Uses the official MongoDB Node.js driver and a connection string stored as a GitHub secret named MONGODB_URI (never hardcoded).
- Connects, runs a cheap { ping: 1 } command against the admin database, then closes the connection.
- Exits non-zero if the connection or ping fails, so a broken cluster shows up as a red run, not a silent green one.
- Add a top comment reminding me: (a) Atlas only accepts connections from IPs on my project's IP access list, and GitHub's runners don't have fixed IPs, so tell me my options and the security trade-off of each; (b) GitHub disables scheduled workflows in public repos after 60 days of no repo activity.

Give me the full workflow file, a package.json if needed, and exactly which secret to add.
A keep-alive can't tell you when it stops. GitHub switches off scheduled workflows in public repos after 60 days of no repo activity, and then the pings just end.

How to know your MongoDB database is reachable before users do

A paused cluster doesn't announce itself. Your app just starts failing, and users notice first.

The fix is a health check: a tiny function that pings the database and reports the result somewhere that will shout when it goes wrong.

With Tell Me When Down, that's one call from your app. A ping command is MongoDB's cheapest "are you there?" question.

node · mongodb driver
import { MongoClient } from "mongodb";
import { tmwd } from "@tellmewhendown/node";

const client = new MongoClient(process.env.MONGODB_URI);

export async function checkMongo() {
  const started = Date.now();
  try {
    await client.db("admin").command({ ping: 1 });
    await tmwd.check("db", { status: "ok", latencyMs: Date.now() - started });
  } catch (err) {
    await tmwd.check("db", { status: "fail", detail: { error: String(err) } });
  }
}

Run it on a schedule, from a cron route or a worker. Every run is also a real connection, so it doubles as your keep-alive.

If the check reports fail or goes quiet, you get an email. That covers a paused cluster and a keep-alive that silently stopped running.

The same idle-pause trap hits other free databases too. See why Supabase pauses your project, or the full cross-host playbook in how to keep a free backend awake.

Find out your database paused before your users do.

Join Tell Me When Down free and we'll watch your app and its database around the clock. A paused Atlas cluster, a failing health check, or a keep-alive that quietly stopped — you get an email in minutes, not a bug report next month.

Watch my appfree · no card required
more on when your free tier falls asleep
Fly.io machine keeps stopping: auto_stop_machines explainedNew Fly.io apps auto-stop idle machines by default. Here's why it happens, the fly.toml settings for always-on, suspend and background workers, and how to know your scheduled jobs still run.Upstash Redis database archived: why it happened and how to restore itUpstash archives a free Redis database after a month of no use, and your app's calls start failing. Your data is backed up. Here's how to restore it and keep it from happening again.How to keep a free backend awakeFree tiers sleep when idle: Supabase pauses, Render spins down, Neon scales to zero. Here's the map — how each host sleeps, why keep-alive pings have a catch, and what actually keeps a free app responsive.How to stop Render spinning down your free serviceFifteen idle minutes and your free service is asleep; the next visitor waits through the cold start. Here's why keep-warm pings have a catch, and what actually keeps a free app responsive.How to keep a Railway app awakeRailway retired its free tier and added opt-in App Sleeping. Here's what actually happens to an idle service now, how to keep one awake without cancelling out the savings, and why a keep-alive ping can't warn you when it dies.How to stop Neon autosuspending your databaseNeon scales your compute to zero after a few idle minutes, and the next query wakes it. Here's what Scale to Zero does, why the fix depends on whether latency or a surprise bill is your real problem, and how to keep it warm safely.Why is my website slow the first time I open it?Slow the first time, instant after? Your site probably isn't slow — it was asleep. Free hosting pauses an idle app and takes seconds to wake it. Here's why it happens, which hosts do it, and your three options.Why Supabase pauses your project — and how to stop it happening againThe pause always lands when you've stopped watching. Here's the real mechanic behind it, the 90-day deadline nobody mentions, and why most keep-alive scripts quietly stop working.

spot something wrong or out of date? [email protected] — we'll fix it

Tell Me When Down

Uptime and security monitoring for people who'd rather ship than babysit servers. We watch so you can sleep.

product
How it worksWhat we checkSecurity reportsPricingDocsBlogFAQ
free toolsWebsite security scanSupabase pause checkRender sleep checkMixed content checkerSecurity headers checkCookie security checkSSL expiry check
comparevs UptimeRobotvs Better Stackvs PingdomFor indie hackers
company
StatusAbout our botContactPrivacyTerms
© 2026 TellMeWhenDown · tellmewhendown.com