diff --git a/substrate/substrate/cli/src/cli.yml b/substrate/substrate/cli/src/cli.yml
index 0d6fd8795ad88312e50338e9b29df409cb6cb435..e6b8e395d2a364c58ffdf6a90298b067c4f2efcc 100644
--- a/substrate/substrate/cli/src/cli.yml
+++ b/substrate/substrate/cli/src/cli.yml
@@ -76,6 +76,16 @@ args:
       help: Specify a list of reserved node addresses
       takes_value: true
       multiple: true
+  - min-peers:
+      long: min-peers
+      value_name: MIN_PEERS
+      help: Specify the minimum number of peers
+      takes_value: true
+  - max-peers:
+      long: max-peers
+      value_name: MAX_PEERS
+      help: Specify the maximum number of peers
+      takes_value: true
   - chain:
       long: chain
       value_name: CHAIN_SPEC
diff --git a/substrate/substrate/cli/src/lib.rs b/substrate/substrate/cli/src/lib.rs
index 801e808c51d1ff158b3b4204c242da1006e6276c..a1064cccc44001ff91ef3f9ef8ad5cd818fade2f 100644
--- a/substrate/substrate/cli/src/lib.rs
+++ b/substrate/substrate/cli/src/lib.rs
@@ -301,6 +301,20 @@ where
 			Some(Err(err)) => return Err(format!("Error parsing node key: {}", err).into()),
 			None => None,
 		};
+
+		let min_peers = match matches.value_of("min-peers") {
+			Some(min_peers) => min_peers.parse().map_err(|_| "Invalid min-peers value specified.")?,
+			None => 25,
+		};
+		let max_peers = match matches.value_of("max-peers") {
+			Some(max_peers) => max_peers.parse().map_err(|_| "Invalid max-peers value specified.")?,
+			None => 50,
+		};
+		if min_peers > max_peers {
+			return Err(error::ErrorKind::Input("Min-peers mustn't be larger than max-peers.".to_owned()).into());
+		}
+		config.network.min_peers = min_peers;
+		config.network.max_peers = max_peers;
 	}
 
 	config.keys = matches.values_of("key").unwrap_or_default().map(str::to_owned).collect();