diff --git a/Telegram/Resources/icons/settings/premium/tags.png b/Telegram/Resources/icons/settings/premium/tags.png
new file mode 100644
index 000000000..77e9f63a1
Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags.png differ
diff --git a/Telegram/Resources/icons/settings/premium/tags@2x.png b/Telegram/Resources/icons/settings/premium/tags@2x.png
new file mode 100644
index 000000000..183760ba7
Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags@2x.png differ
diff --git a/Telegram/Resources/icons/settings/premium/tags@3x.png b/Telegram/Resources/icons/settings/premium/tags@3x.png
new file mode 100644
index 000000000..0e5e12899
Binary files /dev/null and b/Telegram/Resources/icons/settings/premium/tags@3x.png differ
diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings
index b980101e3..64c1f7786 100644
--- a/Telegram/Resources/langs/lang.strings
+++ b/Telegram/Resources/langs/lang.strings
@@ -2026,6 +2026,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 "lng_premium_summary_about_emoji_status" = "Add any of thousands emoji next to your name to display current activity.";
 "lng_premium_summary_subtitle_infinite_reactions" = "Infinite Reactions";
 "lng_premium_summary_about_infinite_reactions" = "React with thousands of emoji — with multiple reactions per message.";
+"lng_premium_summary_subtitle_tags_for_messages" = "Tags for Messages";
+"lng_premium_summary_about_tags_for_messages" = "Organize your Saved Messages with tags for quicker access.";
 "lng_premium_summary_subtitle_premium_stickers" = "Premium Stickers";
 "lng_premium_summary_about_premium_stickers" = "Exclusive enlarged stickers featuring additional effects, updated monthly.";
 "lng_premium_summary_subtitle_animated_emoji" = "Animated Emoji";
diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.cpp b/Telegram/SourceFiles/boxes/premium_preview_box.cpp
index 06835d603..8baf8a535 100644
--- a/Telegram/SourceFiles/boxes/premium_preview_box.cpp
+++ b/Telegram/SourceFiles/boxes/premium_preview_box.cpp
@@ -110,6 +110,8 @@ void PreloadSticker(const std::shared_ptr<Data::DocumentMedia> &media) {
 		return tr::lng_premium_summary_subtitle_emoji_status();
 	case PremiumPreview::InfiniteReactions:
 		return tr::lng_premium_summary_subtitle_infinite_reactions();
+	case PremiumPreview::TagsForMessages:
+		return tr::lng_premium_summary_subtitle_tags_for_messages();
 	case PremiumPreview::Stickers:
 		return tr::lng_premium_summary_subtitle_premium_stickers();
 	case PremiumPreview::AnimatedEmoji:
@@ -146,6 +148,8 @@ void PreloadSticker(const std::shared_ptr<Data::DocumentMedia> &media) {
 		return tr::lng_premium_summary_about_emoji_status();
 	case PremiumPreview::InfiniteReactions:
 		return tr::lng_premium_summary_about_infinite_reactions();
+	case PremiumPreview::TagsForMessages:
+		return tr::lng_premium_summary_about_tags_for_messages();
 	case PremiumPreview::Stickers:
 		return tr::lng_premium_summary_about_premium_stickers();
 	case PremiumPreview::AnimatedEmoji:
@@ -471,6 +475,7 @@ struct VideoPreviewDocument {
 			return "advanced_chat_management";
 		case PremiumPreview::EmojiStatus: return "emoji_status";
 		case PremiumPreview::InfiniteReactions: return "infinite_reactions";
+		case PremiumPreview::TagsForMessages: return "saved_tags";
 		case PremiumPreview::ProfileBadge: return "profile_badge";
 		case PremiumPreview::AnimatedUserpics: return "animated_userpics";
 		case PremiumPreview::RealTimeTranslation: return "translations";
diff --git a/Telegram/SourceFiles/boxes/premium_preview_box.h b/Telegram/SourceFiles/boxes/premium_preview_box.h
index 60c5699ca..ba6dae46b 100644
--- a/Telegram/SourceFiles/boxes/premium_preview_box.h
+++ b/Telegram/SourceFiles/boxes/premium_preview_box.h
@@ -61,6 +61,7 @@ enum class PremiumPreview {
 	AnimatedUserpics,
 	RealTimeTranslation,
 	Wallpapers,
+	TagsForMessages,
 
 	kCount,
 };
diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style
index bcf80c232..d61f61738 100644
--- a/Telegram/SourceFiles/settings/settings.style
+++ b/Telegram/SourceFiles/settings/settings.style
@@ -91,6 +91,7 @@ settingsPremiumIconStar: icon {{ "settings/premium/star", settingsIconFg }};
 settingsPremiumIconVoice: icon {{ "settings/premium/voice", settingsIconFg }};
 settingsPremiumIconFiles: icon {{ "settings/premium/files", settingsIconFg }};
 settingsPremiumIconTranslations: icon {{ "settings/premium/translations", settingsIconFg }};
+settingsPremiumIconTags: icon {{ "settings/premium/tags", settingsIconFg }};
 
 settingsStoriesIconOrder: icon {{ "settings/premium/stories_order", premiumButtonBg1 }};
 settingsStoriesIconStealth: icon {{ "menu/stealth", premiumButtonBg1 }};
diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp
index 646829d59..337f413ac 100644
--- a/Telegram/SourceFiles/settings/settings_premium.cpp
+++ b/Telegram/SourceFiles/settings/settings_premium.cpp
@@ -185,6 +185,7 @@ using Order = std::vector<QString>;
 		u"voice_to_text"_q,
 		u"no_ads"_q,
 		u"emoji_status"_q,
+		u"saved_tags"_q,
 		u"infinite_reactions"_q,
 		u"premium_stickers"_q,
 		u"animated_emoji"_q,
@@ -197,6 +198,16 @@ using Order = std::vector<QString>;
 
 [[nodiscard]] base::flat_map<QString, Entry> EntryMap() {
 	return base::flat_map<QString, Entry>{
+		{
+			u"saved_tags"_q,
+			Entry{
+				&st::settingsPremiumIconTags,
+				tr::lng_premium_summary_subtitle_tags_for_messages(),
+				tr::lng_premium_summary_about_tags_for_messages(),
+				PremiumPreview::TagsForMessages,
+				true,
+			},
+		},
 		{
 			u"wallpapers"_q,
 			Entry{
@@ -204,7 +215,6 @@ using Order = std::vector<QString>;
 				tr::lng_premium_summary_subtitle_wallpapers(),
 				tr::lng_premium_summary_about_wallpapers(),
 				PremiumPreview::Wallpapers,
-				true,
 			},
 		},
 		{
@@ -1510,6 +1520,8 @@ not_null<Ui::GradientButton*> CreateSubscribeButton(
 			return PremiumPreview::EmojiStatus;
 		} else if (s == u"infinite_reactions"_q) {
 			return PremiumPreview::InfiniteReactions;
+		} else if (s == u"saved_tags"_q) {
+			return PremiumPreview::TagsForMessages;
 		} else if (s == u"premium_stickers"_q) {
 			return PremiumPreview::Stickers;
 		} else if (s == u"animated_emoji"_q) {
diff --git a/Telegram/SourceFiles/window/section_widget.cpp b/Telegram/SourceFiles/window/section_widget.cpp
index f9b2a5a39..2600fae5a 100644
--- a/Telegram/SourceFiles/window/section_widget.cpp
+++ b/Telegram/SourceFiles/window/section_widget.cpp
@@ -530,12 +530,8 @@ bool ShowReactPremiumError(
 		|| item->history()->peer->isBroadcast()) {
 		return false;
 	} else if (item->reactionsAreTags()) {
-		const auto &list = controller->session().data().reactions().list(
-			Data::Reactions::Type::Tags);
-		const auto i = ranges::find(list, id, &Data::Reaction::id);
-		if (i != end(list)) {
-			return false;
-		}
+		ShowPremiumPreviewBox(controller, PremiumPreview::TagsForMessages);
+		return true;
 	} else if (!id.custom()) {
 		return false;
 	}