05 / Article

Render's free tier puts inactive backends to sleep after 15 minutes, causing cold starts that can delay API responses by 30–60 seconds. Here's how I reduced them for free using UptimeRobot.
A few weeks ago, I deployed my Node.js backend on Render's free tier.
Everything worked perfectly during testing, but after sharing my project with friends, I noticed something strange.
Sometimes the API responded instantly.
Sometimes it took 30–60 seconds.
At first, I thought my database was slow. Then I thought my code had performance issues.
But the real culprit was a cold start.
If you're a student, fresher, or beginner developer deploying projects on Render's free tier, you've probably faced the same issue.
In this article, I'll explain what cold starts are, why they happen, and how I reduced them using UptimeRobot without spending any money.
Render's free tier puts inactive services to sleep after 15 minutes.
Cold starts can delay the first request by 30–60 seconds.
UptimeRobot can periodically ping your backend before it goes idle.
This helps keep your service responsive.
No additional hosting cost required.
When you deploy a backend on Render's free tier, Render automatically puts your service to sleep after a period of inactivity.
This helps Render save server resources and keep its free tier sustainable.
The next time someone visits your application, Render has to:
Start the container
Load the application
Connect services
Initialize dependencies
Only after all of this is completed can it serve the request.
This startup delay is called a cold start.
Imagine your backend is like a computer.
When the computer is already running, opening a file takes only a second.
But if the computer is completely shut down, you first need to boot it up.
That boot-up process is very similar to a cold start.
I built a project and deployed the backend on Render.
When I tested it immediately after deployment, everything felt fast.
However, after leaving it unused for some time and opening the application again, the first request took nearly a minute.
For users, this creates a poor experience.
Many people think:
"The website is broken."
and leave before the server has a chance to wake up.
As developers, we often focus on writing code and forget that user experience starts with performance.
On the free tier, Render automatically suspends services after 15 minutes of inactivity.
Once the service receives a new request, it starts again.
This behavior is normal and expected on free hosting plans.
✅ Free hosting
✅ Easy deployment
✅ Great developer experience
❌ Cold start delays
❌ Slower first request
❌ Poor user experience for occasional visitors
While searching for solutions, I discovered UptimeRobot.
UptimeRobot is primarily a monitoring service that checks whether a website or API is online.
The interesting part is that those checks can also help keep your backend active.
Since it periodically sends requests to your application, the service remains active instead of becoming idle.
Instead of waiting for a real user to visit the application, UptimeRobot sends periodic requests to your backend.
Every request tells Render:
"Someone is still using this service."
As a result, the backend remains active and users are much less likely to experience cold starts.
It's a simple idea, but it can significantly improve the experience for portfolio projects and personal applications.
I configured UptimeRobot to send a request every 14 minutes.
The logic is simple:
Render puts inactive services to sleep after 15 minutes.
A request every 14 minutes prevents the service from becoming idle.
The backend stays responsive without generating excessive traffic.
You don't need to send requests every few minutes.
My goal was to keep the number of requests as low as possible while still preventing the service from sleeping.
Very safe
Creates more requests than necessary
Good balance
Comfortable safety margin
Lowest number of requests
Works close to Render's inactivity limit
If you prefer a larger safety margin, you can choose 10–12 minutes instead.
60 ÷ 14 ≈ 4.28
Approximately 4 requests per hour
4.28 × 24 ≈ 103
Approximately 103 requests per day
103 × 30 ≈ 3,090
Approximately 3,090 requests per month
For a monitoring service like UptimeRobot, this is completely reasonable.
Create a free account on UptimeRobot.
Choose:
HTTP(s) Monitor
Example:
https://your-api.onrender.com
Or use a dedicated health endpoint:
https://your-api.onrender.com/api/health
Choose an interval below 15 minutes.
I personally use 14 minutes.
That's it.
UptimeRobot will now periodically ping your backend.
Instead of pinging your main API routes, create a lightweight endpoint specifically for monitoring.
app.get("/api/health", (req, res) => {
res.status(200).json({
status: "healthy",
uptime: process.uptime(),
});
});
Faster response
Lower server load
Easier monitoring
Cleaner logs
This is a community workaround, not something officially guaranteed by Render.
It works well for personal projects and portfolios, but there is no guarantee that it will always prevent cold starts.
A missed ping, monitoring outage, network issue, or platform change could still allow the service to sleep occasionally.
For production applications, client projects, or business-critical systems, the most reliable solution is a paid hosting plan with always-on instances.
Think of this approach as a free-tier optimization rather than a permanent fix.
Not really.
A hack usually means exploiting a system in an unintended way.
This is simply using a monitoring service to periodically check your application.
Many developers use this technique for learning projects, portfolios, and personal applications.
Just make sure you use it responsibly and follow the platform's policies.
Not necessarily.
Portfolio projects
Student projects
Learning applications
Personal APIs
Experimental projects
Production applications
Client projects
Business applications
Revenue-generating platforms
In those situations, upgrading to an always-on hosting plan is the better choice.
As a beginner developer, I initially thought deployment was simply:
Write Code → Deploy → Done
But real-world deployment teaches you much more:
Hosting limitations
Monitoring
Server uptime
Infrastructure basics
Performance optimization
User experience
Finding solutions like this helped me better understand how backend infrastructure actually works.
And honestly, that's one of the most exciting parts of being a developer.
If you're preparing for backend interviews, you may also enjoy my Node.js Interview Questions Guide with practical examples.
If you're hosting your backend on Render's free tier and experiencing slow first requests, don't panic.
The issue is most likely a cold start, not a bug in your code.
Using UptimeRobot to periodically ping your application is a simple and beginner-friendly way to keep your backend responsive while learning and building projects.
It's not a replacement for production hosting, but it's an excellent solution for students, freshers, and developers who are just starting their journey.
Have you faced cold starts on Render or any other hosting platform?
I'd love to hear about your experience.
Happy coding! 🚀
06 / Continue Reading
More articles related to #render/#uptimerobot/#nodejs

About the Author
Full Stack Developer focused on Next.js, React, TypeScript and modern web development. I share practical guides, things I build, problems I solve and lessons I learn along the way.