diff --git a/apps/meteor/app/api/server/lib/messages.ts b/apps/meteor/app/api/server/lib/messages.ts
index 71f9f540c6bf27241de8d70ca3cd325a1114dbde..a4f28f9680f7e35d6fa27487ad86aebe2219bc07 100644
--- a/apps/meteor/app/api/server/lib/messages.ts
+++ b/apps/meteor/app/api/server/lib/messages.ts
@@ -3,7 +3,6 @@ import type { IMessage, IUser } from '@rocket.chat/core-typings';
 import { Rooms, Messages, Users } from '@rocket.chat/models';
 
 import { canAccessRoomAsync } from '../../../authorization/server/functions/canAccessRoom';
-import { getValue } from '../../../settings/server/raw';
 
 export async function findMentionedMessages({
 	uid,
@@ -83,73 +82,6 @@ export async function findStarredMessages({
 	};
 }
 
-export async function findSnippetedMessageById({ uid, messageId }: { uid: string; messageId: string }): Promise<IMessage> {
-	if (!(await getValue('Message_AllowSnippeting'))) {
-		throw new Error('error-not-allowed');
-	}
-
-	if (!uid) {
-		throw new Error('invalid-user');
-	}
-
-	const snippet = await Messages.findOne({ _id: messageId, snippeted: true });
-
-	if (!snippet) {
-		throw new Error('invalid-message');
-	}
-
-	const room = await Rooms.findOneById(snippet.rid);
-
-	if (!room) {
-		throw new Error('invalid-message');
-	}
-
-	if (!(await canAccessRoomAsync(room, { _id: uid }))) {
-		throw new Error('error-not-allowed');
-	}
-
-	return snippet;
-}
-
-export async function findSnippetedMessages({
-	uid,
-	roomId,
-	pagination: { offset, count, sort },
-}: {
-	uid: string;
-	roomId: string;
-	pagination: { offset: number; count: number; sort: FindOptions<IMessage>['sort'] };
-}): Promise<{
-	messages: IMessage[];
-	count: number;
-	offset: number;
-	total: number;
-}> {
-	if (!(await getValue('Message_AllowSnippeting'))) {
-		throw new Error('error-not-allowed');
-	}
-	const room = await Rooms.findOneById(roomId);
-
-	if (!room || !(await canAccessRoomAsync(room, { _id: uid }))) {
-		throw new Error('error-not-allowed');
-	}
-
-	const { cursor, totalCount } = Messages.findSnippetedByRoom(roomId, {
-		sort: sort || { ts: -1 },
-		skip: offset,
-		limit: count,
-	});
-
-	const [messages, total] = await Promise.all([cursor.toArray(), totalCount]);
-
-	return {
-		messages,
-		count: messages.length,
-		offset,
-		total,
-	};
-}
-
 export async function findDiscussionsFromRoom({
 	uid,
 	roomId,
diff --git a/apps/meteor/app/api/server/v1/chat.js b/apps/meteor/app/api/server/v1/chat.js
index 73f4b6931ddc42695a49717fc4a75d648afc8941..ab623563eee79ff0254952d2022a2574150fcc7d 100644
--- a/apps/meteor/app/api/server/v1/chat.js
+++ b/apps/meteor/app/api/server/v1/chat.js
@@ -14,13 +14,7 @@ import Rooms from '../../../models/server/models/Rooms';
 import Users from '../../../models/server/models/Users';
 import Subscriptions from '../../../models/server/models/Subscriptions';
 import { settings } from '../../../settings/server';
-import {
-	findMentionedMessages,
-	findStarredMessages,
-	findSnippetedMessageById,
-	findSnippetedMessages,
-	findDiscussionsFromRoom,
-} from '../lib/messages';
+import { findMentionedMessages, findStarredMessages, findDiscussionsFromRoom } from '../lib/messages';
 
 API.v1.addRoute(
 	'chat.delete',
@@ -786,55 +780,6 @@ API.v1.addRoute(
 	},
 );
 
-API.v1.addRoute(
-	'chat.getSnippetedMessageById',
-	{ authRequired: true },
-	{
-		get() {
-			const { messageId } = this.queryParams;
-
-			if (!messageId) {
-				throw new Meteor.Error('error-invalid-params', 'The required "messageId" query param is missing.');
-			}
-			const message = Promise.await(
-				findSnippetedMessageById({
-					uid: this.userId,
-					messageId,
-				}),
-			);
-			return API.v1.success(message);
-		},
-	},
-);
-
-API.v1.addRoute(
-	'chat.getSnippetedMessages',
-	{ authRequired: true },
-	{
-		get() {
-			const { roomId } = this.queryParams;
-			const { sort } = this.parseJsonQuery();
-			const { offset, count } = this.getPaginationItems();
-
-			if (!roomId) {
-				throw new Meteor.Error('error-invalid-params', 'The required "roomId" query param is missing.');
-			}
-			const messages = Promise.await(
-				findSnippetedMessages({
-					uid: this.userId,
-					roomId,
-					pagination: {
-						offset,
-						count,
-						sort,
-					},
-				}),
-			);
-			return API.v1.success(messages);
-		},
-	},
-);
-
 API.v1.addRoute(
 	'chat.getDiscussions',
 	{ authRequired: true },
diff --git a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts
index 16519b9effe512c32b702ca113a0cbe584d81148..33ca8d1ec8e02319094dbf54de4ff4ab9a595a61 100644
--- a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts
+++ b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts
@@ -209,7 +209,6 @@ export const upsertPermissions = async (): Promise<void> => {
 		{ _id: 'manage-sounds', roles: ['admin'] },
 		{ _id: 'access-mailer', roles: ['admin'] },
 		{ _id: 'pin-message', roles: ['owner', 'moderator', 'admin'] },
-		{ _id: 'snippet-message', roles: ['owner', 'moderator', 'admin'] },
 		{ _id: 'mobile-upload-file', roles: ['user', 'admin'] },
 		{ _id: 'send-mail', roles: ['admin'] },
 		{ _id: 'view-federation-data', roles: ['admin'] },
diff --git a/apps/meteor/app/autolinker/client/client.js b/apps/meteor/app/autolinker/client/client.js
deleted file mode 100644
index a3e6d77d3e218e54b0146c5128988d2c8a339a9b..0000000000000000000000000000000000000000
--- a/apps/meteor/app/autolinker/client/client.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { Random } from 'meteor/random';
-import Autolinker from 'autolinker';
-import { escapeRegExp } from '@rocket.chat/string-helpers';
-
-export const createAutolinkerMessageRenderer =
-	({ phone, ...config }) =>
-	(message) => {
-		if (!message.html?.trim()) {
-			return message;
-		}
-
-		let msgParts;
-		let regexTokens;
-		if (message.tokens && message.tokens.length) {
-			regexTokens = new RegExp(`(${(message.tokens || []).map(({ token }) => escapeRegExp(token))})`, 'g');
-			msgParts = message.html.split(regexTokens);
-		} else {
-			msgParts = [message.html];
-		}
-
-		message.html = msgParts
-			.map((msgPart) => {
-				if (regexTokens && regexTokens.test(msgPart)) {
-					return msgPart;
-				}
-
-				const muttableConfig = {
-					...config,
-					phone: false,
-					stripTrailingSlash: false,
-					replaceFn: (match) => {
-						const token = `=!=${Random.id()}=!=`;
-						const tag = match.buildTag();
-
-						if (~match.matchedText.indexOf(Meteor.absoluteUrl())) {
-							tag.setAttr('target', '');
-						}
-
-						message.tokens = message.tokens ?? [];
-						message.tokens.push({
-							token,
-							text: tag.toAnchorString(),
-						});
-						return token;
-					},
-				};
-
-				const autolinkerMsg = Autolinker.link(msgPart, muttableConfig);
-
-				muttableConfig.phone = phone;
-
-				return phone ? Autolinker.link(autolinkerMsg, muttableConfig) : autolinkerMsg;
-			})
-			.join('');
-
-		return message;
-	};
diff --git a/apps/meteor/app/autolinker/client/index.js b/apps/meteor/app/autolinker/client/index.js
deleted file mode 100644
index 4dbc40111253670c21ba83daa9a588a78b2a8481..0000000000000000000000000000000000000000
--- a/apps/meteor/app/autolinker/client/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { createAutolinkerMessageRenderer } from './client';
diff --git a/apps/meteor/app/autolinker/server/index.js b/apps/meteor/app/autolinker/server/index.js
deleted file mode 100644
index 97097791afdc4deee566e5690c42b17dcbbfa5d9..0000000000000000000000000000000000000000
--- a/apps/meteor/app/autolinker/server/index.js
+++ /dev/null
@@ -1 +0,0 @@
-import './settings';
diff --git a/apps/meteor/app/autolinker/server/settings.ts b/apps/meteor/app/autolinker/server/settings.ts
deleted file mode 100644
index 898e5b59a476d74a22b9c7d9d5846269a51f2aad..0000000000000000000000000000000000000000
--- a/apps/meteor/app/autolinker/server/settings.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-
-import { settingsRegistry } from '../../settings/server';
-
-Meteor.startup(function () {
-	const enableQuery = {
-		_id: 'AutoLinker',
-		value: true,
-	};
-
-	settingsRegistry.add('AutoLinker', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		i18nLabel: 'Enabled',
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-
-	settingsRegistry.add('AutoLinker_StripPrefix', false, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		i18nDescription: 'AutoLinker_StripPrefix_Description',
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_Urls_Scheme', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_Urls_www', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_Urls_TLD', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_UrlsRegExp', '(://|www\\.).+', {
-		type: 'string',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_Email', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	settingsRegistry.add('AutoLinker_Phone', true, {
-		type: 'boolean',
-		group: 'Message',
-		section: 'AutoLinker',
-		public: true,
-		i18nDescription: 'AutoLinker_Phone_Description',
-		enableQuery,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-});
diff --git a/apps/meteor/app/autotranslate/server/autotranslate.ts b/apps/meteor/app/autotranslate/server/autotranslate.ts
index 1d926fe5bb77a1b964c7882b531338501afe9b6f..9ade9beaa0ef62981ff0bf7c62f397370024e849 100644
--- a/apps/meteor/app/autotranslate/server/autotranslate.ts
+++ b/apps/meteor/app/autotranslate/server/autotranslate.ts
@@ -165,7 +165,7 @@ export abstract class AutoTranslate {
 	tokenizeURLs(message: IMessage): IMessage {
 		let count = message.tokens?.length || 0;
 
-		const schemes = settings.get<string>('Markdown_SupportSchemesForLink')?.split(',').join('|');
+		const schemes = 'http,https';
 
 		// Support ![alt text](http://image url) and [text](http://link)
 		message.msg = message.msg.replace(
diff --git a/apps/meteor/app/issuelinks/client/client.js b/apps/meteor/app/issuelinks/client/client.js
deleted file mode 100644
index 0a149ba1dfb633b2c25eb6b19031e050bab51600..0000000000000000000000000000000000000000
--- a/apps/meteor/app/issuelinks/client/client.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export const createIssueLinksMessageRenderer =
-	({ template }) =>
-	(message) => {
-		if (!message.html?.trim()) {
-			return message;
-		}
-
-		message.html = message.html.replace(/(?:^|\s|\n)(#[0-9]+)\b/g, (match, issueNumber) => {
-			const url = template.replace('%s', issueNumber.substring(1));
-			return match.replace(issueNumber, `<a href="${url}" target="_blank">${issueNumber}</a>`);
-		});
-
-		return message;
-	};
diff --git a/apps/meteor/app/issuelinks/client/index.js b/apps/meteor/app/issuelinks/client/index.js
deleted file mode 100644
index bd72fbfb085e5738717387de609822c6266832be..0000000000000000000000000000000000000000
--- a/apps/meteor/app/issuelinks/client/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { createIssueLinksMessageRenderer } from './client';
diff --git a/apps/meteor/app/issuelinks/server/index.js b/apps/meteor/app/issuelinks/server/index.js
deleted file mode 100644
index 97097791afdc4deee566e5690c42b17dcbbfa5d9..0000000000000000000000000000000000000000
--- a/apps/meteor/app/issuelinks/server/index.js
+++ /dev/null
@@ -1 +0,0 @@
-import './settings';
diff --git a/apps/meteor/app/issuelinks/server/settings.ts b/apps/meteor/app/issuelinks/server/settings.ts
deleted file mode 100644
index 57d07cf6fa542d0fe241fc81879ca163bef57989..0000000000000000000000000000000000000000
--- a/apps/meteor/app/issuelinks/server/settings.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { settingsRegistry } from '../../settings/server';
-
-settingsRegistry.add('IssueLinks_Enabled', false, {
-	type: 'boolean',
-	i18nLabel: 'Enabled',
-	i18nDescription: 'IssueLinks_Incompatible',
-	group: 'Message',
-	section: 'Issue_Links',
-	public: true,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-
-settingsRegistry.add('IssueLinks_Template', '', {
-	type: 'string',
-	i18nLabel: 'IssueLinks_LinkTemplate',
-	i18nDescription: 'IssueLinks_LinkTemplate_Description',
-	group: 'Message',
-	section: 'Issue_Links',
-	public: true,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
diff --git a/apps/meteor/app/lib/server/functions/loadMessageHistory.ts b/apps/meteor/app/lib/server/functions/loadMessageHistory.ts
index 3fe64be17d9eaaaaa0dd7e4f662d8823a8d18044..0dd28d080a574bcfccec85ee731fc7fcba7991a4 100644
--- a/apps/meteor/app/lib/server/functions/loadMessageHistory.ts
+++ b/apps/meteor/app/lib/server/functions/loadMessageHistory.ts
@@ -1,5 +1,4 @@
 /* eslint-disable @typescript-eslint/explicit-function-return-type */
-import { settings } from '../../../settings/server';
 import { Messages, Rooms } from '../../../models/server';
 import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser';
 import { getHiddenSystemMessages } from '../lib/getHiddenSystemMessages';
@@ -34,12 +33,6 @@ export function loadMessageHistory({
 		fields: {},
 	};
 
-	if (!settings.get('Message_ShowEditedStatus')) {
-		options.fields = {
-			editedAt: 0,
-		};
-	}
-
 	const records =
 		end != null
 			? Messages.findVisibleByRoomIdBeforeTimestampNotContainingTypes(rid, end, hiddenMessageTypes, options, showThreadMessages).fetch()
diff --git a/apps/meteor/app/lib/server/methods/getChannelHistory.ts b/apps/meteor/app/lib/server/methods/getChannelHistory.ts
index 948508dd5a3aff8349bb24cbf73a7673388a4e23..19eae5aa547727eeaed96241660cb60356682b54 100644
--- a/apps/meteor/app/lib/server/methods/getChannelHistory.ts
+++ b/apps/meteor/app/lib/server/methods/getChannelHistory.ts
@@ -4,7 +4,6 @@ import _ from 'underscore';
 
 import { canAccessRoom, hasPermission } from '../../../authorization/server';
 import { Subscriptions, Messages, Rooms } from '../../../models/server';
-import { settings } from '../../../settings/server';
 import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser';
 import { getHiddenSystemMessages } from '../lib/getHiddenSystemMessages';
 
@@ -59,10 +58,6 @@ Meteor.methods({
 			limit: count,
 		};
 
-		if (!settings.get('Message_ShowEditedStatus')) {
-			options.fields = { editedAt: 0 };
-		}
-
 		const records = _.isUndefined(oldest)
 			? Messages.findVisibleByRoomIdBeforeTimestampNotContainingTypes(
 					rid,
diff --git a/apps/meteor/app/lib/server/startup/settings.ts b/apps/meteor/app/lib/server/startup/settings.ts
index eb0f8c4e01dd8b7715f510f47528acb3fe9c8e3d..e4ad85ee7048273ecc91c45e1031319acbf6dadb 100644
--- a/apps/meteor/app/lib/server/startup/settings.ts
+++ b/apps/meteor/app/lib/server/startup/settings.ts
@@ -524,13 +524,6 @@ settingsRegistry.addGroup('Accounts', function () {
 			public: true,
 			i18nLabel: 'Notifications_Sound_Volume',
 		});
-
-		this.add('Accounts_Default_User_Preferences_useLegacyMessageTemplate', false, {
-			type: 'boolean',
-			public: true,
-			i18nLabel: 'Use_Legacy_Message_Template',
-			alert: 'This_is_a_deprecated_feature_alert',
-		});
 	});
 
 	this.section('Avatar', function () {
@@ -1135,13 +1128,6 @@ settingsRegistry.addGroup('General', function () {
 
 settingsRegistry.addGroup('Message', function () {
 	this.section('Message_Attachments', function () {
-		this.add('Message_Attachments_GroupAttach', false, {
-			type: 'boolean',
-			public: true,
-			i18nDescription: 'Message_Attachments_GroupAttachDescription',
-			alert: 'This_is_a_deprecated_feature_alert',
-		});
-
 		this.add('Message_Attachments_Thumbnails_Enabled', true, {
 			type: 'boolean',
 			public: true,
@@ -1216,11 +1202,6 @@ settingsRegistry.addGroup('Message', function () {
 	this.add('Message_AlwaysSearchRegExp', false, {
 		type: 'boolean',
 	});
-	this.add('Message_ShowEditedStatus', true, {
-		type: 'boolean',
-		public: true,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
 	this.add('Message_ShowDeletedStatus', false, {
 		type: 'boolean',
 		public: true,
@@ -1253,14 +1234,6 @@ settingsRegistry.addGroup('Message', function () {
 		type: 'boolean',
 		public: true,
 	});
-	/**
-	 * @deprecated
-	 */
-	this.add('Message_ShowFormattingTips', true, {
-		type: 'boolean',
-		public: true,
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
 	this.add('Message_GroupingPeriod', 300, {
 		type: 'int',
 		public: true,
@@ -1288,13 +1261,6 @@ settingsRegistry.addGroup('Message', function () {
 		i18nLabel: 'clear_cache_now',
 	});
 	// TODO: deprecate this setting in favor of App
-	this.add('API_EmbedDisabledFor', '', {
-		type: 'string',
-		public: true,
-		i18nDescription: 'API_EmbedDisabledFor_Description',
-		alert: 'This_is_a_deprecated_feature_alert',
-	});
-	// TODO: deprecate this setting in favor of App
 	this.add('API_EmbedIgnoredHosts', 'localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16', {
 		type: 'string',
 		i18nDescription: 'API_EmbedIgnoredHosts_Description',
diff --git a/apps/meteor/app/markdown/lib/markdown.js b/apps/meteor/app/markdown/lib/markdown.js
index 7ee511d403e482036ce2e296dbd7c86274b64ddf..8f55cf17635c0dbcc7f810d6e2f60dfc38c293d1 100644
--- a/apps/meteor/app/markdown/lib/markdown.js
+++ b/apps/meteor/app/markdown/lib/markdown.js
@@ -5,15 +5,12 @@
 import { Meteor } from 'meteor/meteor';
 import { escapeHTML } from '@rocket.chat/string-helpers';
 
-import { marked } from './parser/marked/marked';
 import { original } from './parser/original/original';
 import { filtered } from './parser/filtered/filtered';
 import { code } from './parser/original/code';
-import { settings } from '../../settings';
 
 const parsers = {
 	original,
-	marked,
 	filtered,
 };
 
@@ -33,29 +30,11 @@ class MarkdownClass {
 	}
 
 	parseMessageNotEscaped(message) {
-		const parser = settings.get('Markdown_Parser');
-
-		if (parser === 'disabled') {
-			return message;
-		}
-
 		const options = {
-			supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-			headers: settings.get('Markdown_Headers'),
 			rootUrl: Meteor.absoluteUrl(),
-			marked: {
-				gfm: settings.get('Markdown_Marked_GFM'),
-				tables: settings.get('Markdown_Marked_Tables'),
-				breaks: settings.get('Markdown_Marked_Breaks'),
-				pedantic: settings.get('Markdown_Marked_Pedantic'),
-				smartLists: settings.get('Markdown_Marked_SmartLists'),
-				smartypants: settings.get('Markdown_Marked_Smartypants'),
-			},
 		};
 
-		const parse = typeof parsers[parser] === 'function' ? parsers[parser] : parsers.original;
-
-		return parse(message, options);
+		return parsers.original(message, options);
 	}
 
 	mountTokensBackRecursively(message, tokenList, useHtml = true) {
@@ -91,9 +70,7 @@ class MarkdownClass {
 	}
 
 	filterMarkdownFromMessage(message) {
-		return parsers.filtered(message, {
-			supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-		});
+		return parsers.filtered(message);
 	}
 }
 
@@ -101,20 +78,14 @@ export const Markdown = new MarkdownClass();
 
 export const filterMarkdown = (message) => Markdown.filterMarkdownFromMessage(message);
 
-export const createMarkdownMessageRenderer = ({ parser, ...options }) => {
-	if (!parser || parser === 'disabled') {
-		return (message) => message;
-	}
-
-	const parse = typeof parsers[parser] === 'function' ? parsers[parser] : parsers.original;
-
+export const createMarkdownMessageRenderer = ({ ...options }) => {
 	return (message) => {
 		if (!message?.html?.trim()) {
 			return message;
 		}
 
-		return parse(message, options);
+		return parsers.original(message, options);
 	};
 };
 
-export const createMarkdownNotificationRenderer = (options) => (message) => parsers.filtered(message, options);
+export const createMarkdownNotificationRenderer = () => (message) => parsers.filtered(message);
diff --git a/apps/meteor/app/markdown/lib/parser/marked/marked.js b/apps/meteor/app/markdown/lib/parser/marked/marked.js
deleted file mode 100644
index a1aff30618c42e24b94ed06a71215027bb9b031b..0000000000000000000000000000000000000000
--- a/apps/meteor/app/markdown/lib/parser/marked/marked.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import { Random } from 'meteor/random';
-import _ from 'underscore';
-import { marked as _marked } from 'marked';
-import createDOMPurify from 'dompurify';
-import { unescapeHTML, escapeHTML } from '@rocket.chat/string-helpers';
-
-import hljs, { register } from '../../hljs';
-import { getGlobalWindow } from '../../getGlobalWindow';
-
-const renderer = new _marked.Renderer();
-
-let msg = null;
-
-renderer.code = function (code, lang, escaped) {
-	if (this.options.highlight) {
-		const out = this.options.highlight(code, lang);
-		if (out != null && out !== code) {
-			escaped = true;
-			code = out;
-		}
-	}
-
-	let text = null;
-
-	if (!lang) {
-		text = `<pre><code class="code-colors hljs">${escaped ? code : escapeHTML(code)}</code></pre>`;
-	} else {
-		text = `<pre><code class="code-colors hljs ${escape(lang, true)}">${escaped ? code : escapeHTML(code)}</code></pre>`;
-	}
-
-	if (_.isString(msg)) {
-		return text;
-	}
-
-	const token = `=!=${Random.id()}=!=`;
-	msg.tokens.push({
-		highlight: true,
-		token,
-		text,
-	});
-
-	return token;
-};
-
-renderer.codespan = function (text) {
-	text = `<code class="code-colors inline">${text}</code>`;
-	if (_.isString(msg)) {
-		return text;
-	}
-
-	const token = `=!=${Random.id()}=!=`;
-	msg.tokens.push({
-		token,
-		text,
-	});
-
-	return token;
-};
-
-renderer.blockquote = function (quote) {
-	return `<blockquote class="background-transparent-darker-before">${quote}</blockquote>`;
-};
-
-const linkRenderer = renderer.link;
-renderer.link = function (href, title, text) {
-	const html = linkRenderer.call(renderer, href, title, text);
-	return html.replace(/^<a /, '<a target="_blank" rel="nofollow noopener noreferrer" ');
-};
-
-const highlight = function (code, lang) {
-	if (!lang) {
-		return code;
-	}
-	try {
-		register(lang);
-		return hljs.highlight(lang, code).value;
-	} catch (e) {
-		// Unknown language
-		return code;
-	}
-};
-
-export const marked = (message, { marked: { gfm, tables, breaks, pedantic, smartLists, smartypants } = {} }) => {
-	msg = message;
-
-	if (!message.tokens) {
-		message.tokens = [];
-	}
-
-	message.html = _marked.parse(unescapeHTML(message.html), {
-		gfm,
-		tables,
-		breaks,
-		pedantic,
-		smartLists,
-		smartypants,
-		renderer,
-		highlight,
-	});
-
-	const window = getGlobalWindow();
-	const DomPurify = createDOMPurify(window);
-	message.html = DomPurify.sanitize(message.html, { ADD_ATTR: ['target'], FORBID_ATTR: ['style'], FORBID_TAGS: ['style'] });
-
-	return message;
-};
diff --git a/apps/meteor/app/markdown/server/index.js b/apps/meteor/app/markdown/server/index.js
index 9b4f3084c58b8224e2980ae9308e8fd6d3ff1f94..8cf4e3078e48491db7576d1661eeb49d26abf85b 100644
--- a/apps/meteor/app/markdown/server/index.js
+++ b/apps/meteor/app/markdown/server/index.js
@@ -2,35 +2,20 @@ import { Meteor } from 'meteor/meteor';
 import { Tracker } from 'meteor/tracker';
 
 import { callbacks } from '../../../lib/callbacks';
-import { settings } from '../../settings/server';
 import { createMarkdownMessageRenderer, createMarkdownNotificationRenderer } from '../lib/markdown';
-import './settings';
 
 export { Markdown } from '../lib/markdown';
 
 Meteor.startup(() => {
 	Tracker.autorun(() => {
 		const options = {
-			parser: settings.get('Markdown_Parser'),
-			supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-			headers: settings.get('Markdown_Headers'),
 			rootUrl: Meteor.absoluteUrl(),
-			marked: {
-				gfm: settings.get('Markdown_Marked_GFM'),
-				tables: settings.get('Markdown_Marked_Tables'),
-				breaks: settings.get('Markdown_Marked_Breaks'),
-				pedantic: settings.get('Markdown_Marked_Pedantic'),
-				smartLists: settings.get('Markdown_Marked_SmartLists'),
-				smartypants: settings.get('Markdown_Marked_Smartypants'),
-			},
 		};
 
 		const renderMessage = createMarkdownMessageRenderer(options);
 		callbacks.add('renderMessage', renderMessage, callbacks.priority.HIGH, 'markdown');
 	});
 
-	const renderNotification = createMarkdownNotificationRenderer({
-		supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-	});
+	const renderNotification = createMarkdownNotificationRenderer();
 	callbacks.add('renderNotification', renderNotification, callbacks.priority.HIGH, 'filter-markdown');
 });
diff --git a/apps/meteor/app/markdown/server/settings.ts b/apps/meteor/app/markdown/server/settings.ts
deleted file mode 100644
index 34e878186714aef914dc8b6aa3195efc34023969..0000000000000000000000000000000000000000
--- a/apps/meteor/app/markdown/server/settings.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import { settingsRegistry } from '../../settings/server';
-
-settingsRegistry.add('Markdown_Parser', 'original', {
-	type: 'select',
-	values: [
-		{
-			key: 'disabled',
-			i18nLabel: 'Disabled',
-		},
-		{
-			key: 'original',
-			i18nLabel: 'Original',
-		},
-		{
-			key: 'marked',
-			i18nLabel: 'Marked',
-		},
-	],
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-
-const enableQueryOriginal = { _id: 'Markdown_Parser', value: 'original' };
-settingsRegistry.add('Markdown_Headers', false, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryOriginal,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-settingsRegistry.add('Markdown_SupportSchemesForLink', 'http,https', {
-	type: 'string',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	i18nDescription: 'Markdown_SupportSchemesForLink_Description',
-	enableQuery: enableQueryOriginal,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-
-const enableQueryMarked = { _id: 'Markdown_Parser', value: 'marked' };
-settingsRegistry.add('Markdown_Marked_GFM', true, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryMarked,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-settingsRegistry.add('Markdown_Marked_Tables', true, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryMarked,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-settingsRegistry.add('Markdown_Marked_Breaks', true, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryMarked,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-settingsRegistry.add('Markdown_Marked_Pedantic', false, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	alert: 'This_is_a_deprecated_feature_alert',
-	enableQuery: [
-		{
-			_id: 'Markdown_Parser',
-			value: 'marked',
-		},
-		{
-			_id: 'Markdown_Marked_GFM',
-			value: false,
-		},
-	],
-});
-settingsRegistry.add('Markdown_Marked_SmartLists', true, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryMarked,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
-settingsRegistry.add('Markdown_Marked_Smartypants', true, {
-	type: 'boolean',
-	group: 'Message',
-	section: 'Markdown',
-	public: true,
-	enableQuery: enableQueryMarked,
-	alert: 'This_is_a_deprecated_feature_alert',
-});
diff --git a/apps/meteor/app/message-snippet/client/index.js b/apps/meteor/app/message-snippet/client/index.js
deleted file mode 100644
index d5b4777732047e66f6326070b76383501073eebb..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import './messageType';
-import './snippetMessage';
-import './page/snippetPage.html';
-import './page/snippetPage';
-import './tabBar/tabBar';
-import './tabBar/views/snippetedMessages.html';
-import './tabBar/views/snippetedMessages';
-import './page/stylesheets/snippetPage.css';
diff --git a/apps/meteor/app/message-snippet/client/lib/collections.js b/apps/meteor/app/message-snippet/client/lib/collections.js
deleted file mode 100644
index ff80211fc3a38b048c053a42a9dae9109b040092..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/lib/collections.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Mongo } from 'meteor/mongo';
-
-export const SnippetedMessages = new Mongo.Collection('rocketchat_snippeted_message');
diff --git a/apps/meteor/app/message-snippet/client/messageType.js b/apps/meteor/app/message-snippet/client/messageType.js
deleted file mode 100644
index ccc2075553cc7302210289cebe2dc5174cf540a0..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/messageType.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { escapeHTML } from '@rocket.chat/string-helpers';
-
-import { MessageTypes } from '../../ui-utils';
-
-Meteor.startup(function () {
-	MessageTypes.registerType({
-		id: 'message_snippeted',
-		system: true,
-		message: 'Snippeted_a_message',
-		data(message) {
-			const snippetLink = `<a href="/snippet/${message.snippetId}/${encodeURIComponent(message.snippetName)}">${escapeHTML(
-				message.snippetName,
-			)}</a>`;
-			return { snippetLink };
-		},
-	});
-});
diff --git a/apps/meteor/app/message-snippet/client/page/snippetPage.html b/apps/meteor/app/message-snippet/client/page/snippetPage.html
deleted file mode 100644
index 139c9ae9210affd427b86a91a98fdd3c2191d685..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/page/snippetPage.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<template name="snippetPage">
-	<div id="{{_id}}" class="snippet-page {{t}} {{own}} {{isTemp}}" data-username="{{u.username}}" data-groupable="{{isGroupable}}" data-date="{{date}}" data-timestamp="{{timestamp}}">
-		<div class="snippet-informations">
-			{{> avatar username=snippet.u.username}}
-			<span class="username">{{snippet.u.username}}</span>
-			<span class="snippet-filename">{{ snippet.snippetName }}</span>
-		</div>
-
-
-
-		<span class="info"> {{_ "Snippet_Added" date }}</span>
-		<a class="download-button" target="_blank" href="/snippet/download/{{snippet._id}}/{{snippet.snippetName}}">
-			<i class="icon-download"></i>
-			{{_ "Download_Snippet" }}
-		</a>
-		<div class="body" dir="auto">
-			{{{ snippetContent }}}
-		</div>
-	</div>
-
-</template>
diff --git a/apps/meteor/app/message-snippet/client/page/snippetPage.js b/apps/meteor/app/message-snippet/client/page/snippetPage.js
deleted file mode 100644
index 0cd662305e7d763352544ad709dbf44feeaef296..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/page/snippetPage.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import { FlowRouter } from 'meteor/kadira:flow-router';
-import { ReactiveVar } from 'meteor/reactive-var';
-import { Template } from 'meteor/templating';
-import moment from 'moment';
-
-import { settings } from '../../../settings';
-import { Markdown } from '../../../markdown/client';
-import { APIClient } from '../../../utils/client';
-import { formatTime } from '../../../../client/lib/utils/formatTime';
-
-Template.snippetPage.helpers({
-	snippet() {
-		return Template.instance().message.get();
-	},
-	snippetContent() {
-		const message = Template.instance().message.get();
-		if (message === undefined) {
-			return null;
-		}
-		message.html = message.msg;
-		const markdown = Markdown.parse(message);
-		return markdown.tokens[0].text;
-	},
-	date() {
-		const snippet = Template.instance().message.get();
-		if (snippet !== undefined) {
-			return moment(snippet.ts).format(settings.get('Message_DateFormat'));
-		}
-	},
-	time() {
-		const snippet = Template.instance().message.get();
-		if (snippet !== undefined) {
-			return formatTime(snippet.ts);
-		}
-	},
-});
-
-Template.snippetPage.onCreated(async function () {
-	const snippetId = FlowRouter.getParam('snippetId');
-	this.message = new ReactiveVar({});
-
-	const { message } = await APIClient.get('/v1/chat.getSnippetedMessageById', { messageId: snippetId });
-	this.message.set(message);
-});
diff --git a/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css b/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css
deleted file mode 100644
index 1b3462721efd5b1a7bce086cae2b8f59fca8d53c..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css
+++ /dev/null
@@ -1,62 +0,0 @@
-:root {
-	--snippet-page-left-border-size: 30px;
-	--snippet-page-top-border-size: 20px;
-	--snippet-informations-height: 40px;
-	--snippet-page-right-border-size: 30px;
-}
-
-.snippet-page {
-	overflow-x: hidden;
-	overflow-y: auto;
-
-	width: auto;
-	height: 100%;
-	padding-top: var(--snippet-page-top-border-size);
-	padding-right: var(--snippet-page-right-border-size);
-	padding-left: var(--snippet-page-left-border-size);
-
-	& pre code,
-	& h1,
-	& span {
-		user-select: all;
-	}
-
-	& .snippet-informations {
-		display: inline-block;
-
-		width: 100%;
-		height: 60px;
-
-		& .avatar {
-			display: block;
-			float: left;
-			clear: left;
-
-			margin-right: 10px;
-		}
-
-		& .username {
-			display: block;
-
-			width: 100%;
-		}
-
-		& .snippet-filename {
-			display: block;
-
-			width: 100%;
-
-			font-weight: bold;
-		}
-	}
-
-	& .info {
-		color: darkgrey;
-
-		font-style: italic;
-	}
-
-	& .download-button {
-		float: right;
-	}
-}
diff --git a/apps/meteor/app/message-snippet/client/snippetMessage.js b/apps/meteor/app/message-snippet/client/snippetMessage.js
deleted file mode 100644
index 3c8a35d6cfdc973baab9441de7aa5abf40e2da6e..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/snippetMessage.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-
-import { settings } from '../../settings';
-import { ChatMessage, Subscriptions } from '../../models/client';
-
-Meteor.methods({
-	snippetMessage(message) {
-		if (typeof Meteor.userId() === 'undefined' || Meteor.userId() === null) {
-			return false;
-		}
-		if (
-			typeof settings.get('Message_AllowSnippeting') === 'undefined' ||
-			settings.get('Message_AllowSnippeting') === null ||
-			settings.get('Message_AllowSnippeting') === false
-		) {
-			return false;
-		}
-
-		const subscription = Subscriptions.findOne({ 'rid': message.rid, 'u._id': Meteor.userId() });
-
-		if (subscription === undefined) {
-			return false;
-		}
-		ChatMessage.update(
-			{
-				_id: message._id,
-			},
-			{
-				$set: {
-					snippeted: true,
-				},
-			},
-		);
-	},
-});
diff --git a/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts b/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts
deleted file mode 100644
index 6e36a47833a892d3457204ee889bf657f6ada856..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { useMemo } from 'react';
-import { useSetting } from '@rocket.chat/ui-contexts';
-
-import { addAction } from '../../../../client/views/room/lib/Toolbox';
-
-addAction('snippeted-messages', () => {
-	const snippetingEnabled = useSetting('Message_AllowSnippeting');
-	return useMemo(
-		() =>
-			snippetingEnabled
-				? {
-						groups: ['channel', 'group', 'direct', 'direct_multiple', 'team'],
-						id: 'snippeted-messages',
-						title: 'snippet-message',
-						icon: 'code',
-						template: 'snippetedMessages',
-						order: 20,
-				  }
-				: null,
-		[snippetingEnabled],
-	);
-});
diff --git a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html b/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html
deleted file mode 100644
index 2c047fbb9d34dc3e4e23d25535e19c7064993dd1..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<template name="snippetedMessages">
-	<div class="list-view snippeted-messages-list flex-tab__header">
-		<div class="title">
-			<h2>{{_ "Snippet_Messages"}}</h2>
-		</div>
-		{{#if Template.subscriptionsReady}}
-			{{#unless hasMessages}}
-				<h2>{{_ "No_snippet_messages"}}</h2>
-			{{/unless}}
-		{{/if}}
-	</div>
-	<div class="flex-tab__result js-list">
-		<ul class="list clearfix">
-			{{# with messageContext}}
-				{{#each msg in messages}}{{> message msg=msg room=room subscription=subscription settings=settings u=u}}{{/each}}
-			{{/with}}
-		</ul>
-		{{#if hasMore}}
-		<div class="load-more">
-			{{> loading}}
-		</div>
-		{{/if}}
-	</div>
-</template>
diff --git a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js b/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js
deleted file mode 100644
index 48da295d07bcdeead4a0562e71b6ebad1bf6e9de..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import _ from 'underscore';
-import { ReactiveVar } from 'meteor/reactive-var';
-import { Template } from 'meteor/templating';
-import { Mongo } from 'meteor/mongo';
-
-import { createMessageContext } from '../../../../ui-utils/client/lib/messageContext';
-import { APIClient } from '../../../../utils/client';
-import { Messages } from '../../../../models/client';
-import { upsertMessageBulk } from '../../../../ui-utils/client/lib/RoomHistoryManager';
-
-const LIMIT_DEFAULT = 50;
-
-Template.snippetedMessages.helpers({
-	hasMessages() {
-		return Template.instance().messages.find().count();
-	},
-	messages() {
-		const instance = Template.instance();
-		return instance.messages.find({}, { limit: instance.limit.get(), sort: { ts: -1 } });
-	},
-	hasMore() {
-		return Template.instance().hasMore.get();
-	},
-	messageContext: createMessageContext,
-});
-
-Template.snippetedMessages.onCreated(function () {
-	this.rid = this.data.rid;
-	this.hasMore = new ReactiveVar(true);
-	this.messages = new Mongo.Collection(null);
-	this.limit = new ReactiveVar(LIMIT_DEFAULT);
-
-	this.autorun(() => {
-		const query = {
-			_hidden: { $ne: true },
-			snippeted: true,
-			rid: this.rid,
-		};
-
-		this.cursor && this.cursor.stop();
-
-		this.limit.set(LIMIT_DEFAULT);
-
-		this.cursor = Messages.find(query).observe({
-			added: ({ _id, ...message }) => {
-				this.messages.upsert({ _id }, message);
-			},
-			changed: ({ _id, ...message }) => {
-				this.messages.upsert({ _id }, message);
-			},
-			removed: ({ _id }) => {
-				this.messages.remove({ _id });
-			},
-		});
-	});
-
-	this.autorun(async () => {
-		const limit = this.limit.get();
-		const { messages, total } = await APIClient.get('/v1/chat.getSnippetedMessages', {
-			roomId: this.rid,
-			count: limit,
-		});
-
-		upsertMessageBulk({ msgs: messages }, this.messages);
-
-		this.hasMore.set(total > limit);
-	});
-});
-
-Template.snippetedMessages.onDestroyed(function () {
-	this.cursor.stop();
-});
-
-Template.snippetedMessages.events({
-	'scroll .js-list': _.throttle(function (e, instance) {
-		if (e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight && instance.hasMore.get()) {
-			return instance.limit.set(instance.limit.get() + 50);
-		}
-	}, 200),
-});
diff --git a/apps/meteor/app/message-snippet/server/index.js b/apps/meteor/app/message-snippet/server/index.js
deleted file mode 100644
index 74e7fa9524c26048c84aa783a979ecd247401852..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/server/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import './startup/settings';
-import './methods/snippetMessage';
-import './requests';
diff --git a/apps/meteor/app/message-snippet/server/methods/snippetMessage.js b/apps/meteor/app/message-snippet/server/methods/snippetMessage.js
deleted file mode 100644
index 987c3102c71dd4c9ae08b4dfef6643b2a9d08486..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/server/methods/snippetMessage.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-
-import { Subscriptions, Messages, Users, Rooms } from '../../../models/server';
-import { settings } from '../../../settings/server';
-import { callbacks } from '../../../../lib/callbacks';
-import { isTheLastMessage } from '../../../lib';
-
-Meteor.methods({
-	snippetMessage(message, filename) {
-		if (Meteor.userId() == null) {
-			// noinspection JSUnresolvedFunction
-			throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'snippetMessage' });
-		}
-
-		const room = Rooms.findOne({ _id: message.rid });
-
-		if (typeof room === 'undefined' || room === null) {
-			return false;
-		}
-
-		const subscription = Subscriptions.findOneByRoomIdAndUserId(message.rid, Meteor.userId(), {
-			fields: { _id: 1 },
-		});
-		if (!subscription) {
-			return false;
-		}
-
-		const me = Users.findOneById(Meteor.userId());
-
-		// If we keep history of edits, insert a new message to store history information
-		if (settings.get('Message_KeepHistory')) {
-			Messages.cloneAndSaveAsHistoryById(message._id, me);
-		}
-
-		message.snippeted = true;
-		message.snippetedAt = Date.now;
-		message.snippetedBy = {
-			_id: Meteor.userId(),
-			username: me.username,
-		};
-
-		message = callbacks.run('beforeSaveMessage', message);
-
-		// Create the SnippetMessage
-		Messages.setSnippetedByIdAndUserId(message, filename, message.snippetedBy, message.snippeted, Date.now, filename);
-		if (isTheLastMessage(room, message)) {
-			Rooms.setLastMessageSnippeted(room._id, message, filename, message.snippetedBy, message.snippeted, Date.now, filename);
-		}
-
-		Messages.createWithTypeRoomIdMessageAndUser('message_snippeted', message.rid, '', me, {
-			snippetId: message._id,
-			snippetName: filename,
-		});
-	},
-});
diff --git a/apps/meteor/app/message-snippet/server/requests.js b/apps/meteor/app/message-snippet/server/requests.js
deleted file mode 100644
index 63f74bf59a005b5151354b079724751b6851fe86..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/server/requests.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import { WebApp } from 'meteor/webapp';
-import { Cookies } from 'meteor/ostrio:cookies';
-
-import { Users, Rooms, Messages } from '../../models/server';
-
-WebApp.connectHandlers.use('/snippet/download', function (req, res) {
-	let rawCookies;
-	let token;
-	let uid;
-	const cookie = new Cookies();
-
-	if (req.headers && req.headers.cookie !== null) {
-		rawCookies = req.headers.cookie;
-	}
-
-	if (rawCookies !== null) {
-		uid = cookie.get('rc_uid', rawCookies);
-	}
-
-	if (rawCookies !== null) {
-		token = cookie.get('rc_token', rawCookies);
-	}
-
-	if (uid === null) {
-		uid = req.query.rc_uid;
-		token = req.query.rc_token;
-	}
-
-	const user = Users.findOneByIdAndLoginToken(uid, token);
-
-	if (!(uid && token && user)) {
-		res.writeHead(403);
-		res.end();
-		return false;
-	}
-	const match = /^\/([^\/]+)\/(.*)/.exec(req.url);
-
-	if (match[1]) {
-		const snippet = Messages.findOne({
-			_id: match[1],
-			snippeted: true,
-		});
-		const room = Rooms.findOne({ _id: snippet.rid, usernames: { $in: [user.username] } });
-		if (room === undefined) {
-			res.writeHead(403);
-			res.end();
-			return false;
-		}
-
-		res.setHeader('Content-Disposition', `attachment; filename*=UTF-8''${encodeURIComponent(snippet.snippetName)}`);
-		res.setHeader('Content-Type', 'application/octet-stream');
-
-		// Removing the ``` contained in the msg.
-		const snippetContent = snippet.msg.substr(3, snippet.msg.length - 6);
-		res.setHeader('Content-Length', snippetContent.length);
-		res.write(snippetContent);
-		res.end();
-		return;
-	}
-
-	res.writeHead(404);
-	res.end();
-});
diff --git a/apps/meteor/app/message-snippet/server/startup/settings.ts b/apps/meteor/app/message-snippet/server/startup/settings.ts
deleted file mode 100644
index eb20c713cb5c973e9e6b3e71bd3a775a8a7a2372..0000000000000000000000000000000000000000
--- a/apps/meteor/app/message-snippet/server/startup/settings.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { settingsRegistry } from '../../../settings/server';
-
-settingsRegistry.add('Message_AllowSnippeting', false, {
-	type: 'boolean',
-	public: true,
-	group: 'Message',
-	alert: 'This_is_a_deprecated_feature_alert',
-});
diff --git a/apps/meteor/app/models/server/models/Messages.js b/apps/meteor/app/models/server/models/Messages.js
index e570c67ed779a9df34e33b51da71391d3aca0665..5b02eac244d859224951cb0dc059ad3f2653c4e6 100644
--- a/apps/meteor/app/models/server/models/Messages.js
+++ b/apps/meteor/app/models/server/models/Messages.js
@@ -21,7 +21,6 @@ export class Messages extends Base {
 		this.tryEnsureIndex({ 'file._id': 1 }, { sparse: true });
 		this.tryEnsureIndex({ 'mentions.username': 1 }, { sparse: true });
 		this.tryEnsureIndex({ pinned: 1 }, { sparse: true });
-		this.tryEnsureIndex({ snippeted: 1 }, { sparse: true });
 		this.tryEnsureIndex({ location: '2dsphere' });
 		this.tryEnsureIndex({ slackTs: 1, slackBotId: 1 }, { sparse: true });
 		this.tryEnsureIndex({ unread: 1 }, { sparse: true });
@@ -618,30 +617,6 @@ export class Messages extends Base {
 		return this.update(query, update);
 	}
 
-	setSnippetedByIdAndUserId(message, snippetName, snippetedBy, snippeted, snippetedAt) {
-		if (snippeted == null) {
-			snippeted = true;
-		}
-		if (snippetedAt == null) {
-			snippetedAt = 0;
-		}
-		const query = { _id: message._id };
-
-		const msg = `\`\`\`${message.msg}\`\`\``;
-
-		const update = {
-			$set: {
-				msg,
-				snippeted,
-				snippetedAt: snippetedAt || new Date(),
-				snippetedBy,
-				snippetName,
-			},
-		};
-
-		return this.update(query, update);
-	}
-
 	setUrlsById(_id, urls) {
 		const query = { _id };
 
diff --git a/apps/meteor/app/models/server/models/Rooms.js b/apps/meteor/app/models/server/models/Rooms.js
index 703cf3b28ec9978e1932c1e4f83c3a8a12ebbbaa..c8ad0ead74b137d7b2c9d91c8760c592793f0006 100644
--- a/apps/meteor/app/models/server/models/Rooms.js
+++ b/apps/meteor/app/models/server/models/Rooms.js
@@ -125,24 +125,6 @@ export class Rooms extends Base {
 		return this.update(query, update);
 	}
 
-	setLastMessageSnippeted(roomId, message, snippetName, snippetedBy, snippeted, snippetedAt) {
-		const query = { _id: roomId };
-
-		const msg = `\`\`\`${message.msg}\`\`\``;
-
-		const update = {
-			$set: {
-				'lastMessage.msg': msg,
-				'lastMessage.snippeted': snippeted,
-				'lastMessage.snippetedAt': snippetedAt || new Date(),
-				'lastMessage.snippetedBy': snippetedBy,
-				'lastMessage.snippetName': snippetName,
-			},
-		};
-
-		return this.update(query, update);
-	}
-
 	setLastMessagePinned(roomId, pinnedBy, pinned, pinnedAt) {
 		const query = { _id: roomId };
 
diff --git a/apps/meteor/app/ui-message/client/message.html b/apps/meteor/app/ui-message/client/message.html
index f1ce01f8e126711e7ec8ff52254c748e8736ffe7..f9fbb46ed268e563930d1dfca0fa136c3e5a3d13 100644
--- a/apps/meteor/app/ui-message/client/message.html
+++ b/apps/meteor/app/ui-message/client/message.html
@@ -97,9 +97,6 @@
 					{{/if}}
 				</div>
 				<div class="body {{bodyClass}}" data-qa-type="message-body" dir="auto" data-unread-text="{{_ "Unread_Messages"}}">
-					{{#if isSnippet}}
-						<div class="snippet-name">{{_ "Snippet_name"}}: {{snippetName}}</div>
-					{{/if}}
 					{{#if msg.blocks}}
 						<div class='rc-ui-kit'>
 							{{> Blocks blocks=msg.blocks rid=msg.rid mid=msg._id}}
diff --git a/apps/meteor/app/ui-message/client/message.js b/apps/meteor/app/ui-message/client/message.js
index f0bffebb9a52b69c46dd6ed67d8b9c2c7f100b9e..38eed20870fbb7859a704ee7d1b3ee0684724373 100644
--- a/apps/meteor/app/ui-message/client/message.js
+++ b/apps/meteor/app/ui-message/client/message.js
@@ -309,15 +309,6 @@ Template.message.helpers({
 			return false;
 		}
 
-		// check if oembed is disabled for message's sender
-		if (
-			(settings.API_EmbedDisabledFor || '')
-				.split(',')
-				.map((username) => username.trim())
-				.includes(msg.u && msg.u.username)
-		) {
-			return false;
-		}
 		return true;
 	},
 	reactions() {
@@ -446,10 +437,6 @@ Template.message.helpers({
 	messageActions() {
 		return Template.instance().actions.get();
 	},
-	isSnippet() {
-		const { msg } = this;
-		return msg.actionContext === 'snippeted';
-	},
 	isThreadReply() {
 		const {
 			groupable,
diff --git a/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts b/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts
index 4078a1c2e6a194bf73a8a35a5392b83d5cbc37f5..b92d23e76c5b6f8832388ff4de6bce9c9926ff8f 100644
--- a/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts
+++ b/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts
@@ -2,7 +2,6 @@ import type { Icon } from '@rocket.chat/fuselage';
 import type { TranslationKey } from '@rocket.chat/ui-contexts';
 import type { ComponentProps } from 'react';
 
-import { Markdown } from '../../../markdown/client';
 import { settings } from '../../../settings/client';
 
 export type FormattingButton =
@@ -13,13 +12,13 @@ export type FormattingButton =
 			// text?: () => string | undefined;
 			command?: string;
 			link?: string;
-			condition: () => boolean;
+			condition?: () => boolean;
 	  }
 	| {
 			label: TranslationKey;
 			text: () => string | undefined;
 			link: string;
-			condition: () => boolean;
+			condition?: () => boolean;
 	  };
 
 export const formattingButtons: ReadonlyArray<FormattingButton> = [
@@ -28,45 +27,27 @@ export const formattingButtons: ReadonlyArray<FormattingButton> = [
 		icon: 'bold',
 		pattern: '*{{text}}*',
 		command: 'b',
-		condition: () => Markdown && settings.get('Markdown_Parser') === 'original',
-	},
-	{
-		label: 'bold',
-		icon: 'bold',
-		pattern: '**{{text}}**',
-		command: 'b',
-		condition: () => Markdown && settings.get('Markdown_Parser') === 'marked',
 	},
 	{
 		label: 'italic',
 		icon: 'italic',
 		pattern: '_{{text}}_',
 		command: 'i',
-		condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled',
 	},
 	{
 		label: 'strike',
 		icon: 'strike',
 		pattern: '~{{text}}~',
-		condition: () => Markdown && settings.get('Markdown_Parser') === 'original',
-	},
-	{
-		label: 'strike',
-		icon: 'strike',
-		pattern: '~~{{text}}~~',
-		condition: () => Markdown && settings.get('Markdown_Parser') === 'marked',
 	},
 	{
 		label: 'inline_code',
 		icon: 'code',
 		pattern: '`{{text}}`',
-		condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled',
 	},
 	{
 		label: 'multi_line',
 		icon: 'multiline',
 		pattern: '```\n{{text}}\n``` ',
-		condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled',
 	},
 	{
 		label: 'KaTeX' as TranslationKey,
diff --git a/apps/meteor/app/ui-utils/client/lib/messageContext.ts b/apps/meteor/app/ui-utils/client/lib/messageContext.ts
index c5ad7e0d2fc05d2fd10328f5c063df74b236c00b..14f519d7d348feb91fbe776924cfa780de4392fe 100644
--- a/apps/meteor/app/ui-utils/client/lib/messageContext.ts
+++ b/apps/meteor/app/ui-utils/client/lib/messageContext.ts
@@ -14,7 +14,6 @@ import type { CommonRoomTemplateInstance } from '../../../ui/client/views/app/li
 const fields = {
 	'name': 1,
 	'username': 1,
-	'settings.preferences.useLegacyMessageTemplate': 1,
 	'settings.preferences.autoImageLoad': 1,
 	'settings.preferences.saveMobileBandwidth': 1,
 	'settings.preferences.collapseMediaByDefault': 1,
@@ -51,7 +50,6 @@ export const createMessageContext = ({
 	),
 	translateLanguage = AutoTranslate.getLanguage(rid),
 	autoImageLoad = getUserPreference(user, 'autoImageLoad'),
-	useLegacyMessageTemplate = getUserPreference(user, 'useLegacyMessageTemplate'),
 	saveMobileBandwidth = Meteor.Device.isPhone() && getUserPreference(user, 'saveMobileBandwidth'),
 	collapseMediaByDefault = getUserPreference(user, 'collapseMediaByDefault'),
 	showreply = true,
@@ -70,12 +68,8 @@ export const createMessageContext = ({
 	// eslint-disable-next-line @typescript-eslint/naming-convention
 	Message_AllowEditing_BlockEditInMinutes = settings.get('Message_AllowEditing_BlockEditInMinutes'),
 	// eslint-disable-next-line @typescript-eslint/naming-convention
-	Message_ShowEditedStatus = settings.get('Message_ShowEditedStatus'),
-	// eslint-disable-next-line @typescript-eslint/naming-convention
 	API_Embed = settings.get('API_Embed'),
 	// eslint-disable-next-line @typescript-eslint/naming-convention
-	API_EmbedDisabledFor = settings.get('API_EmbedDisabledFor'),
-	// eslint-disable-next-line @typescript-eslint/naming-convention
 	Message_GroupingPeriod = settings.get('Message_GroupingPeriod') * 1000,
 }: {
 	uid?: IUser['_id'] | null;
@@ -87,7 +81,6 @@ export const createMessageContext = ({
 	embeddedLayout?: boolean;
 	translateLanguage?: unknown;
 	autoImageLoad?: unknown;
-	useLegacyMessageTemplate?: unknown;
 	saveMobileBandwidth?: unknown;
 	collapseMediaByDefault?: unknown;
 	showreply?: unknown;
@@ -100,9 +93,7 @@ export const createMessageContext = ({
 	AutoTranslate_Enabled?: unknown;
 	Message_AllowEditing?: unknown;
 	Message_AllowEditing_BlockEditInMinutes?: unknown;
-	Message_ShowEditedStatus?: unknown;
 	API_Embed?: unknown;
-	API_EmbedDisabledFor?: unknown;
 	Message_GroupingPeriod?: unknown;
 } = {}) => {
 	return {
@@ -112,7 +103,6 @@ export const createMessageContext = ({
 		settings: {
 			translateLanguage,
 			autoImageLoad,
-			useLegacyMessageTemplate,
 			saveMobileBandwidth,
 			collapseMediaByDefault,
 			showreply,
@@ -125,9 +115,7 @@ export const createMessageContext = ({
 			AutoTranslate_Enabled,
 			Message_AllowEditing,
 			Message_AllowEditing_BlockEditInMinutes,
-			Message_ShowEditedStatus,
 			API_Embed,
-			API_EmbedDisabledFor,
 			Message_GroupingPeriod,
 		},
 	} as const;
diff --git a/apps/meteor/client/components/MarkdownText.tsx b/apps/meteor/client/components/MarkdownText.tsx
index a5591227aad9a1ffc60eb6aefba183ff7a5301c2..23f2968e8582e2f5e3bb420af2bc6101edecf178 100644
--- a/apps/meteor/client/components/MarkdownText.tsx
+++ b/apps/meteor/client/components/MarkdownText.tsx
@@ -1,5 +1,4 @@
 import { Box } from '@rocket.chat/fuselage';
-import { useSetting } from '@rocket.chat/ui-contexts';
 import dompurify from 'dompurify';
 import { marked } from 'marked';
 import type { ComponentProps, FC } from 'react';
@@ -89,7 +88,7 @@ const MarkdownText: FC<Partial<MarkdownTextParams>> = ({
 
 	let markedOptions: marked.MarkedOptions;
 
-	const schemes = useSetting('Markdown_SupportSchemesForLink') as string;
+	const schemes = 'http,https';
 
 	switch (variant) {
 		case 'inline':
diff --git a/apps/meteor/client/importPackages.ts b/apps/meteor/client/importPackages.ts
index 3dc430e1eda694351c6f3c50afbb9326b660d6fb..3843b7fcd9e2bc83830e7178a150c51e9bd2dc0f 100644
--- a/apps/meteor/client/importPackages.ts
+++ b/apps/meteor/client/importPackages.ts
@@ -29,7 +29,6 @@ import '../app/logger/client';
 import '../app/markdown/client';
 import '../app/message-attachments/client';
 import '../app/message-mark-as-unread/client';
-import '../app/message-snippet/client';
 import '../app/nextcloud/client';
 import '../app/oauth2-server-config/client';
 import '../app/oembed/client';
diff --git a/apps/meteor/client/startup/renderMessage/autolinker.ts b/apps/meteor/client/startup/renderMessage/autolinker.ts
deleted file mode 100644
index 2429b0a1a9e7eec7933cff769526d8ad9ccf9d07..0000000000000000000000000000000000000000
--- a/apps/meteor/client/startup/renderMessage/autolinker.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { Tracker } from 'meteor/tracker';
-
-import { settings } from '../../../app/settings/client';
-import { callbacks } from '../../../lib/callbacks';
-
-Meteor.startup(() => {
-	Tracker.autorun(() => {
-		const isEnabled = settings.get('AutoLinker') === true;
-
-		if (!isEnabled) {
-			callbacks.remove('renderMessage', 'autolinker');
-			return;
-		}
-
-		const options = {
-			stripPrefix: settings.get('AutoLinker_StripPrefix'),
-			urls: {
-				schemeMatches: settings.get('AutoLinker_Urls_Scheme'),
-				wwwMatches: settings.get('AutoLinker_Urls_www'),
-				tldMatches: settings.get('AutoLinker_Urls_TLD'),
-			},
-			email: settings.get('AutoLinker_Email'),
-			phone: settings.get('AutoLinker_Phone'),
-		};
-
-		import('../../../app/autolinker/client').then(({ createAutolinkerMessageRenderer }) => {
-			const renderMessage = createAutolinkerMessageRenderer(options);
-			callbacks.remove('renderMessage', 'autolinker');
-			callbacks.add('renderMessage', renderMessage, callbacks.priority.MEDIUM, 'autolinker');
-		});
-	});
-});
diff --git a/apps/meteor/client/startup/renderMessage/index.ts b/apps/meteor/client/startup/renderMessage/index.ts
index 09eeca80dd1e76d92e338f253c736008d2eca571..ec329d84b5301387d568f455ec961642c7706e6b 100644
--- a/apps/meteor/client/startup/renderMessage/index.ts
+++ b/apps/meteor/client/startup/renderMessage/index.ts
@@ -1,9 +1,6 @@
-import './autolinker';
 import './autotranslate';
 import './emoji';
 import './hexcolor';
 import './highlightWords';
-import './issuelink';
 import './katex';
-import './markdown';
 import './mentionsMessage';
diff --git a/apps/meteor/client/startup/renderMessage/issuelink.ts b/apps/meteor/client/startup/renderMessage/issuelink.ts
deleted file mode 100644
index ba96e825339785ac01bbcd0096c83b847a1b1388..0000000000000000000000000000000000000000
--- a/apps/meteor/client/startup/renderMessage/issuelink.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { Tracker } from 'meteor/tracker';
-
-import { settings } from '../../../app/settings/client';
-import { callbacks } from '../../../lib/callbacks';
-
-Meteor.startup(() => {
-	Tracker.autorun(() => {
-		const isEnabled = settings.get('IssueLinks_Enabled');
-
-		if (!isEnabled) {
-			callbacks.remove('renderMessage', 'issuelink');
-			return;
-		}
-
-		const options = {
-			template: settings.get('IssueLinks_Template'),
-		};
-
-		import('../../../app/issuelinks/client').then(({ createIssueLinksMessageRenderer }) => {
-			const renderMessage = createIssueLinksMessageRenderer(options);
-			callbacks.remove('renderMessage', 'issuelink');
-			callbacks.add('renderMessage', renderMessage, callbacks.priority.MEDIUM, 'issuelink');
-		});
-	});
-});
diff --git a/apps/meteor/client/startup/renderMessage/markdown.ts b/apps/meteor/client/startup/renderMessage/markdown.ts
deleted file mode 100644
index d13e4f3b9cda6b0477765570c928ae76f3c71bd2..0000000000000000000000000000000000000000
--- a/apps/meteor/client/startup/renderMessage/markdown.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { Tracker } from 'meteor/tracker';
-
-import { settings } from '../../../app/settings/client';
-import { callbacks } from '../../../lib/callbacks';
-
-Meteor.startup(() => {
-	Tracker.autorun(() => {
-		const options = {
-			parser: settings.get('Markdown_Parser'),
-			supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-			headers: settings.get('Markdown_Headers'),
-			rootUrl: Meteor.absoluteUrl(),
-			marked: {
-				gfm: settings.get('Markdown_Marked_GFM'),
-				tables: settings.get('Markdown_Marked_Tables'),
-				breaks: settings.get('Markdown_Marked_Breaks'),
-				pedantic: settings.get('Markdown_Marked_Pedantic'),
-				smartLists: settings.get('Markdown_Marked_SmartLists'),
-				smartypants: settings.get('Markdown_Marked_Smartypants'),
-			},
-		};
-
-		import('../../../app/markdown/client').then(({ createMarkdownMessageRenderer }) => {
-			const renderMessage = createMarkdownMessageRenderer(options);
-			callbacks.remove('renderMessage', 'markdown');
-			callbacks.add('renderMessage', renderMessage, callbacks.priority.HIGH, 'markdown');
-		});
-	});
-});
diff --git a/apps/meteor/client/startup/renderNotification/markdown.ts b/apps/meteor/client/startup/renderNotification/markdown.ts
index 8c83f75776d042e9a98d653ba61867c7c5bcc1be..1d8ca18164e8ade7261fdc36b8b3c42104d65de3 100644
--- a/apps/meteor/client/startup/renderNotification/markdown.ts
+++ b/apps/meteor/client/startup/renderNotification/markdown.ts
@@ -1,15 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 
-import { settings } from '../../../app/settings/client';
 import { callbacks } from '../../../lib/callbacks';
 
 Meteor.startup(() => {
-	const options = {
-		supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'),
-	};
-
 	import('../../../app/markdown/client').then(({ createMarkdownNotificationRenderer }) => {
-		const renderNotification = createMarkdownNotificationRenderer(options);
+		const renderNotification = createMarkdownNotificationRenderer();
 		callbacks.remove('renderNotification', 'filter-markdown');
 		callbacks.add('renderNotification', renderNotification, callbacks.priority.HIGH, 'filter-markdown');
 	});
diff --git a/apps/meteor/client/startup/routes.tsx b/apps/meteor/client/startup/routes.tsx
index 9a12675ca871c39726ca59b372bb6b15da54c846..334c787b7d55e6ae0e5202e5795469317f237014 100644
--- a/apps/meteor/client/startup/routes.tsx
+++ b/apps/meteor/client/startup/routes.tsx
@@ -235,17 +235,6 @@ FlowRouter.route('/reset-password/:token', {
 	},
 });
 
-FlowRouter.route('/snippet/:snippetId/:snippetName', {
-	name: 'snippetView',
-	action() {
-		appLayout.render(
-			<MainLayout>
-				<BlazeTemplate template='snippetPage' />
-			</MainLayout>,
-		);
-	},
-});
-
 FlowRouter.route('/oauth/authorize', {
 	name: 'oauth/authorize',
 	action() {
diff --git a/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx b/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx
index b53249b40a950ba79181fa96484a90e6e065fad5..7c2410deb9fb7b2b3288adede4384d94de2b0380 100644
--- a/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx
+++ b/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx
@@ -1,5 +1,5 @@
 import type { SelectOption } from '@rocket.chat/fuselage';
-import { Accordion, Field, FieldGroup, MultiSelect, ToggleSwitch, Callout } from '@rocket.chat/fuselage';
+import { Accordion, Field, FieldGroup, MultiSelect } from '@rocket.chat/fuselage';
 import { useUserPreference, useTranslation } from '@rocket.chat/ui-contexts';
 import type { ReactElement } from 'react';
 import React, { useMemo } from 'react';
@@ -11,7 +11,6 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection
 	const t = useTranslation();
 
 	const userDontAskAgainList = useUserPreference<{ action: string; label: string }[]>('dontAskAgainList');
-	const userLegacyMessageTemplate = useUserPreference('useLegacyMessageTemplate');
 
 	const options = useMemo(
 		() => (userDontAskAgainList || []).map(({ action, label }) => [action, label]) as SelectOption[],
@@ -23,17 +22,15 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection
 	const { values, handlers, commit } = useForm(
 		{
 			dontAskAgainList: selectedOptions,
-			useLegacyMessageTemplate: userLegacyMessageTemplate,
 		},
 		onChange,
 	);
 
-	const { dontAskAgainList, useLegacyMessageTemplate } = values as {
+	const { dontAskAgainList } = values as {
 		dontAskAgainList: string[];
-		useLegacyMessageTemplate: boolean;
 	};
 
-	const { handleDontAskAgainList, handleUseLegacyMessageTemplate } = handlers;
+	const { handleDontAskAgainList } = handlers;
 
 	commitRef.current.global = commit;
 
@@ -51,13 +48,6 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection
 						/>
 					</Field.Row>
 				</Field>
-				<Field display='flex' alignItems='center' flexDirection='row' justifyContent='spaceBetween' flexGrow={1}>
-					<Field.Label>{t('Use_Legacy_Message_Template')}</Field.Label>
-					<Field.Row>
-						<ToggleSwitch checked={useLegacyMessageTemplate} onChange={handleUseLegacyMessageTemplate} />
-					</Field.Row>
-				</Field>
-				<Callout type='warning'>{t('This_is_a_deprecated_feature_alert')}</Callout>
 			</FieldGroup>
 		</Accordion.Item>
 	);
diff --git a/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx b/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx
index c591d920604932eefa42b4d8319b493af20dad33..f5aceed9634e10020fd027d2e697f43358e4931b 100644
--- a/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx
+++ b/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx
@@ -202,10 +202,8 @@ export default {
 			customScript: 0,
 			tabInvites: 0,
 			totalEmailInvitation: 0,
-			totalRoomsWithSnippet: 0,
 			totalRoomsWithStarred: 0,
 			totalRoomsWithPinned: 0,
-			totalSnippet: 0,
 			totalStarred: 0,
 			totalPinned: 0,
 			totalE2ERooms: 0,
diff --git a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx b/apps/meteor/client/views/admin/info/InformationPage.stories.tsx
index b5c91798d5f40690cd70b659d3c76fef1b7173a7..cd0b6fa64c97194a26c155b3fd0c2fe63550f871 100644
--- a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx
+++ b/apps/meteor/client/views/admin/info/InformationPage.stories.tsx
@@ -232,10 +232,8 @@ export default {
 			customScript: 0,
 			tabInvites: 0,
 			totalEmailInvitation: 0,
-			totalRoomsWithSnippet: 0,
 			totalRoomsWithStarred: 0,
 			totalRoomsWithPinned: 0,
-			totalSnippet: 0,
 			totalStarred: 0,
 			totalPinned: 0,
 			totalE2ERooms: 0,
diff --git a/apps/meteor/client/views/admin/info/UsageCard.stories.tsx b/apps/meteor/client/views/admin/info/UsageCard.stories.tsx
index 2081987efebc696565deeab5fc9a05c25d87e802..081731e529cf09b9cc30925fdbc7ea9755ea3c2b 100644
--- a/apps/meteor/client/views/admin/info/UsageCard.stories.tsx
+++ b/apps/meteor/client/views/admin/info/UsageCard.stories.tsx
@@ -180,10 +180,8 @@ export default {
 			customScript: 0,
 			tabInvites: 0,
 			totalEmailInvitation: 0,
-			totalRoomsWithSnippet: 0,
 			totalRoomsWithStarred: 0,
 			totalRoomsWithPinned: 0,
-			totalSnippet: 0,
 			totalStarred: 0,
 			totalPinned: 0,
 			totalE2ERooms: 0,
diff --git a/apps/meteor/client/views/room/components/body/RoomBody.tsx b/apps/meteor/client/views/room/components/body/RoomBody.tsx
index 5237ff6d7b8307754102a32e9e37e527fc96768a..e658afeb20666b9db91bc2b3ec696e337c347efc 100644
--- a/apps/meteor/client/views/room/components/body/RoomBody.tsx
+++ b/apps/meteor/client/views/room/components/body/RoomBody.tsx
@@ -33,11 +33,9 @@ import MessageListErrorBoundary from '../../MessageList/MessageListErrorBoundary
 import { useChat } from '../../contexts/ChatContext';
 import { useRoom, useRoomSubscription, useRoomMessages } from '../../contexts/RoomContext';
 import { useToolboxContext } from '../../contexts/ToolboxContext';
-import { useLegacyMessageEvents } from '../../hooks/useLegacyMessageEvents';
 import DropTargetOverlay from './DropTargetOverlay';
 import JumpToRecentMessagesBar from './JumpToRecentMessagesBar';
 import LeaderBar from './LeaderBar';
-import LegacyMessageTemplateList from './LegacyMessageTemplateList';
 import LoadingMessagesIndicator from './LoadingMessagesIndicator';
 import NewMessagesButton from './NewMessagesButton';
 import RetentionPolicyWarning from './RetentionPolicyWarning';
@@ -65,7 +63,6 @@ const RoomBody = (): ReactElement => {
 	const hideFlexTab = useUserPreference<boolean>('hideFlexTab');
 	const hideUsernames = useUserPreference<boolean>('hideUsernames');
 	const displayAvatars = useUserPreference<boolean>('displayAvatars');
-	const useLegacyMessageTemplate = useUserPreference<boolean>('useLegacyMessageTemplate') ?? false;
 
 	const wrapperRef = useRef<HTMLDivElement | null>(null);
 	const messagesBoxRef = useRef<HTMLDivElement | null>(null);
@@ -319,19 +316,6 @@ const RoomBody = (): ReactElement => {
 		};
 	}, [room._id, setUnreadCount]);
 
-	useLegacyMessageEvents({
-		messageListRef: {
-			get current() {
-				if (!useLegacyMessageTemplate) {
-					return null;
-				}
-
-				return wrapperRef.current?.querySelector('ul') ?? null;
-			},
-		},
-		onRequestScrollToBottom: sendToBottomIfNecessary,
-	});
-
 	useEffect(() => {
 		const wrapper = wrapperRef.current;
 
@@ -616,7 +600,7 @@ const RoomBody = (): ReactElement => {
 													)}
 												</>
 											) : null}
-											{useLegacyMessageTemplate ? <LegacyMessageTemplateList room={room} /> : <MessageList rid={room._id} />}
+											<MessageList rid={room._id} />
 											{hasMoreNextMessages ? (
 												<li className='load-more'>{isLoadingMoreMessages ? <LoadingMessagesIndicator /> : null}</li>
 											) : null}
diff --git a/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts b/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts
index a5f01705adf48115f18c7c3bed844d2574c238ba..77c7aba178bec7b42e20d34743f6b898f89ea07c 100644
--- a/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts
+++ b/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts
@@ -16,7 +16,6 @@ export const useRoomMessageContext = (room: IRoom) => {
 	const { isMobile: mobile } = useLayout();
 	const translateLanguage = useReactiveValue(useCallback(() => AutoTranslate.getLanguage(rid), [rid]));
 	const autoImageLoad = useUserPreference('autoImageLoad');
-	const useLegacyMessageTemplate = useUserPreference('useLegacyMessageTemplate');
 	const saveMobileBandwidth = useUserPreference('saveMobileBandwidth');
 	const collapseMediaByDefault = useUserPreference('collapseMediaByDefault');
 	const hasPermissionDeleteMessage = usePermission('delete-message', rid);
@@ -28,9 +27,7 @@ export const useRoomMessageContext = (room: IRoom) => {
 	const autoTranslateEnabled = useSetting('AutoTranslate_Enabled');
 	const allowEditing = useSetting('Message_AllowEditing');
 	const blockEditInMinutes = useSetting('Message_AllowEditing_BlockEditInMinutes');
-	const showEditedStatus = useSetting('Message_ShowEditedStatus');
 	const embed = useSetting('API_Embed');
-	const embedDisabledFor = useSetting('API_EmbedDisabledFor');
 	const groupingPeriod = useSetting('Message_GroupingPeriod') as number;
 
 	return useMemo(
@@ -43,7 +40,6 @@ export const useRoomMessageContext = (room: IRoom) => {
 				subscription,
 				translateLanguage,
 				autoImageLoad,
-				useLegacyMessageTemplate,
 				saveMobileBandwidth: mobile && saveMobileBandwidth,
 				collapseMediaByDefault,
 				showreply: true,
@@ -56,9 +52,7 @@ export const useRoomMessageContext = (room: IRoom) => {
 				AutoTranslate_Enabled: autoTranslateEnabled,
 				Message_AllowEditing: allowEditing,
 				Message_AllowEditing_BlockEditInMinutes: blockEditInMinutes,
-				Message_ShowEditedStatus: showEditedStatus,
 				API_Embed: embed,
-				API_EmbedDisabledFor: embedDisabledFor,
 				Message_GroupingPeriod: groupingPeriod * 1000,
 			}),
 		[
@@ -70,7 +64,6 @@ export const useRoomMessageContext = (room: IRoom) => {
 			collapseMediaByDefault,
 			displayRoles,
 			embed,
-			embedDisabledFor,
 			groupingPeriod,
 			hasPermissionDeleteMessage,
 			hasPermissionDeleteOwnMessage,
@@ -79,11 +72,9 @@ export const useRoomMessageContext = (room: IRoom) => {
 			rid,
 			room,
 			saveMobileBandwidth,
-			showEditedStatus,
 			subscription,
 			translateLanguage,
 			uid,
-			useLegacyMessageTemplate,
 			useRealName,
 			user,
 		],
diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx
index b2d0f1920374cbca8c7eb28a2f6f2e3d4be8d13c..f2d61153708a1a870de3448e025333d7e987e382 100644
--- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx
+++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx
@@ -15,7 +15,6 @@ import { useFileUploadDropTarget } from '../../../components/body/useFileUploadD
 import { useChat } from '../../../contexts/ChatContext';
 import { useRoom, useRoomSubscription } from '../../../contexts/RoomContext';
 import { useTabBarClose } from '../../../contexts/ToolboxContext';
-import LegacyThreadMessageList from './LegacyThreadMessageList';
 import ThreadMessageList from './ThreadMessageList';
 
 type ThreadChatProps = {
@@ -105,18 +104,12 @@ const ThreadChat: VFC<ThreadChatProps> = ({ mainMessage }) => {
 	const sendToChannelID = useUniqueId();
 	const t = useTranslation();
 
-	const useLegacyMessageTemplate = useUserPreference<boolean>('useLegacyMessageTemplate') ?? false;
-
 	return (
 		<VerticalBarContent flexShrink={1} flexGrow={1} paddingInline={0} {...fileUploadTriggerProps}>
 			<DropTargetOverlay {...fileUploadOverlayProps} />
 			<Box is='section' display='flex' flexDirection='column' flexGrow={1} flexShrink={1} flexBasis='auto' height='full'>
 				<MessageListErrorBoundary>
-					{useLegacyMessageTemplate ? (
-						<LegacyThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} />
-					) : (
-						<ThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} />
-					)}
+					<ThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} />
 				</MessageListErrorBoundary>
 
 				<ComposerContainer
diff --git a/apps/meteor/definition/externals/meteor/templating.d.ts b/apps/meteor/definition/externals/meteor/templating.d.ts
index 5ec2bb9755892324f02bcf2d1fb3822088f8e317..2c62feb97668f6e30a829a81897ab98faf8ee178 100644
--- a/apps/meteor/definition/externals/meteor/templating.d.ts
+++ b/apps/meteor/definition/externals/meteor/templating.d.ts
@@ -38,8 +38,6 @@ declare module 'meteor/templating' {
 		liveStreamBroadcast: Blaze.Template<any, Blaze.TemplateInstance<any>>;
 		liveStreamTab: Blaze.Template<any, Blaze.TemplateInstance<any>>;
 		liveStreamView: Blaze.Template<any, Blaze.TemplateInstance<any>>;
-		snippetPage: Blaze.Template<any, Blaze.TemplateInstance<any>>;
-		snippetedMessages: Blaze.Template<any, Blaze.TemplateInstance<any>>;
 		inputAutocomplete: Blaze.Template<any, Blaze.TemplateInstance<any>>;
 		textareaAutocomplete: Blaze.Template<any, Blaze.TemplateInstance<any>>;
 		_autocompleteContainer: Blaze.Template<any, Blaze.TemplateInstance<any>>;
diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json
index 1e5b8465826604168027b80f3239c483ca5b7353..2df3747d641f2344585cd39e566d575e10a361d1 100644
--- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json
+++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json
@@ -399,14 +399,12 @@
   "API_Drupal_URL_Description": "Example: https://domain.com (excluding trailing slash)",
   "API_Embed": "Embed Link Previews",
   "API_Embed_Description": "Whether embedded link previews are enabled or not when a user posts a link to a website.",
-  "API_Embed_UserAgent": "Embed Request User Agent",
-  "API_EmbedCacheExpirationDays": "Embed Cache Expiration Days",
-  "API_EmbedDisabledFor": "Disable Embed for Users",
-  "API_EmbedDisabledFor_Description": "Comma-separated list of usernames to disable the embedded link previews.",
   "API_EmbedIgnoredHosts": "Embed Ignored Hosts",
   "API_EmbedIgnoredHosts_Description": "Comma-separated list of hosts or CIDR addresses, eg. localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16",
   "API_EmbedSafePorts": "Safe Ports",
   "API_EmbedSafePorts_Description": "Comma-separated list of ports allowed for previewing.",
+  "API_Embed_UserAgent": "Embed Request User Agent",
+  "API_EmbedCacheExpirationDays": "Embed Cache Expiration Days",
   "API_Enable_CORS": "Enable CORS",
   "API_Enable_Direct_Message_History_EndPoint": "Enable Direct Message History Endpoint",
   "API_Enable_Direct_Message_History_EndPoint_Description": "This enables the `/api/v1/im.history.others` which allows the viewing of direct messages sent by other users that the caller is not part of.",
@@ -646,16 +644,6 @@
   "Auto_Translate": "Auto-Translate",
   "auto-translate": "Auto Translate",
   "auto-translate_description": "Permission to use the auto translate tool",
-  "AutoLinker": "AutoLinker",
-  "AutoLinker_Email": "AutoLinker Email",
-  "AutoLinker_Phone": "AutoLinker Phone",
-  "AutoLinker_Phone_Description": "Automatically linked for Phone numbers. e.g. `(123)456-7890`",
-  "AutoLinker_StripPrefix": "AutoLinker Strip Prefix",
-  "AutoLinker_StripPrefix_Description": "Short display. e.g. https://rocket.chat => rocket.chat",
-  "AutoLinker_Urls_Scheme": "AutoLinker Scheme:// URLs",
-  "AutoLinker_Urls_TLD": "AutoLinker TLD URLs",
-  "AutoLinker_Urls_www": "AutoLinker 'www' URLs",
-  "AutoLinker_UrlsRegExp": "AutoLinker URL Regular Expression",
   "Automatic_Translation": "Automatic Translation",
   "AutoTranslate": "Auto-Translate",
   "AutoTranslate_APIKey": "API Key",
@@ -1786,7 +1774,6 @@
   "EmojiCustomFilesystem_Description": "Specify how emojis are stored.",
   "Empty_no_agent_selected": "Empty, no agent selected",
   "Empty_title": "Empty title",
-  "Use_Legacy_Message_Template": "Use legacy message template",
   "Enable": "Enable",
   "Enable_Auto_Away": "Enable Auto Away",
   "Enable_CSP": "Enable Content-Security-Policy",
@@ -3148,16 +3135,6 @@
   "Mark_as_unread": "Mark As Unread",
   "Mark_read": "Mark Read",
   "Mark_unread": "Mark Unread",
-  "Markdown_Headers": "Allow Markdown headers in messages",
-  "Markdown_Marked_Breaks": "Enable Marked Breaks",
-  "Markdown_Marked_GFM": "Enable Marked GFM",
-  "Markdown_Marked_Pedantic": "Enable Marked Pedantic",
-  "Markdown_Marked_SmartLists": "Enable Marked Smart Lists",
-  "Markdown_Marked_Smartypants": "Enable Marked Smartypants",
-  "Markdown_Marked_Tables": "Enable Marked Tables",
-  "Markdown_Parser": "Markdown Parser",
-  "Markdown_SupportSchemesForLink": "Markdown Support Schemes for Link",
-  "Markdown_SupportSchemesForLink_Description": "Comma-separated list of allowed schemes",
   "Marketplace": "Marketplace",
   "Marketplace_app_last_updated": "Last updated __lastUpdated__",
   "Marketplace_view_marketplace": "View Marketplace",
@@ -3211,15 +3188,12 @@
   "Message_AllowEditing_BlockEditInMinutesDescription": "Enter 0 to disable blocking.",
   "Message_AllowPinning": "Allow Message Pinning",
   "Message_AllowPinning_Description": "Allow messages to be pinned to any of the channels.",
-  "Message_AllowSnippeting": "Allow Message Snippeting",
   "Message_AllowStarring": "Allow Message Starring",
   "Message_AllowUnrecognizedSlashCommand": "Allow Unrecognized Slash Commands",
   "Message_Already_Sent": "This message has already been sent and is being processed by the server",
   "Message_AlwaysSearchRegExp": "Always Search Using RegExp",
   "Message_AlwaysSearchRegExp_Description": "We recommend to set `True` if your language is not supported on <a target=\"_blank\" href=\"https://docs.mongodb.org/manual/reference/text-search-languages/#text-search-languages\">MongoDB text search</a>.",
   "Message_Attachments": "Message Attachments",
-  "Message_Attachments_GroupAttach": "Group Attachment Buttons",
-  "Message_Attachments_GroupAttachDescription": "This groups the icons under an expandable menu. Takes up less screen space.",
   "Message_Attachments_Thumbnails_Enabled": "Enable image thumbnails to save bandwith",
   "Message_Attachments_Thumbnails_Width": "Thumbnail's max width (in pixels)",
   "Message_Attachments_Thumbnails_Height": "Thumbnail's max height (in pixels)",
@@ -3313,8 +3287,6 @@
   "Message_is_removed": "message removed",
   "Message_sent_by_email": "Message sent by Email",
   "Message_ShowDeletedStatus": "Show Deleted Status",
-  "Message_ShowEditedStatus": "Show Edited Status",
-  "Message_ShowFormattingTips": "Show Formatting Tips",
   "Message_Formatting_Toolbox": "Formatting Toolbox",
   "Message_composer_toolbox_primary_actions": "Composer Primary Actions",
   "Message_composer_toolbox_secondary_actions": "Composer Secondary Actions",
@@ -4476,10 +4448,7 @@
   "SMTP_Test_Button": "Test SMTP Settings",
   "SMTP_Username": "SMTP Username",
   "Snippet_Added": "Created on %s",
-  "Snippet_Messages": "Snippet Messages",
   "Snippet_name": "Snippet name",
-  "snippet-message": "Snippet Message",
-  "snippet-message_description": "Permission to create snippet message",
   "Snippeted_a_message": "Created a snippet __snippetLink__",
   "Social_Network": "Social Network",
   "Some_ideas_to_get_you_started": "Some ideas to get you started",
diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts
index ea3a350d342ffb4762a89591a16465fdb70a1adf..c51a5ade1732475dee63676216617f9f041f3a92 100644
--- a/apps/meteor/server/importPackages.ts
+++ b/apps/meteor/server/importPackages.ts
@@ -6,7 +6,6 @@ import '../app/api/server';
 import '../app/apple/server';
 import '../app/assets/server';
 import '../app/authorization';
-import '../app/autolinker/server';
 import '../app/autotranslate/server';
 import '../app/bot-helpers/server';
 import '../app/cas/server';
@@ -39,7 +38,6 @@ import '../app/importer-slack/server';
 import '../app/importer-slack-users/server';
 import '../app/integrations/server';
 import '../app/irc';
-import '../app/issuelinks/server';
 import '../app/katex/server';
 import '../app/lib/server';
 import '../app/livestream/server';
@@ -51,7 +49,6 @@ import '../app/markdown/server';
 import '../app/mentions/server';
 import '../app/message-mark-as-unread/server';
 import '../app/message-pin/server';
-import '../app/message-snippet/server';
 import '../app/message-star/server';
 import '../app/nextcloud/server';
 import '../app/oauth2-server-config/server';
diff --git a/apps/meteor/server/methods/loadMissedMessages.js b/apps/meteor/server/methods/loadMissedMessages.js
index 0b00ff8d6c83f1a00167f31f59c08e9b07e6a5b4..e9c829976fbbeaf6d80e0f8f4497f2b5637d8ae5 100644
--- a/apps/meteor/server/methods/loadMissedMessages.js
+++ b/apps/meteor/server/methods/loadMissedMessages.js
@@ -3,7 +3,6 @@ import { check } from 'meteor/check';
 
 import { canAccessRoomId } from '../../app/authorization/server';
 import { Messages } from '../../app/models/server';
-import { settings } from '../../app/settings/server';
 
 Meteor.methods({
 	loadMissedMessages(rid, start) {
@@ -26,12 +25,6 @@ Meteor.methods({
 			},
 		};
 
-		if (!settings.get('Message_ShowEditedStatus')) {
-			options.fields = {
-				editedAt: 0,
-			};
-		}
-
 		return Messages.findVisibleByRoomIdAfterTimestamp(rid, start, options).fetch();
 	},
 });
diff --git a/apps/meteor/server/methods/loadNextMessages.js b/apps/meteor/server/methods/loadNextMessages.js
index affd9ef42316abd312a879963d97e5ea9eacc2f8..d83e308f83907740bf734fbbec710bb82273e8d3 100644
--- a/apps/meteor/server/methods/loadNextMessages.js
+++ b/apps/meteor/server/methods/loadNextMessages.js
@@ -3,7 +3,6 @@ import { check } from 'meteor/check';
 
 import { canAccessRoomId } from '../../app/authorization/server';
 import { Messages } from '../../app/models/server';
-import { settings } from '../../app/settings/server';
 import { normalizeMessagesForUser } from '../../app/utils/server/lib/normalizeMessagesForUser';
 
 Meteor.methods({
@@ -34,12 +33,6 @@ Meteor.methods({
 			limit,
 		};
 
-		if (!settings.get('Message_ShowEditedStatus')) {
-			options.fields = {
-				editedAt: 0,
-			};
-		}
-
 		let records;
 		if (end) {
 			records = Messages.findVisibleByRoomIdAfterTimestamp(rid, end, options).fetch();
diff --git a/apps/meteor/server/methods/loadSurroundingMessages.js b/apps/meteor/server/methods/loadSurroundingMessages.js
index 4fa92b0e79ac8d7e29a95536a496f22918f36baa..f0ea978735dbd3a22884d2c40b3f6a2dab09671e 100644
--- a/apps/meteor/server/methods/loadSurroundingMessages.js
+++ b/apps/meteor/server/methods/loadSurroundingMessages.js
@@ -3,7 +3,6 @@ import { check } from 'meteor/check';
 
 import { canAccessRoomId } from '../../app/authorization/server';
 import { Messages } from '../../app/models/server';
-import { settings } from '../../app/settings/server';
 import { normalizeMessagesForUser } from '../../app/utils/server/lib/normalizeMessagesForUser';
 
 Meteor.methods({
@@ -42,12 +41,6 @@ Meteor.methods({
 			limit: Math.ceil(limit / 2),
 		};
 
-		if (!settings.get('Message_ShowEditedStatus')) {
-			options.fields = {
-				editedAt: 0,
-			};
-		}
-
 		const messages = Messages.findVisibleByRoomIdBeforeTimestamp(message.rid, message.ts, options).fetch();
 
 		const moreBefore = messages.length === options.limit;
diff --git a/apps/meteor/server/methods/messageSearch.js b/apps/meteor/server/methods/messageSearch.js
index 126b774fba629ff27cfdf54c92b7dd49b0bc25f6..fe5e650012a8602eb603537a0c0574a3d449e1c2 100644
--- a/apps/meteor/server/methods/messageSearch.js
+++ b/apps/meteor/server/methods/messageSearch.js
@@ -245,12 +245,6 @@ Meteor.methods({
 				};
 			}
 
-			if (!settings.get('Message_ShowEditedStatus')) {
-				options.projection = {
-					editedAt: 0,
-				};
-			}
-
 			result.message.docs = Promise.await(
 				Messages.find(query, {
 					readPreference: readSecondaryPreferred(Messages.col.s.db),
diff --git a/apps/meteor/server/models/raw/Messages.ts b/apps/meteor/server/models/raw/Messages.ts
index fcd65df40493d9aa8bb7a1f0854f6b4f207f0e76..f0dcc66ab7efb6a09f90e47e9e5258be76b71397 100644
--- a/apps/meteor/server/models/raw/Messages.ts
+++ b/apps/meteor/server/models/raw/Messages.ts
@@ -64,16 +64,6 @@ export class MessagesRaw extends BaseRaw<IMessage> implements IMessagesModel {
 		return this.findPaginated(query, options);
 	}
 
-	findSnippetedByRoom(roomId: IRoom['_id'], options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>> {
-		const query: Filter<IMessage> = {
-			_hidden: { $ne: true },
-			snippeted: true,
-			rid: roomId,
-		};
-
-		return this.findPaginated(query, options);
-	}
-
 	// TODO: do we need this? currently not used anywhere
 	findDiscussionsByRoom(rid: IRoom['_id'], options: FindOptions<IMessage>): FindCursor<IMessage> {
 		const query: Filter<IMessage> = { rid, drid: { $exists: true } };
diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts
index 8fce9cd8568208eeec8a3f4ccb3cfc7fec6ad7fb..f43d9ea4cd5afa3d434f54b09b8c0b58c36047c1 100644
--- a/apps/meteor/server/startup/migrations/index.ts
+++ b/apps/meteor/server/startup/migrations/index.ts
@@ -45,4 +45,5 @@ import './v283';
 import './v284';
 import './v285';
 import './v286';
+import './v287';
 import './xrun';
diff --git a/apps/meteor/server/startup/migrations/v287.ts b/apps/meteor/server/startup/migrations/v287.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f1497ab82f3869c582f3d4e627662fdd8e9f61e1
--- /dev/null
+++ b/apps/meteor/server/startup/migrations/v287.ts
@@ -0,0 +1,62 @@
+import { Settings } from '@rocket.chat/models';
+import { MongoInternals } from 'meteor/mongo';
+
+import { addMigration } from '../../lib/migrations';
+import { upsertPermissions } from '../../../app/authorization/server/functions/upsertPermissions';
+
+addMigration({
+	version: 287,
+	async up() {
+		const deprecatedSettings = [
+			'Markdown_Parser',
+			'Markdown_Headers',
+			'Markdown_SupportSchemesForLink',
+			'Markdown_Marked_GFM',
+			'Markdown_Marked_Tables',
+			'Markdown_Marked_Breaks',
+			'Markdown_Marked_Pedantic',
+			'Markdown_Marked_SmartLists',
+			'Markdown_Marked_Smartypants',
+			'Message_AllowSnippeting',
+			'Message_Attachments_GroupAttach',
+			'Message_ShowEditedStatus',
+			'Message_ShowFormattingTips',
+			'Accounts_Default_User_Preferences_useLegacyMessageTemplate',
+			'AutoLinker',
+			'AutoLinker_StripPrefix',
+			'AutoLinker_Urls_Scheme',
+			'AutoLinker_Urls_www',
+			'AutoLinker_Urls_TLD',
+			'AutoLinker_UrlsRegExp',
+			'AutoLinker_Email',
+			'AutoLinker_Phone',
+			'IssueLinks_Enabled',
+			'IssueLinks_Template',
+			'API_EmbedDisabledFor',
+		];
+
+		await Settings.deleteMany({
+			_id: { $in: deprecatedSettings },
+		});
+
+		const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
+		const messages = mongo.db.collection('rocketchat_message');
+
+		await messages.updateMany(
+			{
+				snippeted: true,
+			},
+			{
+				$unset: {
+					snippeted: 1,
+					snippetedBy: 1,
+					snippetedAt: 1,
+					snippetName: 1,
+				},
+			},
+		);
+		await messages.dropIndex('snippeted_1');
+
+		await upsertPermissions();
+	},
+});
diff --git a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js
index dc872b58bf5530bb6d661d3b5d214b9adb02354a..b0d829e9e0e7dfc50dcfe40b95fb62f2e93a041a 100644
--- a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js
+++ b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js
@@ -153,7 +153,6 @@ describe('miscellaneous', function () {
 					'desktopNotifications',
 					'pushNotifications',
 					'enableAutoAway',
-					'useLegacyMessageTemplate',
 					// 'highlights',
 					'desktopNotificationRequireInteraction',
 					'hideUsernames',
diff --git a/apps/meteor/tests/end-to-end/api/05-chat.js b/apps/meteor/tests/end-to-end/api/05-chat.js
index 601dcf30dbb498d73f0216e5c34955bb741c9e1f..c46f4913f2a624c88e45749391e20c5962416519 100644
--- a/apps/meteor/tests/end-to-end/api/05-chat.js
+++ b/apps/meteor/tests/end-to-end/api/05-chat.js
@@ -1988,111 +1988,6 @@ describe('[Chat]', function () {
 		});
 	});
 
-	describe('[/chat.getSnippetedMessageById]', () => {
-		it('should return an error when the snippeted messages is disabled', (done) => {
-			updateSetting('Message_AllowSnippeting', false).then(() => {
-				request
-					.get(api('chat.getSnippetedMessageById?messageId=invalid-id'))
-					.set(credentials)
-					.expect('Content-Type', 'application/json')
-					.expect(400)
-					.expect((res) => {
-						expect(res.body).to.have.property('success', false);
-						expect(res.body.error).to.be.equal('error-not-allowed');
-					})
-					.end(done);
-			});
-		});
-		it('should return an error when the required "messageId" parameter is not sent', (done) => {
-			updateSetting('Message_AllowSnippeting', true).then(() => {
-				request
-					.get(api('chat.getSnippetedMessageById'))
-					.set(credentials)
-					.expect('Content-Type', 'application/json')
-					.expect(400)
-					.expect((res) => {
-						expect(res.body).to.have.property('success', false);
-						expect(res.body.errorType).to.be.equal('error-invalid-params');
-					})
-					.end(done);
-			});
-		});
-	});
-
-	describe('[/chat.getSnippetedMessages]', () => {
-		it('should return an error when the required "roomId" parameter is not sent', (done) => {
-			request
-				.get(api('chat.getSnippetedMessages'))
-				.set(credentials)
-				.expect('Content-Type', 'application/json')
-				.expect(400)
-				.expect((res) => {
-					expect(res.body).to.have.property('success', false);
-					expect(res.body.errorType).to.be.equal('error-invalid-params');
-				})
-				.end(done);
-		});
-
-		it('should return an error when the roomId is invalid', (done) => {
-			request
-				.get(api('chat.getSnippetedMessages?roomId=invalid-room'))
-				.set(credentials)
-				.expect('Content-Type', 'application/json')
-				.expect(400)
-				.expect((res) => {
-					expect(res.body).to.have.property('success', false);
-					expect(res.body.error).to.be.equal('error-not-allowed');
-				})
-				.end(done);
-		});
-
-		it('should return an error when the snippeted messages is disabled', (done) => {
-			updateSetting('Message_AllowSnippeting', false).then(() => {
-				request
-					.get(api('chat.getSnippetedMessages?roomId=invalid-room'))
-					.set(credentials)
-					.expect('Content-Type', 'application/json')
-					.expect(400)
-					.expect((res) => {
-						expect(res.body).to.have.property('success', false);
-						expect(res.body.error).to.be.equal('error-not-allowed');
-					})
-					.end(done);
-			});
-		});
-
-		it('should return the snippeted messages', (done) => {
-			updateSetting('Message_AllowSnippeting', true).then(() => {
-				request
-					.get(api('chat.getSnippetedMessages?roomId=GENERAL'))
-					.set(credentials)
-					.expect('Content-Type', 'application/json')
-					.expect(200)
-					.expect((res) => {
-						expect(res.body).to.have.property('success', true);
-						expect(res.body.messages).to.be.an('array');
-						expect(res.body).to.have.property('offset');
-						expect(res.body).to.have.property('total');
-						expect(res.body).to.have.property('count');
-					})
-					.end(done);
-			});
-		});
-
-		it('should return an error when the messageId is invalid', (done) => {
-			request
-				.get(api('chat.getSnippetedMessageById?messageId=invalid-id'))
-				.set(credentials)
-				.expect('Content-Type', 'application/json')
-				.expect(400)
-				.expect((res) => {
-					expect(res.body).to.have.property('success', false);
-					expect(res.body.error).to.be.equal('invalid-message');
-				})
-				.end(done);
-		});
-	});
-
 	describe('[/chat.getDiscussions]', () => {
 		const messageText = 'Message to create discussion';
 		let testChannel;
@@ -2237,19 +2132,6 @@ describe('[Chat]', function () {
 		messageWords.forEach((text) => {
 			filterDiscussionsByText(text);
 		});
-
-		it('should return an error when the messageId is invalid', (done) => {
-			request
-				.get(api('chat.getSnippetedMessageById?messageId=invalid-id'))
-				.set(credentials)
-				.expect('Content-Type', 'application/json')
-				.expect(400)
-				.expect((res) => {
-					expect(res.body).to.have.property('success', false);
-					expect(res.body.error).to.be.equal('invalid-message');
-				})
-				.end(done);
-		});
 	});
 });
 
diff --git a/packages/model-typings/src/models/IMessagesModel.ts b/packages/model-typings/src/models/IMessagesModel.ts
index fed76010e137e2e6d3d6310daea6a64bf26a3d22..d80f3757a3ff97738954206e4b02bccadd24a8fd 100644
--- a/packages/model-typings/src/models/IMessagesModel.ts
+++ b/packages/model-typings/src/models/IMessagesModel.ts
@@ -18,8 +18,6 @@ export interface IMessagesModel extends IBaseModel<IMessage> {
 		options?: FindOptions<IMessage>,
 	): FindPaginated<FindCursor<IMessage>>;
 
-	findSnippetedByRoom(roomId: IRoom['_id'], options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>>;
-
 	findDiscussionsByRoom(rid: IRoom['_id'], options: FindOptions<IMessage>): FindCursor<IMessage>;
 
 	findDiscussionsByRoomAndText(rid: IRoom['_id'], text: string, options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>>;
diff --git a/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts b/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts
index 1cd31f267d2fd0dee277610eb84f592cdd24b5df..a53ade45b89fa43aaaea55d255148d6c27b4e500 100644
--- a/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts
+++ b/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts
@@ -39,7 +39,6 @@ export type UsersSetPreferencesParamsPOST = {
 		muteFocusedConversations?: boolean;
 		dontAskAgainList?: Array<{ action: string; label: string }>;
 		receiveLoginDetectionEmail?: boolean;
-		useLegacyMessageTemplate?: boolean;
 		idleTimeLimit?: number;
 	};
 };
@@ -189,10 +188,6 @@ const UsersSetPreferencesParamsPostSchema = {
 					},
 					nullable: true,
 				},
-				useLegacyMessageTemplate: {
-					type: 'boolean',
-					nullable: true,
-				},
 				receiveLoginDetectionEmail: {
 					type: 'boolean',
 					nullable: true,