Interface to OSX Pasteboard

Usage no npm install needed!

<script type="module">
  import pb from 'https://cdn.skypack.dev/pb';



Improved pbcopy/pbpaste for OSX

The standard pbcopy and pbpaste utilities can manipulate the plaintext clipboard but have no easy way of accessing the HTML pasteboard. This module and CLI tool provide a more convenient way to access the pasteboard from node.


With npm:

$ npm install -g pb

Depending on your system configuration, you may need to run as root:

$ sudo npm install -g pb

Command-Line Tool Usage

To get data from a specific pasteboard:

$ pb [type]
$ pb -m <type>

To set a specific pasteboard, pipe data into pb:

$ get_data | pb -s [type]

To list available pasteboards:

$ pb -l

For example, to grab the contents of the HTML pasteboard and put it on the plaintext pasteboard:

$ pb -m html | pb -s

Library Usage

From node, pb exposes:

  • get(type): get pasteboard data from specified pasteboard
  • set(type, data): set pasteboard data (overwrites other pasteboards)
  • available(): enumerate populated pasteboards
  • gettypes(): enumerate available pasteboards

This example gets the pasteboard HTML data and copies to plaintext pasteboard:

var pb = require('pb');
var HTMLOutput = pb.get('html');
pb.set('text', HTMLOutput);

Supported Pasteboards

type description
NSStringPboardType plaintext


Please consult the attached LICENSE file for details. All rights not explicitly granted by the Apache 2.0 license are reserved by the Original Author.