Node.js Desktop Automation.
Alternatives To Robotjs
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Robotjs11,8984552562 months ago34December 08, 2019182mitC
Node.js Desktop Automation.
Hotkeys Js6,27760941319 hours ago93November 26, 2023128mitJavaScript
➷ A robust Javascript library for capturing keyboard input. It has no dependencies.
Keyboard3,4011423816 months ago35March 23, 2020362mitPython
Hook and simulate global keyboard events on Windows and Linux.
Hotkey3,12527a day ago36October 31, 20238mitJavaScript
Trigger an action on an element with a keyboard shortcut.
React Hotkeys Hook2,20963642 days ago104July 04, 202346mitTypeScript
React hook for using keyboard shortcuts in components.
Angular Hotkeys1,704218144 years ago17February 18, 2016106mitJavaScript
Configuration-centric keyboard shortcuts for your Angular apps.
11 days ago11February 21, 202119mitSwift
⌨️ Add user-customizable global keyboard shortcuts (hotkeys) to your macOS app in minutes
Win Vind1,479
22 days ago60mitC++
You can operate Windows with key bindings like Vim.
Ninja Keys1,40676 months ago22July 01, 202226mitTypeScript
Keyboard shortcuts interface for your website. Working with static HTML, Vanilla JS, Vue, React, Svelte.
Capslock Plus1,019
2 months ago52gpl-2.0AutoHotkey
An efficiency tool that provides various functions by enhancing the Caps Lock key into a modifier key.
Alternatives To Robotjs
Select To Compare

Alternative Project Comparisons

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!



Install RobotJS using npm:

npm install robotjs

It's that easy! npm will download one of the prebuilt binaries for your OS.

You can get npm here if you don't have it installed.

If you need to build RobotJS, see the building section. Instructions for Electron.



// Move the mouse across the screen as a sine wave.
var robot = require("robotjs");

// Speed up the mouse.

var twoPI = Math.PI * 2.0;
var screenSize = robot.getScreenSize();
var height = (screenSize.height / 2) - 10;
var width = screenSize.width;

for (var x = 0; x < width; x++)
	y = height * Math.sin((twoPI * x) / width) + height;
	robot.moveMouse(x, y);
// 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!


The RobotJS API is hosted at


Please ensure you have the required dependencies before installing:

  • Windows
    • windows-build-tools npm package (npm install --global --production windows-build-tools from an elevated PowerShell or CMD.exe)
  • 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).

Install node-gyp using npm:

npm install -g node-gyp

Then build:

node-gyp rebuild

See the node-gyp readme for more details.


  • √ 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 an image on screen, read pixels from an image.
  • Possibly include window management?


Module Status Notes
Mouse 100% All planned features implemented.
Keyboard 100% All planned features implemented.
Screen 85% Image search, pixel search.
Bitmap 0% Saving/opening, png support.


Does RobotJS support global hotkeys?

Not currently, and I don't know if it ever will. I personally use Electron/NW.js for global hotkeys, and this works well. Later on I might add hotkey support or create a separate module. See #55 for details.

Can I take a screenshot with RobotJS?

Soon! This is a bit more complicated than the rest of the features, so I saved it for last. Luckily the code is already there, I just need to write the bindings, and I've already started. Subscribe to #13 for updates.

Why is <insert key> missing from the keyboard functions?

We've been implementing keys as we need them. Feel free to create an issue or submit a pull request!

How about multi-monitor support?

The library doesn't have explicit multi-monitor support, so anything that works is kind of on accident. Subscribe to #88 for updates.

For any other questions please submit an issue.


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.

Popular Keyboard Projects
Popular Hotkeys Projects
Popular Hardware Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.