diff --git a/packages/backend-rs/src/federation/activitypub/object/emoji.rs b/packages/backend-rs/src/federation/activitypub/object/emoji.rs
index 157234b785..03691761b6 100644
--- a/packages/backend-rs/src/federation/activitypub/object/emoji.rs
+++ b/packages/backend-rs/src/federation/activitypub/object/emoji.rs
@@ -1,5 +1,5 @@
 use super::*;
-use crate::{config::CONFIG, model::entity::emoji};
+use crate::{model::entity::emoji, misc};
 use chrono::Utc;
 
 #[macros::export(object)]
@@ -24,7 +24,7 @@ impl ApEmoji {
     #[allow(dead_code)] // TODO: remove this line
     fn new(emoji: emoji::Model) -> Self {
         Self {
-            id: format!("{}/emojis/{}", CONFIG.url, emoji.name),
+            id: misc::emoji::local_uri(&emoji.name),
             r#type: ApObject::Emoji,
             name: format!(":{}:", emoji.name),
             updated: emoji
diff --git a/packages/backend-rs/src/misc/emoji.rs b/packages/backend-rs/src/misc/emoji/emoji.rs
similarity index 100%
rename from packages/backend-rs/src/misc/emoji.rs
rename to packages/backend-rs/src/misc/emoji/emoji.rs
diff --git a/packages/backend-rs/src/misc/emoji/mod.rs b/packages/backend-rs/src/misc/emoji/mod.rs
new file mode 100644
index 0000000000..0dacfca914
--- /dev/null
+++ b/packages/backend-rs/src/misc/emoji/mod.rs
@@ -0,0 +1,9 @@
+pub mod emoji;
+pub mod reaction;
+
+use crate::config::CONFIG;
+
+/// Returns URI of a local custom emoji.
+pub fn local_uri(emoji_code: impl std::fmt::Display) -> String {
+    format!("{}/emojis/{}", CONFIG.url, emoji_code)
+}
diff --git a/packages/backend-rs/src/misc/reaction.rs b/packages/backend-rs/src/misc/emoji/reaction.rs
similarity index 100%
rename from packages/backend-rs/src/misc/reaction.rs
rename to packages/backend-rs/src/misc/emoji/reaction.rs
diff --git a/packages/backend-rs/src/misc/mod.rs b/packages/backend-rs/src/misc/mod.rs
index f47b5078b3..64bfae025c 100644
--- a/packages/backend-rs/src/misc/mod.rs
+++ b/packages/backend-rs/src/misc/mod.rs
@@ -14,7 +14,6 @@ pub mod note;
 pub mod nyaify;
 pub mod password;
 pub mod random_icon;
-pub mod reaction;
 pub mod remove_old_attestation_challenges;
 pub mod should_nyaify;
 pub mod system_info;
diff --git a/packages/backend-rs/src/misc/note/mod.rs b/packages/backend-rs/src/misc/note/mod.rs
index 0598cec7a4..366bcaa197 100644
--- a/packages/backend-rs/src/misc/note/mod.rs
+++ b/packages/backend-rs/src/misc/note/mod.rs
@@ -6,6 +6,7 @@ pub mod summarize;
 
 use crate::config::CONFIG;
 
+/// Returns URI of a local post.
 pub fn local_uri(note_id: impl std::fmt::Display) -> String {
     format!("{}/notes/{}", CONFIG.url, note_id)
 }
diff --git a/packages/backend-rs/src/misc/user/mod.rs b/packages/backend-rs/src/misc/user/mod.rs
index 42e08ce443..9272084ad0 100644
--- a/packages/backend-rs/src/misc/user/mod.rs
+++ b/packages/backend-rs/src/misc/user/mod.rs
@@ -2,6 +2,7 @@ pub mod count;
 
 use crate::config::CONFIG;
 
+/// Returns URI of a local user.
 pub fn local_uri(user_id: impl std::fmt::Display) -> String {
     format!("{}/users/{}", CONFIG.url, user_id)
 }