diff --git a/packages/backend/src/core/ReactionService.ts b/packages/backend/src/core/ReactionService.ts
index 4435fc6cd3..4b4fb4779c 100644
--- a/packages/backend/src/core/ReactionService.ts
+++ b/packages/backend/src/core/ReactionService.ts
@@ -132,19 +132,30 @@ export class ReactionService {
 		} else if (_reaction != null) {
 			const custom = reaction.match(isCustomEmojiRegexp);
 			if (custom) {
+				const name = custom[1];
 				const reacterHost = this.utilityService.toPunyNullable(user.host);
 
-				const name = custom[1];
-				const emoji = reacterHost == null
-					? (await this.customEmojiService.localEmojisCache.fetch()).get(name)
-					: await this.emojisRepository.findOneBy({
-						host: reacterHost,
-						name,
-					});
+				let emoji = null;
+				let useLocalEmoji = false;
+
+				if (reacterHost != null) {
+					const localEmoji = (await this.customEmojiService.localEmojisCache.fetch()).get(name);
+					if (localEmoji) {
+						emoji = localEmoji;
+						useLocalEmoji = true;
+					} else {
+						emoji = await this.emojisRepository.findOneBy({
+							host: reacterHost,
+							name,
+						});
+					}
+				} else {
+					emoji = (await this.customEmojiService.localEmojisCache.fetch()).get(name);
+				}
 
 				if (emoji) {
 					if (emoji.roleIdsThatCanBeUsedThisEmojiAsReaction.length === 0 || (await this.roleService.getUserRoles(user.id)).some(r => emoji.roleIdsThatCanBeUsedThisEmojiAsReaction.includes(r.id))) {
-						reaction = reacterHost ? `:${name}@${reacterHost}:` : `:${name}:`;
+						reaction = useLocalEmoji ? `:${name}:` : (reacterHost ? `:${name}@${reacterHost}:` : `:${name}:`);
 
 						// センシティブ
 						if ((note.reactionAcceptance === 'nonSensitiveOnly' || note.reactionAcceptance === 'nonSensitiveOnlyForLocalLikeOnlyForRemote') && emoji.isSensitive) {
diff --git a/packages/frontend/src/components/MkReactionsViewer.details.vue b/packages/frontend/src/components/MkReactionsViewer.details.vue
index f41a8a40f3..d24e0b15bf 100644
--- a/packages/frontend/src/components/MkReactionsViewer.details.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.details.vue
@@ -100,4 +100,4 @@ function getReactionName(reaction: string): string {
 .more {
 	padding-top: 4px;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/packages/frontend/src/components/MkReactionsViewer.vue b/packages/frontend/src/components/MkReactionsViewer.vue
index 8acbdd5a05..0fed933b56 100644
--- a/packages/frontend/src/components/MkReactionsViewer.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.vue
@@ -112,4 +112,4 @@ watch([() => props.note.reactions, () => props.maxNumber], ([newSource, maxNumbe
 		display: none;
 	}
 }
-</style>
\ No newline at end of file
+</style>