Node.js Desktop Automation.

Clone this repo:
  1. 94bdb16 0.2.4 by Jason Stallings · 7 years ago master
  2. ce6274f Show build status for master branch. by Jason Stallings · 7 years ago
  3. 630822c Indent the description. by Jason Stallings · 7 years ago
  4. dbc4b8f Merge pull request #75 from octalmage/set-global-delays by Jason Stallings · 7 years ago
  5. dc52bc2 Make global delays configurable. #14 by Jason Stallings · 7 years ago set-global-delays


Node.js Desktop Automation. Control the mouse, keyboard, and read the screen.

RobotJS supports Mac, Windows, and Linux.

This is a work in progress so the exported functions could change at any time before the first stable release (1.0.0). Ideas?

Check out some of the cool things people are making with RobotJS! Have your own rad RobotJS project? Feel free to add it!

npm version Build Status Ready Join the chat at


Please make sure you have the required dependencies before installing:

  • Windows
    • Visual Studio 2013 (Express works fine).
    • Python (v2.7.3 recommended, v3.x.x is not supported).
  • Mac
    • Xcode Command Line Tools.
  • Linux
    • Python (v2.7 recommended, v3.x.x is not supported).
    • make.
    • A C/C++ compiler like GCC.
    • libxtst-dev and libpng++-dev (sudo apt-get install libxtst-dev libpng++-dev).

Then install RobotJS using npm:

npm install robotjs

I plan on using node-pre-gyp to make this process easier.


Get the mouse position, move it, then click.

var robot = require("robotjs");

//Get the mouse position, returns an object with x and y. 
var mouse = robot.getMousePos();
console.log("Mouse is at x:" + mouse.x + " y:" + mouse.y);

//Move the mouse down by 100 pixels.
robot.moveMouse(mouse.x, mouse.y + 100);

//Left click!

Type "Hello World" then press enter.

var robot = require("robotjs");

//Type "Hello World".
robot.typeString("Hello World");

//Press enter. 

Get pixel color under the mouse.

var robot = require("robotjs");

//Get mouse position. 
var mouse = robot.getMousePos();

//Get pixel color in hex format. 
var hex = robot.getPixelColor(mouse.x, mouse.y);
console.log("#" + hex + " at x:" + mouse.x + " y:" + mouse.y);

Read the Wiki for more information!


node-gyp is required to build RobotJS.

Install node-gyp using npm:

npm install -g node-gyp

Then configure and build:

node-gyp configure
node-gyp build


  • Control the mouse by changing the mouse position, left/right clicking, and dragging.
  • Control the keyboard by pressing keys, holding keys down, and typing words.
  • Read pixel color from the screen and capture the screen.
  • Find image on screen, read pixels from image.
  • Possibly include window management?


Mouse100%All planned features implemented.
Keyboard100%All planned features implemented.
Screen10%Screenshot, image search.


I'm a huge fan of AutoHotkey, and I've used it for a very long time. AutoHotkey is great for automation and it can do a bunch of things that are very difficult in other languages. For example, it's imagesearch and pixel related functions are hard to reproduce on Mac, especially in scripting languages. These functions are great for automating apps that can't be automated like Netflix. This has never been a big deal since I've always used Windows at work, but for the past few years I've been using Mac exclusively.

I like AutoHotkey, but I like Node.js more. By developing RobotJS I get an AutoHotkey replacement on Mac (finally!), and I get to use my favorite language.

TLDR: There's nothing like AutoHotkey on Mac, so I'm making it.



Based on autopy. Maintained by Jason Stallings.