diff --git a/lib/joint/FrictionJoint.js b/lib/joint/FrictionJoint.js
index <HASH>..<HASH> 100644
--- a/lib/joint/FrictionJoint.js
+++ b/lib/joint/FrictionJoint.js
@@ -39,6 +39,7 @@ var Velocity = require('../common/Velocity');
 var Position = require('../common/Position');
 
 var Joint = require('../Joint');
+var Body = require('../Body');
 
 FrictionJoint.TYPE = 'friction-joint';
 
@@ -117,6 +118,28 @@ function FrictionJoint(def, bodyA, bodyB, anchor) {
   // K = invI1 + invI2
 }
 
+FrictionJoint.prototype._serialize = function() {
+  return {
+    type: this.m_type,
+    bodyA: this.m_bodyA,
+    bodyB: this.m_bodyB,
+    collideConnected: this.m_collideConnected,
+
+    maxForce: this.m_maxForce,
+    maxTorque: this.m_maxTorque,
+
+    localAnchorA: this.m_localAnchorA,
+    localAnchorB: this.m_localAnchorB,
+  };
+};
+
+FrictionJoint._deserialize = function(data, world, restore) {
+  data.bodyA = restore(Body, data.bodyA, world);
+  data.bodyB = restore(Body, data.bodyB, world);
+  var joint = new FrictionJoint(data);
+  return joint;
+};
+
 /**
  * The local anchor point relative to bodyA's origin.
  */
FrictionJoint serializer