Node.js script for keeping your Heroku application alive. Avoid time limit on your dyno.

Usage no npm install needed!

<script type="module">
  import herokuSelfPing from 'https://cdn.skypack.dev/heroku-self-ping';


Heroku self ping

To avoid the thirty minutes time limit on your dyno, use this npm module:



import hsp from 'heroku-self-ping';


This will register a timer self-pinging your app every 20 minutes.

This timer will only activate when your app is running on Heroku platform. The script is a no-op on any other environment, including local and CI.


  • your-app-url can be any URL to access your app -- an herokuapp.com subdomain or any custom domain defined with your app.

Heroku doesn't allow an app to retrieve its current name, which is why you need to manually specify the URL.

  • options, optional object with the following keys:
    • interval number of ms between two heartbeats calls. Default to 20 * 60 * 1000 (20 minutes).
    • logger function to use for logging. Default to console.log
    • verbose send more information to logger function. Default to false.


The function returns an interval id when running on Heroku and the URL is not falsy, and false in other cases.


We recommend you set a custom env variable, for instance heroku config:set APP_URL http://yourapp.herokuapp.com and access it later from process.env.APP_URL.

The lib won't do anything when passed an empty url.

You can also use


if you first run

heroku labs:enable runtime-dyno-metadata -a <app name>

See here for details: https://devcenter.heroku.com/articles/dyno-metadata