diff --git a/patches/helium/ui/add-copy-download-link-context-menu.patch b/patches/helium/ui/add-copy-download-link-context-menu.patch
new file mode 100644
index 000000000..3e7ab3647
--- /dev/null
+++ b/patches/helium/ui/add-copy-download-link-context-menu.patch
@@ -0,0 +1,169 @@
+--- a/chrome/browser/download/download_commands.h
++++ b/chrome/browser/download/download_commands.h
+@@ -48,6 +48,7 @@
+ EDIT_WITH_MEDIA_APP = 22, // Open file using the ChromeOS media app with
+ // an editing hint.
+ OPEN_HELIUM_SERVICES = 23, // Open the Services page in settings.
++ COPY_DOWNLOAD_LINK = 24, // Copy the download source URL to the clipboard.
+
+- kMaxValue = OPEN_HELIUM_SERVICES, // Keep last.
++ kMaxValue = COPY_DOWNLOAD_LINK, // Keep last.
+ };
+--- a/chrome/browser/download/download_ui_model.cc
++++ b/chrome/browser/download/download_ui_model.cc
+@@ -40,5 +40,6 @@
+ #include "net/base/mime_util.h"
+ #include "third_party/blink/public/common/mime_util/mime_util.h"
++#include "ui/base/clipboard/scoped_clipboard_writer.h"
+ #include "ui/base/l10n/l10n_util.h"
+ #include "ui/base/l10n/time_format.h"
+ #include "ui/base/text/bytes_formatting.h"
+@@ -640,4 +641,5 @@
+ case DownloadCommands::RETRY:
+ case DownloadCommands::CANCEL_DEEP_SCAN:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return true;
+@@ -683,4 +685,5 @@
+ case DownloadCommands::OPEN_WITH_MEDIA_APP:
+ case DownloadCommands::EDIT_WITH_MEDIA_APP:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return false;
+@@ -741,4 +744,9 @@
+ ui::PAGE_TRANSITION_LINK, false),
+ /*navigation_handle_callback=*/{});
+ break;
++ case DownloadCommands::COPY_DOWNLOAD_LINK: {
++ ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste);
++ scw.WriteText(base::UTF8ToUTF16(GetURL().spec()));
++ break;
++ }
+ case DownloadCommands::OPEN_SAFE_BROWSING_SETTING:
+--- a/chrome/browser/download/download_item_model.cc
++++ b/chrome/browser/download/download_item_model.cc
+@@ -713,4 +713,5 @@
+ case DownloadCommands::RETRY:
+ case DownloadCommands::CANCEL_DEEP_SCAN:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return DownloadUIModel::IsCommandEnabled(download_commands, command);
+@@ -757,4 +758,5 @@
+ case DownloadCommands::OPEN_WITH_MEDIA_APP:
+ case DownloadCommands::EDIT_WITH_MEDIA_APP:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return false;
+@@ -865,5 +866,6 @@
+ case DownloadCommands::OPEN_WITH_MEDIA_APP:
+ case DownloadCommands::EDIT_WITH_MEDIA_APP:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ DownloadUIModel::ExecuteCommand(download_commands, command);
+ break;
+--- a/chrome/browser/download/offline_item_model.cc
++++ b/chrome/browser/download/offline_item_model.cc
+@@ -334,4 +334,5 @@
+ case DownloadCommands::RETRY:
+ case DownloadCommands::CANCEL_DEEP_SCAN:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return DownloadUIModel::IsCommandEnabled(download_commands, command);
+@@ -370,4 +371,5 @@
+ case DownloadCommands::OPEN_WITH_MEDIA_APP:
+ case DownloadCommands::EDIT_WITH_MEDIA_APP:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ return false;
+@@ -404,5 +405,6 @@
+ case DownloadCommands::OPEN_WITH_MEDIA_APP:
+ case DownloadCommands::EDIT_WITH_MEDIA_APP:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ DownloadUIModel::ExecuteCommand(download_commands, command);
+ break;
+--- a/chrome/browser/download/download_stats.h
++++ b/chrome/browser/download/download_stats.h
+@@ -196,5 +196,7 @@
+ // kReviewEnabled = 34,
+ // kReviewClicked = 35,
+ kNotReached = 36, // Should not be possible to hit
+- kMaxValue = kNotReached
++ kCopyDownloadLinkEnabled = 37,
++ kCopyDownloadLinkClicked = 38,
++ kMaxValue = kCopyDownloadLinkClicked
+ };
+--- a/chrome/browser/download/download_stats.cc
++++ b/chrome/browser/download/download_stats.cc
+@@ -162,5 +162,8 @@
+ case DownloadCommands::BYPASS_DEEP_SCANNING_AND_OPEN:
+ return clicked ? DownloadUiContextMenuAction::kBypassDeepScanningClicked
+ : DownloadUiContextMenuAction::kBypassDeepScanningEnabled;
++ case DownloadCommands::Command::COPY_DOWNLOAD_LINK:
++ return clicked ? DownloadUiContextMenuAction::kCopyDownloadLinkClicked
++ : DownloadUiContextMenuAction::kCopyDownloadLinkEnabled;
+
+ // The following are not actually visible in the context menu so should
+--- a/chrome/browser/download/bubble/download_bubble_ui_controller.cc
++++ b/chrome/browser/download/bubble/download_bubble_ui_controller.cc
+@@ -334,5 +334,6 @@
+ case DownloadCommands::CANCEL_DEEP_SCAN:
+ case DownloadCommands::OPEN_SAFE_BROWSING_SETTING:
+ case DownloadCommands::OPEN_HELIUM_SERVICES:
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
+ commands.ExecuteCommand(command);
+ break;
+--- a/chrome/browser/download/download_ui_context_menu.cc
++++ b/chrome/browser/download/download_ui_context_menu.cc
+@@ -192,4 +192,7 @@
+ case DownloadCommands::BYPASS_DEEP_SCANNING_AND_OPEN:
+ id = IDS_OPEN_DOWNLOAD_NOW;
+ break;
++ case DownloadCommands::COPY_DOWNLOAD_LINK:
++ id = IDS_DOWNLOAD_MENU_COPY_LINK;
++ break;
+ // These commands are not supported on the context menu.
+@@ -240,4 +243,7 @@
+ in_progress_download_menu_model_->AddItem(
+ DownloadCommands::PAUSE, GetLabelForCommandId(DownloadCommands::PAUSE));
+
++ in_progress_download_menu_model_->AddItem(
++ DownloadCommands::COPY_DOWNLOAD_LINK,
++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK));
+ if (is_download) {
+@@ -273,4 +279,7 @@
+ in_progress_download_paused_menu_model_->AddItem(
+ DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME));
+
++ in_progress_download_paused_menu_model_->AddItem(
++ DownloadCommands::COPY_DOWNLOAD_LINK,
++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK));
+ if (is_download) {
+@@ -313,4 +322,7 @@
+ finished_download_menu_model_->AddItem(
+ DownloadCommands::SHOW_IN_FOLDER,
+ GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER));
++ finished_download_menu_model_->AddItem(
++ DownloadCommands::COPY_DOWNLOAD_LINK,
++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK));
+ finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
+@@ -334,3 +346,6 @@
+ interrupted_download_menu_model_->AddItem(
+ DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME));
++ interrupted_download_menu_model_->AddItem(
++ DownloadCommands::COPY_DOWNLOAD_LINK,
++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK));
+ #if BUILDFLAG(IS_WIN)
+--- a/chrome/app/generated_resources.grd
++++ b/chrome/app/generated_resources.grd
+@@ -2745,6 +2745,10 @@
+ desc="Download context menu: Resume download">
+ &Resume
+
++
++ Copy link
++
+
+ &Discard
diff --git a/patches/series b/patches/series
index 172fa4feb..264e2687b 100644
--- a/patches/series
+++ b/patches/series
@@ -244,6 +244,7 @@ helium/ui/remove-dead-toolbar-actions.patch
helium/ui/remove-dead-profile-actions.patch
helium/ui/clean-up-installed-extension-bubble.patch
helium/ui/add-specific-error-for-disabled-extension-downloads.patch
+helium/ui/add-copy-download-link-context-menu.patch
helium/ui/selected-keyword-view.patch
helium/ui/bookmark-button-bg-fix.patch
helium/ui/restyle-ntp-tiles.patch