diff --git a/packages/backend/src/remote/activitypub/models/note.ts b/packages/backend/src/remote/activitypub/models/note.ts
index 7f0c8c820d..2d847ef968 100644
--- a/packages/backend/src/remote/activitypub/models/note.ts
+++ b/packages/backend/src/remote/activitypub/models/note.ts
@@ -493,11 +493,16 @@ export async function extractEmojis(
 					tag.icon!.url !== exists.originalUrl ||
 					!(exists.width && exists.height)
 				) {
-					let size: ImageSize = { width: 0, height: 0 };
-					try {
-						size = await getImageSizeFromUrl(tag.icon!.url);
-					} catch {
-						/* skip if any error happens */
+					let size: ImageSize | null = null;
+					if (tag.icon?.url != null) {
+						try {
+							size = await getImageSizeFromUrl(tag.icon.url);
+						} catch (err) {
+							apLogger.info(
+								`Failed to determine the size of the image: ${tag.icon.url}`,
+							);
+							apLogger.debug(inspect(err));
+						}
 					}
 					await Emojis.update(
 						{
@@ -509,8 +514,8 @@ export async function extractEmojis(
 							originalUrl: tag.icon!.url,
 							publicUrl: tag.icon!.url,
 							updatedAt: new Date(),
-							width: size.width || null,
-							height: size.height || null,
+							width: size?.width || null,
+							height: size?.height || null,
 						},
 					);
 
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
index 0224e19b04..5408c9dc7a 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts
@@ -1,11 +1,13 @@
 import define from "@/server/api/define.js";
 import { Emojis, DriveFiles } from "@/models/index.js";
-import { genId, getImageSizeFromUrl } from "backend-rs";
+import { type ImageSize, genId, getImageSizeFromUrl } from "backend-rs";
 import { insertModerationLog } from "@/services/insert-moderation-log.js";
 import { ApiError } from "@/server/api/error.js";
 import rndstr from "rndstr";
 import { publishBroadcastStream } from "@/services/stream.js";
 import { db } from "@/db/postgre.js";
+import { apiLogger } from "@/server/api/logger.js";
+import { inspect } from "node:util";
 
 export const meta = {
 	tags: ["admin", "emoji"],
@@ -48,7 +50,13 @@ export default define(meta, paramDef, async (ps, me) => {
 		? file.name.split(".")[0]
 		: `_${rndstr("a-z0-9", 8)}_`;
 
-	const size = await getImageSizeFromUrl(file.url);
+	let size: ImageSize | null = null;
+	try {
+		size = await getImageSizeFromUrl(file.url);
+	} catch (err) {
+		apiLogger.info(`Failed to determine the image size: ${file.url}`);
+		apiLogger.debug(inspect(err));
+	}
 
 	const emoji = await Emojis.insert({
 		id: genId(),
@@ -61,8 +69,8 @@ export default define(meta, paramDef, async (ps, me) => {
 		publicUrl: file.webpublicUrl ?? file.url,
 		type: file.webpublicType ?? file.type,
 		license: null,
-		width: size.width || null,
-		height: size.height || null,
+		width: size?.width || null,
+		height: size?.height || null,
 	}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
 
 	await db.queryResultCache!.remove(["meta_emojis"]);
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
index b5f67becdf..ded768f2cd 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
@@ -1,11 +1,13 @@
 import define from "@/server/api/define.js";
 import { Emojis } from "@/models/index.js";
-import { genId, getImageSizeFromUrl } from "backend-rs";
+import { type ImageSize, genId, getImageSizeFromUrl } from "backend-rs";
 import { ApiError } from "@/server/api/error.js";
 import type { DriveFile } from "@/models/entities/drive-file.js";
 import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
 import { publishBroadcastStream } from "@/services/stream.js";
 import { db } from "@/db/postgre.js";
+import { apiLogger } from "@/server/api/logger";
+import { inspect } from "node:util";
 
 export const meta = {
 	tags: ["admin", "emoji"],
@@ -75,7 +77,14 @@ export default define(meta, paramDef, async (ps, me) => {
 		throw new ApiError();
 	}
 
-	const size = await getImageSizeFromUrl(driveFile.url);
+	let size: ImageSize | null = null;
+
+	try {
+		size = await getImageSizeFromUrl(driveFile.url);
+	} catch (err) {
+		apiLogger.info(`Failed to determine the image size: ${driveFile.url}`);
+		apiLogger.debug(inspect(err));
+	}
 
 	const copied = await Emojis.insert({
 		id: genId(),
@@ -87,8 +96,8 @@ export default define(meta, paramDef, async (ps, me) => {
 		publicUrl: driveFile.webpublicUrl ?? driveFile.url,
 		type: driveFile.webpublicType ?? driveFile.type,
 		license: emoji.license,
-		width: size.width || null,
-		height: size.height || null,
+		width: size?.width ?? null,
+		height: size?.height ?? null,
 	}).then((x) => Emojis.findOneByOrFail(x.identifiers[0]));
 
 	await db.queryResultCache!.remove(["meta_emojis"]);