Detect, launch and stop browsers

Usage no npm install needed!

<script type="module">
  import theLastBrowserLauncher from '';



Detect the browsers installed on your system and launch them in an isolated profile for automation & testing purposes. Supports Linux, Mac and Windows.

npm status node Travis build status JavaScript Style Guide

This project is the latest in a long series, each forked from the last:

They all have their problems. This fork is temporary, meant to consolidate fixes and reduce API surface, after which it will be split up into small, community-owned modules. In other words, this fork exists so that the project can die a good death. Its API is subject to change without warning.

Supported browsers

  • Chrome
  • Chromium
  • Firefox
  • IE (Windows only)
  • Chromium-based Edge (Windows & Mac only)
  • Brave
  • Opera
  • Safari


npm install the-last-browser-launcher


Browser launch

const launcher = require('the-last-browser-launcher')

launcher.detect(function(err, manifests) {
  if (err) throw err

  launcher.launch(manifests[0], '', function(err, instance) {
    if (err) throw err

    console.log('Instance started with PID:',

    instance.on('stop', function(code) {
      console.log('Instance stopped with exit code:', code)


$ node example/launch.js
Instance started with PID: 12345
Instance stopped with exit code: 0


const launcher = require('the-last-browser-launcher')


Get available browsers.


  • Function callback(err, manifests)

launcher.launch(manifest, uri[, options], callback)

Open given URI in a browser and yield an instance of it.


  • Object manifest - A manifest from detect()
  • String uri - URI to open in a newly started browser
  • Object options:
    • String proxy - URI of the proxy server
    • Array args - additional command line arguments
    • Boolean skipDefaults - don't supply any default args to browser
    • Boolean detached - if true, then killing your script will not kill the opened browser
    • Array|String noProxy - An array of strings, containing proxy routes to skip over
    • Boolean headless - run in headless mode. Supported cross-platform by Chromium, Chrome, Edge, Brave and Firefox.
  • Function callback(err, instance)


Browser instance object.


  • Object process - reference to instance's process started with Node's child_process.spawn API
  • Number pid - instance's process PID
  • Stream stdout - instance's process STDOUT stream
  • Stream stderr - instance's process STDERR stream


  • stop - fired when instance stops


  • unref()
  • stop(callback) - stop the instance and fire the callback once stopped

Known Issues

  • IE8: after several starts and stops, if you manually open IE it will come up with a pop-up asking if we want to restore tabs (#21)
  • Chrome @ OSX: it's not possible to launch multiple instances of Chrome at once