diff --git a/web_src/js/features/copycontent.js b/web_src/js/features/copycontent.js
index e51953625d..646fafeb0f 100644
--- a/web_src/js/features/copycontent.js
+++ b/web_src/js/features/copycontent.js
@@ -4,18 +4,14 @@ import {convertImage} from '../utils.js';
 
 const {i18n} = window.config;
 
-async function doCopy(content, btn) {
-  const success = await clippie(content);
-  showTemporaryTooltip(btn, success ? i18n.copy_success : i18n.copy_error);
-}
-
 export function initCopyContent() {
   const btn = document.getElementById('copy-content');
   if (!btn || btn.classList.contains('disabled')) return;
 
   btn.addEventListener('click', async () => {
     if (btn.classList.contains('is-loading')) return;
-    let content, isImage;
+    let content;
+    let isRasterImage = false;
     const link = btn.getAttribute('data-link');
 
     // when data-link is present, we perform a fetch. this is either because
@@ -28,7 +24,7 @@ export function initCopyContent() {
         const contentType = res.headers.get('content-type');
 
         if (contentType.startsWith('image/') && !contentType.startsWith('image/svg')) {
-          isImage = true;
+          isRasterImage = true;
           content = await res.blob();
         } else {
           content = await res.text();
@@ -43,15 +39,14 @@ export function initCopyContent() {
       content = Array.from(lineEls).map((el) => el.textContent).join('');
     }
 
-    try {
-      await doCopy(content, btn);
-    } catch {
-      if (isImage) { // convert image to png as last-resort as some browser only support png copy
-        try {
-          await doCopy(await convertImage(content, 'image/png'), btn);
-        } catch {
-          showTemporaryTooltip(btn, i18n.copy_error);
-        }
+    // try copy original first, if that fails and it's an image, convert it to png
+    const success = await clippie(content);
+    if (success) {
+      showTemporaryTooltip(btn, i18n.copy_success);
+    } else {
+      if (isRasterImage) {
+        const success = await clippie(await convertImage(content, 'image/png'));
+        showTemporaryTooltip(btn, success ? i18n.copy_success : i18n.copy_error);
       } else {
         showTemporaryTooltip(btn, i18n.copy_error);
       }