diff --git a/src/components/sprite-selector-item/sprite-selector-item.jsx b/src/components/sprite-selector-item/sprite-selector-item.jsx
index 8dd048312b879d3b0220beab44d07b973821c941..648248514f5dfad010266c7c11579626825cdf69 100644
--- a/src/components/sprite-selector-item/sprite-selector-item.jsx
+++ b/src/components/sprite-selector-item/sprite-selector-item.jsx
@@ -39,6 +39,15 @@ const SpriteSelectorItem = props => (
         ) : null}
         <div className={styles.spriteName}>{props.name}</div>
         <ContextMenu id={`${props.name}-${contextMenuId++}`}>
+            {props.onDuplicateButtonClick ? (
+                <MenuItem onClick={props.onDuplicateButtonClick}>
+                    <FormattedMessage
+                        defaultMessage="duplicate"
+                        description="Menu item to duplicate in the right click menu"
+                        id="contextMenu.duplicate"
+                    />
+                </MenuItem>
+            ) : null}
             <MenuItem onClick={props.onDeleteButtonClick}>
                 <FormattedMessage
                     defaultMessage="delete"
@@ -55,7 +64,8 @@ SpriteSelectorItem.propTypes = {
     costumeURL: PropTypes.string,
     name: PropTypes.string.isRequired,
     onClick: PropTypes.func,
-    onDeleteButtonClick: PropTypes.func,
+    onDeleteButtonClick: PropTypes.func.isRequired,
+    onDuplicateButtonClick: PropTypes.func,
     selected: PropTypes.bool.isRequired
 };
 
diff --git a/src/components/sprite-selector/sprite-selector.jsx b/src/components/sprite-selector/sprite-selector.jsx
index 005a976f35b5ec41e4ee7f06b5d4a022fbda03ae..0110bea1ff97619027f0236799bfe35fb9351325 100644
--- a/src/components/sprite-selector/sprite-selector.jsx
+++ b/src/components/sprite-selector/sprite-selector.jsx
@@ -27,6 +27,7 @@ const SpriteSelectorComponent = function (props) {
         onChangeSpriteX,
         onChangeSpriteY,
         onDeleteSprite,
+        onDuplicateSprite,
         onNewSpriteClick,
         onSelectSprite,
         selectedId,
@@ -77,6 +78,7 @@ const SpriteSelectorComponent = function (props) {
                                 selected={sprite.id === selectedId}
                                 onClick={onSelectSprite}
                                 onDeleteButtonClick={onDeleteSprite}
+                                onDuplicateButtonClick={onDuplicateSprite}
                             />
                         ))
                     }
