Learn how to run scheduled jobs in Replit with simple steps and tools to automate tasks, boost workflow efficiency, and keep projects running smoothly.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
You can’t run true server‑side scheduled jobs inside Replit the way you would with a VPS or cron, because Replit projects don’t stay awake on their own. To run scheduled tasks reliably, you either need to:
use Replit Deployments (Reserved VM) which stay always-on and allow real cron-like scheduling, or
use an external scheduler (like cron on another server, or a free uptime monitor) to periodically hit an endpoint in your Repl.
Those are the only stable, real options.
Replit itself doesn’t provide a built-in “cron” button for regular Repls. Normal Repls sleep when there’s no traffic, so any internal timer code will stop running. Because of that, your choices are limited to the approaches below, which are real and proven ways Replit developers run scheduled tasks.
A Reserved VM is Replit’s always-on server. When you deploy a project as a Reserved VM, the code stays running 24/7, which means you can use normal timing libraries such as node-cron in Node.js or schedule/APScheduler in Python.
Here’s a real example using Node.js with node-cron:
// install first:
// npm install node-cron
const cron = require("node-cron");
// Every minute
cron.schedule("* * * * *", () => {
console.log("Running scheduled task at", new Date());
});
// keep your server running if you also expose routes
const express = require("express");
const app = express();
app.get("/", (req, res) => res.send("Hello from Replit!"));
app.listen(3000);
Once this is deployed as a Reserved VM, it will run exactly like a real server and the cron job will never pause.
If you can’t use a Reserved VM, the reliable workaround is to expose an HTTP endpoint (a URL your code listens to) and use an outside service to call it at scheduled times. This wakes your Repl and triggers your job.
Here’s a simple Node.js Express handler:
// index.js
const express = require("express");
const app = express();
app.get("/run-job", (req, res) => {
console.log("Job triggered by external scheduler");
// run your task here
res.send("Job executed");
});
app.listen(3000, () => console.log("Server running"));
You then use one of these external options:
This works well, but remember: the Repl will spin up each time it’s pinged, so don’t expect millisecond precision.
In a normal free Repl, your code stops when inactive. So setInterval or Python while True loops won’t run continuously. This option is only valid if you’ve already deployed the app as a Reserved VM.
setInterval(() => {
console.log("This only runs continuously if the Repl never sleeps");
}, 60000);
Do not rely on this in a normal free Repl — it will stop running as soon as the Repl sleeps.
In short: for real scheduled jobs, you either deploy on a Replit Reserved VM and run cron-like code internally, or you use an external scheduler that triggers a webhook. Those are the only stable, correct ways to do it in Replit today.
This prompt helps an AI assistant understand your setup and guide you through the fix step by step, without assuming technical knowledge.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.