diff --git a/resources/js/components/attachments.js b/resources/js/components/attachments.js
index 51e54054e..6dcfe9f12 100644
--- a/resources/js/components/attachments.js
+++ b/resources/js/components/attachments.js
@@ -33,6 +33,15 @@ class Attachments {
         this.container.addEventListener('event-emit-select-edit-back', event => {
             this.stopEdit();
         });
+
+        this.container.addEventListener('event-emit-select-insert', event => {
+            const insertContent = event.target.closest('[data-drag-content]').getAttribute('data-drag-content');
+            const contentTypes = JSON.parse(insertContent);
+            window.$events.emit('editor::insert', {
+                html: contentTypes['text/html'],
+                markdown: contentTypes['text/plain'],
+            });
+        });
     }
 
     reloadList() {
diff --git a/resources/js/components/markdown-editor.js b/resources/js/components/markdown-editor.js
index 5ffe4ef4d..c371a9839 100644
--- a/resources/js/components/markdown-editor.js
+++ b/resources/js/components/markdown-editor.js
@@ -563,6 +563,12 @@ class MarkdownEditor {
             this.cm.setCursor(cursorPos.line + prependLineCount, cursorPos.ch);
         });
 
+        // Insert editor content at the current location
+        window.$events.listen('editor::insert', (eventContent) => {
+            const markdown = getContentToInsert(eventContent);
+            this.cm.replaceSelection(markdown);
+        });
+
         // Focus on editor
         window.$events.listen('editor::focus', () => {
             this.cm.focus();
diff --git a/resources/js/components/wysiwyg-editor.js b/resources/js/components/wysiwyg-editor.js
index 05897c250..a32e78161 100644
--- a/resources/js/components/wysiwyg-editor.js
+++ b/resources/js/components/wysiwyg-editor.js
@@ -401,6 +401,11 @@ function listenForBookStackEditorEvents(editor) {
         editor.setContent(content);
     });
 
+    // Insert editor content at the current location
+    window.$events.listen('editor::insert', ({html}) => {
+        editor.insertContent(html);
+    });
+
     // Focus on the editor
     window.$events.listen('editor::focus', () => {
         editor.focus();
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index ac17a10d4..f64867a56 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -265,6 +265,7 @@ return [
     'attachments_link_url' => 'Link to file',
     'attachments_link_url_hint' => 'Url of site or file',
     'attach' => 'Attach',
+    'attachments_insert_link' => 'Add Attachment Link to Page',
     'attachments_edit_file' => 'Edit File',
     'attachments_edit_file_name' => 'File Name',
     'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
diff --git a/resources/views/attachments/manager-list.blade.php b/resources/views/attachments/manager-list.blade.php
index 30307ff41..313faa575 100644
--- a/resources/views/attachments/manager-list.blade.php
+++ b/resources/views/attachments/manager-list.blade.php
@@ -10,13 +10,22 @@
                 <a href="{{ $attachment->getUrl() }}" target="_blank">{{ $attachment->name }}</a>
             </div>
             <div class="flex-fill justify-flex-end">
+                <button component="event-emit-select"
+                        option:event-emit-select:name="insert"
+                        type="button"
+                        title="{{ trans('entities.attachments_insert_link') }}"
+                        class="drag-card-action text-center text-primary">@icon('link')                 </button>
                 <button component="event-emit-select"
                         option:event-emit-select:name="edit"
                         option:event-emit-select:id="{{ $attachment->id }}"
                         type="button"
+                        title="{{ trans('common.edit') }}"
                         class="drag-card-action text-center text-primary">@icon('edit')</button>
                 <div component="dropdown" class="flex-fill relative">
-                    <button refs="dropdown@toggle" type="button" class="drag-card-action text-center text-neg">@icon('close')</button>
+                    <button refs="dropdown@toggle"
+                            type="button"
+                            title="{{ trans('common.delete') }}"
+                            class="drag-card-action text-center text-neg">@icon('close')</button>
                     <div refs="dropdown@menu" class="dropdown-menu">
                         <p class="text-neg small px-m mb-xs">{{ trans('entities.attachments_delete') }}</p>
                         <button refs="ajax-delete-row@delete" type="button" class="text-primary small delete">{{ trans('common.confirm') }}</button>