@@ -100,6 +102,7 @@ SpriteSelectorComponent.propTypes = {
     onChangeSpriteX: PropTypes.func,
     onChangeSpriteY: PropTypes.func,
     onDeleteSprite: PropTypes.func,
+    onDuplicateSprite: PropTypes.func,
     onNewSpriteClick: PropTypes.func,
     onSelectSprite: PropTypes.func,
     selectedId: PropTypes.string,
diff --git a/src/components/target-pane/target-pane.jsx b/src/components/target-pane/target-pane.jsx
index 07281756df4729331ef5b7429ec9c26238404d3b..9ee7b5f4e10ebb27a27898be7b91fd2c52469271 100644
--- a/src/components/target-pane/target-pane.jsx
+++ b/src/components/target-pane/target-pane.jsx
@@ -34,6 +34,7 @@ const TargetPane = ({
     onChangeSpriteX,
     onChangeSpriteY,
     onDeleteSprite,
+    onDuplicateSprite,
     onNewSpriteClick,
     onRequestCloseBackdropLibrary,
     onRequestCloseCostumeLibrary,
@@ -61,6 +62,7 @@ const TargetPane = ({
             onChangeSpriteX={onChangeSpriteX}
             onChangeSpriteY={onChangeSpriteY}
             onDeleteSprite={onDeleteSprite}
+            onDuplicateSprite={onDuplicateSprite}
             onNewSpriteClick={onNewSpriteClick}
             onSelectSprite={onSelectSprite}
         />
@@ -141,6 +143,7 @@ TargetPane.propTypes = {
     onChangeSpriteX: PropTypes.func,
     onChangeSpriteY: PropTypes.func,
     onDeleteSprite: PropTypes.func,
+    onDuplicateSprite: PropTypes.func,
     onNewSpriteClick: PropTypes.func,
     onRequestCloseBackdropLibrary: PropTypes.func,
     onRequestCloseCostumeLibrary: PropTypes.func,
diff --git a/src/containers/sprite-selector-item.jsx b/src/containers/sprite-selector-item.jsx
index aa19efc1f6bb6f2180501fd378f10766de01932b..0bc01382cac731a6bcef3b52a16fe4fb4c2d757b 100644
--- a/src/containers/sprite-selector-item.jsx
+++ b/src/containers/sprite-selector-item.jsx
@@ -11,7 +11,8 @@ class SpriteSelectorItem extends React.Component {
         super(props);
         bindAll(this, [
             'handleClick',
-            'handleDelete'
+            'handleDelete',
+            'handleDuplicate'
         ]);
     }
     handleClick (e) {
@@ -24,6 +25,10 @@ class SpriteSelectorItem extends React.Component {
             this.props.onDeleteButtonClick(this.props.id);
         }
     }
+    handleDuplicate (e) {
+        e.stopPropagation(); // To prevent from bubbling back to handleClick
+        this.props.onDuplicateButtonClick(this.props.id);
+    }
     render () {
         const {
             /* eslint-disable no-unused-vars */
@@ -31,6 +36,7 @@ class SpriteSelectorItem extends React.Component {
             id,
             onClick,
             onDeleteButtonClick,
+            onDuplicateButtonClick,
             /* eslint-enable no-unused-vars */
             ...props
         } = this.props;
@@ -38,6 +44,7 @@ class SpriteSelectorItem extends React.Component {
             <SpriteSelectorItemComponent
                 onClick={this.handleClick}
                 onDeleteButtonClick={this.handleDelete}
+                onDuplicateButtonClick={onDuplicateButtonClick ? this.handleDuplicate : null}
                 {...props}
             />
         );
@@ -50,7 +57,8 @@ SpriteSelectorItem.propTypes = {
     id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
     name: PropTypes.string,
     onClick: PropTypes.func,
-    onDeleteButtonClick: PropTypes.func,
+    onDeleteButtonClick: PropTypes.func.isRequired,
+    onDuplicateButtonClick: PropTypes.func,
     selected: PropTypes.bool
 };
 
diff --git a/src/containers/target-pane.jsx b/src/containers/target-pane.jsx
index 0ec1c43ff16e053aa19509f34bc2aa1e1469aa0e..3a68847c657d15eae94475e5efdc7923b68a1d48 100644
--- a/src/containers/target-pane.jsx
+++ b/src/containers/target-pane.jsx
@@ -25,6 +25,7 @@ class TargetPane extends React.Component {
             'handleChangeSpriteX',
             'handleChangeSpriteY',
             'handleDeleteSprite',
+            'handleDuplicateSprite',
             'handleSelectSprite'
         ]);
     }
@@ -49,6 +50,9 @@ class TargetPane extends React.Component {
     handleDeleteSprite (id) {
         this.props.vm.deleteSprite(id);
     }
+    handleDuplicateSprite (id) {
+        this.props.vm.duplicateSprite(id);
+    }
     handleSelectSprite (id) {
         this.props.vm.setEditingTarget(id);
     }
@@ -63,6 +67,7 @@ class TargetPane extends React.Component {
                 onChangeSpriteX={this.handleChangeSpriteX}
                 onChangeSpriteY={this.handleChangeSpriteY}
                 onDeleteSprite={this.handleDeleteSprite}
+                onDuplicateSprite={this.handleDuplicateSprite}
                 onSelectSprite={this.handleSelectSprite}
             />
         );