diff --git a/bower.json b/bower.json
index 60c7536..5cb051e 100644
--- a/bower.json
+++ b/bower.json
@@ -14,7 +14,8 @@
   },
   "dependencies": {
     "purescript-eff": "^3.0.0",
-    "purescript-maybe": "^3.0.0"
+    "purescript-maybe": "^3.0.0",
+    "purescript-arraybuffer-types": "^2.0.0"
   },
   "devDependencies": {
     "purescript-assert": "^3.0.0",
diff --git a/src/Node/Buffer.js b/src/Node/Buffer.js
index b8b5a45..52a3126 100644
--- a/src/Node/Buffer.js
+++ b/src/Node/Buffer.js
@@ -25,6 +25,12 @@ exports.fromStringImpl = function (str) {
   };
 };
 
+exports.toArrayBuffer = function(buff) {
+  return function() {
+    return buff.buffer.slice(buff.byteOffset, buff.byteOffset + buff.byteLength);
+  };
+};
+
 exports.readImpl = function (ty) {
   return function (offset) {
     return function (buf) {
diff --git a/src/Node/Buffer.purs b/src/Node/Buffer.purs
index 0a5f7dd..7709e16 100644
--- a/src/Node/Buffer.purs
+++ b/src/Node/Buffer.purs
@@ -7,6 +7,7 @@ module Node.Buffer
   , create
   , fromArray
   , fromString
+  , toArrayBuffer
   , read
   , readString
   , toString
@@ -23,7 +24,9 @@ module Node.Buffer
   ) where
 
 import Prelude
+
 import Control.Monad.Eff (Eff, kind Effect)
+import Data.ArrayBuffer.Types (ArrayBuffer)
 import Data.Maybe (Maybe(..))
 import Node.Encoding (Encoding, encodingToNode)
 
@@ -91,6 +94,8 @@ fromString str = fromStringImpl str <<< encodingToNode
 
 foreign import fromStringImpl :: forall e. String -> String -> Eff (buffer :: BUFFER | e) Buffer
 
+foreign import toArrayBuffer :: forall e. Buffer -> Eff (buffer :: BUFFER | e) ArrayBuffer
+
 -- | Reads a numeric value from a buffer at the specified offset.
 read :: forall e. BufferValueType -> Offset -> Buffer -> Eff (buffer :: BUFFER | e) Int
 read = readImpl <<< show