diff --git a/src/components/views/messages/EditHistoryMessage.js b/src/components/views/messages/EditHistoryMessage.js
index 8069a8e290..9d1c4bd784 100644
--- a/src/components/views/messages/EditHistoryMessage.js
+++ b/src/components/views/messages/EditHistoryMessage.js
@@ -59,6 +59,15 @@ export default class EditHistoryMessage extends React.PureComponent {
         }, 'mx_Dialog_confirmredact');
     };
 
+    _onViewSourceClick = () => {
+        const ViewSource = sdk.getComponent('structures.ViewSource');
+        Modal.createTrackedDialog('View Event Source', '', ViewSource, {
+            roomId: this.props.mxEvent.getRoomId(),
+            eventId: this.props.mxEvent.getId(),
+            content: this.props.mxEvent.event,
+        }, 'mx_Dialog_viewsource');
+    };
+
     pillifyLinks() {
         // not present for redacted events
         if (this.refs.content) {
@@ -84,12 +93,19 @@ export default class EditHistoryMessage extends React.PureComponent {
     _renderActionBar() {
         const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
         // hide the button when already redacted
-        if (this.props.mxEvent.isRedacted()) {
-            return null;
+        let redactButton;
+        if (!this.props.mxEvent.isRedacted()) {
+            redactButton = (<AccessibleButton onClick={this._onRedactClick} disabled={!this.state.canRedact}>
+                {_t("Remove")}
+            </AccessibleButton>);
         }
+        const viewSourceButton = (<AccessibleButton onClick={this._onViewSourceClick}>
+                {_t("View Source")}
+            </AccessibleButton>);
         // disabled remove button when not allowed
         return (<div className="mx_MessageActionBar">
-            <AccessibleButton onClick={this._onRedactClick} disabled={!this.state.canRedact}>{_t("Remove")}</AccessibleButton>
+            {redactButton}
+            {viewSourceButton}
         </div>);
     }