diff --git a/packages/client/src/components/MkModalPageWindow.vue b/packages/client/src/components/MkModalPageWindow.vue
index a4dea9ee32..53748a8054 100644
--- a/packages/client/src/components/MkModalPageWindow.vue
+++ b/packages/client/src/components/MkModalPageWindow.vue
@@ -126,6 +126,7 @@ const contextmenu = computed((): MenuItem[] => {
 			text: i18n.ts.copyLink,
 			action: () => {
 				copyToClipboard(pageUrl.value);
+				os.success();
 			},
 		},
 	];
diff --git a/packages/client/src/components/MkNote.vue b/packages/client/src/components/MkNote.vue
index 7b71d4903d..4e5fd4a272 100644
--- a/packages/client/src/components/MkNote.vue
+++ b/packages/client/src/components/MkNote.vue
@@ -546,6 +546,7 @@ function onContextmenu(ev: MouseEvent): void {
 					text: i18n.ts.copyLink,
 					action: () => {
 						copyToClipboard(`${url}${notePage(appearNote.value)}`);
+						os.success();
 					},
 				},
 				appearNote.value.user.host != null
diff --git a/packages/client/src/components/MkNoteSub.vue b/packages/client/src/components/MkNoteSub.vue
index a1faafbac9..d3d53a5ae2 100644
--- a/packages/client/src/components/MkNoteSub.vue
+++ b/packages/client/src/components/MkNoteSub.vue
@@ -500,6 +500,7 @@ function onContextmenu(ev: MouseEvent): void {
 					text: i18n.ts.copyLink,
 					action: () => {
 						copyToClipboard(`${url}${notePage(appearNote.value)}`);
+						os.success();
 					},
 				},
 				note.value.user.host != null
diff --git a/packages/client/src/components/MkPageWindow.vue b/packages/client/src/components/MkPageWindow.vue
index 082f9f0159..1410c77c1a 100644
--- a/packages/client/src/components/MkPageWindow.vue
+++ b/packages/client/src/components/MkPageWindow.vue
@@ -43,6 +43,7 @@ import { i18n } from "@/i18n";
 import type { PageMetadata } from "@/scripts/page-metadata";
 import { provideMetadataReceiver } from "@/scripts/page-metadata";
 import icon from "@/scripts/icon";
+import * as os from "@/os";
 
 const props = defineProps<{
 	initialPath: string;
@@ -121,6 +122,7 @@ const contextmenu = computed(() => [
 		text: i18n.ts.copyLink,
 		action: () => {
 			copyToClipboard(url + router.getCurrentPath());
+			os.success();
 		},
 	},
 ]);
diff --git a/packages/client/src/components/global/MkA.vue b/packages/client/src/components/global/MkA.vue
index fbe5472a24..f51528bffc 100644
--- a/packages/client/src/components/global/MkA.vue
+++ b/packages/client/src/components/global/MkA.vue
@@ -80,6 +80,7 @@ function onContextmenu(ev) {
 				text: i18n.ts.copyLink,
 				action: () => {
 					copyToClipboard(`${url}${props.to}`);
+					os.success();
 				},
 			},
 		],
diff --git a/packages/client/src/scripts/get-user-menu.ts b/packages/client/src/scripts/get-user-menu.ts
index 7a3046aad7..8f286ea8d6 100644
--- a/packages/client/src/scripts/get-user-menu.ts
+++ b/packages/client/src/scripts/get-user-menu.ts
@@ -246,6 +246,7 @@ export function getUserMenu(user, router: Router = mainRouter) {
 			text: i18n.ts.copyUsername,
 			action: () => {
 				copyToClipboard(`@${user.username}@${user.host || host}`);
+				os.success();
 			},
 		},
 		{
@@ -272,6 +273,7 @@ export function getUserMenu(user, router: Router = mainRouter) {
 					text: i18n.ts.copyRemoteFollowUrl,
 					action: () => {
 						copyToClipboard(`https://${host}/follow-me?acct=${user.username}`);
+						os.success();
 					},
 				},
 			],
@@ -286,6 +288,7 @@ export function getUserMenu(user, router: Router = mainRouter) {
 					text: i18n.ts._feeds.rss,
 					action: () => {
 						copyToClipboard(`https://${host}/@${user.username}.rss`);
+						os.success();
 					},
 				},
 				{
@@ -293,6 +296,7 @@ export function getUserMenu(user, router: Router = mainRouter) {
 					text: i18n.ts._feeds.atom,
 					action: () => {
 						copyToClipboard(`https://${host}/@${user.username}.atom`);
+						os.success();
 					},
 				},
 				{
@@ -300,6 +304,7 @@ export function getUserMenu(user, router: Router = mainRouter) {
 					text: i18n.ts._feeds.jsonFeed,
 					action: () => {
 						copyToClipboard(`https://${host}/@${user.username}.json`);
+						os.success();
 					},
 				},
 			],