diff --git a/prdoc/pr_3184.prdoc b/prdoc/pr_3184.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..36ba92bcf5a79ac75934f4fa08e1e02d78b6175e
--- /dev/null
+++ b/prdoc/pr_3184.prdoc
@@ -0,0 +1,10 @@
+title: "Contracts: Remove no longer enforced limits from the Schedule"
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      The limits are no longer in use and do nothing. Every builder overwritting them
+      can just adapt their code to remove them without any consequence.
+
+crates:
+  - name: pallet-contracts
diff --git a/substrate/frame/contracts/src/schedule.rs b/substrate/frame/contracts/src/schedule.rs
index 63641832315eeb59928973aff221989800cd0579..54e037d6be94419443e8aba95ebf044b2708e88b 100644
--- a/substrate/frame/contracts/src/schedule.rs
+++ b/substrate/frame/contracts/src/schedule.rs
@@ -39,11 +39,7 @@ use serde::{Deserialize, Serialize};
 /// fn create_schedule<T: Config>() -> Schedule<T> {
 ///     Schedule {
 ///         limits: Limits {
-/// 		        globals: 3,
-/// 		        parameters: 3,
 /// 		        memory_pages: 16,
-/// 		        table_size: 3,
-/// 		        br_table_size: 3,
 /// 		        .. Default::default()
 /// 	        },
 ///         instruction_weights: InstructionWeights {
@@ -77,38 +73,9 @@ pub struct Limits {
 	/// The maximum number of topics supported by an event.
 	pub event_topics: u32,
 
-	/// Maximum number of globals a module is allowed to declare.
-	///
-	/// Globals are not limited through the linear memory limit `memory_pages`.
-	pub globals: u32,
-
-	/// Maximum number of locals a function can have.
-	///
-	/// As wasm engine initializes each of the local, we need to limit their number to confine
-	/// execution costs.
-	pub locals: u32,
-
-	/// Maximum numbers of parameters a function can have.
-	///
-	/// Those need to be limited to prevent a potentially exploitable interaction with
-	/// the stack height instrumentation: The costs of executing the stack height
-	/// instrumentation for an indirectly called function scales linearly with the amount
-	/// of parameters of this function. Because the stack height instrumentation itself is
-	/// is not weight metered its costs must be static (via this limit) and included in
-	/// the costs of the instructions that cause them (call, call_indirect).
-	pub parameters: u32,
-
 	/// Maximum number of memory pages allowed for a contract.
 	pub memory_pages: u32,
 
-	/// Maximum number of elements allowed in a table.
-	///
-	/// Currently, the only type of element that is allowed in a table is funcref.
-	pub table_size: u32,
-
-	/// Maximum number of elements that can appear as immediate value to the br_table instruction.
-	pub br_table_size: u32,
-
 	/// The maximum length of a subject in bytes used for PRNG generation.
 	pub subject_len: u32,
 
@@ -370,13 +337,7 @@ impl Default for Limits {
 	fn default() -> Self {
 		Self {
 			event_topics: 4,
-			globals: 256,
-			locals: 1024,
-			parameters: 128,
 			memory_pages: 16,
-			// 4k function pointers (This is in count not bytes).
-			table_size: 4096,
-			br_table_size: 256,
 			subject_len: 32,
 			payload_len: 16 * 1024,
 			runtime_memory: 1024 * 1024 * 128,
diff --git a/substrate/frame/contracts/src/wasm/prepare.rs b/substrate/frame/contracts/src/wasm/prepare.rs
index dfe8c4f8f9b91fe5e7d73032282fe50effd51d38..5cdf5600fcdc6d08b55cd68685a532494b4583a7 100644
--- a/substrate/frame/contracts/src/wasm/prepare.rs
+++ b/substrate/frame/contracts/src/wasm/prepare.rs
@@ -384,12 +384,7 @@ mod tests {
 				let wasm = wat::parse_str($wat).unwrap().try_into().unwrap();
 				let schedule = Schedule {
 					limits: Limits {
-					    globals: 3,
-					    locals: 3,
-						parameters: 3,
 						memory_pages: 16,
-						table_size: 3,
-						br_table_size: 3,
 						.. Default::default()
 					},
 					.. Default::default()