diff --git a/substrate/bin/node-template/README.md b/substrate/bin/node-template/README.md
index e618b13c2a2f0adce0d9c50cd9df4835ea4d7af8..2397c57363b776358a4cf10a79e0bb4690a80c6d 100644
--- a/substrate/bin/node-template/README.md
+++ b/substrate/bin/node-template/README.md
@@ -1,14 +1,14 @@
 # Substrate Node Template
 
-[![Try on playground](https://img.shields.io/badge/Playground-Node_Template-brightgreen?logo=Parity%20Substrate)](https://playground.substrate.dev/?deploy=node-template) [![Matrix](https://img.shields.io/matrix/substrate-technical:matrix.org)](https://matrix.to/#/#substrate-technical:matrix.org)
+[![Try on playground](https://img.shields.io/badge/Playground-Node_Template-brightgreen?logo=Parity%20Substrate)](https://docs.substrate.io/playground/) [![Matrix](https://img.shields.io/matrix/substrate-technical:matrix.org)](https://matrix.to/#/#substrate-technical:matrix.org)
 
 A fresh FRAME-based [Substrate](https://www.substrate.io/) node, ready for hacking :rocket:
 
 ## Getting Started
 
 Follow the steps below to get started with the Node Template, or get it up and running right from
-your browser in just a few clicks using [Playground](https://playground.substrate.dev/)
-:hammer_and_wrench:
+your browser in just a few clicks using
+the [Substrate Playground](https://docs.substrate.io/playground/) :hammer_and_wrench:
 
 ### Using Nix
 
@@ -19,7 +19,7 @@ lorri `lorri shell`.
 
 ### Rust Setup
 
-First, complete the [basic Rust setup instructions](./doc/rust-setup.md).
+First, complete the [basic Rust setup instructions](./docs/rust-setup.md).
 
 ### Run
 
@@ -83,7 +83,7 @@ local node template.
 ### Multi-Node Local Testnet
 
 If you want to see the multi-node consensus algorithm in action, refer to our
-[Start a Private Network tutorial](https://substrate.dev/docs/en/tutorials/start-a-private-network/).
+[Start a Private Network tutorial](https://docs.substrate.io/tutorials/v3/private-network).
 
 ## Template Structure
 
@@ -98,7 +98,7 @@ Substrate-based blockchain nodes expose a number of capabilities:
 - Networking: Substrate nodes use the [`libp2p`](https://libp2p.io/) networking stack to allow the
   nodes in the network to communicate with one another.
 - Consensus: Blockchains must have a way to come to
-  [consensus](https://substrate.dev/docs/en/knowledgebase/advanced/consensus) on the state of the
+  [consensus](https://docs.substrate.io/v3/advanced/consensus) on the state of the
   network. Substrate makes it possible to supply custom consensus engines and also ships with
   several consensus mechanisms that have been built on top of
   [Web3 Foundation research](https://research.web3.foundation/en/latest/polkadot/NPoS/index.html).
@@ -107,21 +107,21 @@ Substrate-based blockchain nodes expose a number of capabilities:
 There are several files in the `node` directory - take special note of the following:
 
 - [`chain_spec.rs`](./node/src/chain_spec.rs): A
-  [chain specification](https://substrate.dev/docs/en/knowledgebase/integrate/chain-spec) is a
+  [chain specification](https://docs.substrate.io/v3/runtime/chain-specs) is a
   source code file that defines a Substrate chain's initial (genesis) state. Chain specifications
   are useful for development and testing, and critical when architecting the launch of a
   production chain. Take note of the `development_config` and `testnet_genesis` functions, which
   are used to define the genesis state for the local development chain configuration. These
   functions identify some
-  [well-known accounts](https://substrate.dev/docs/en/knowledgebase/integrate/subkey#well-known-keys)
+  [well-known accounts](https://docs.substrate.io/v3/tools/subkey#well-known-keys)
   and use them to configure the blockchain's initial state.
 - [`service.rs`](./node/src/service.rs): This file defines the node implementation. Take note of
   the libraries that this file imports and the names of the functions it invokes. In particular,
   there are references to consensus-related topics, such as the
-  [longest chain rule](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#longest-chain-rule),
-  the [Aura](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#aura) block authoring
+  [longest chain rule](https://docs.substrate.io/v3/advanced/consensus#longest-chain-rule),
+  the [Aura](https://docs.substrate.io/v3/advanced/consensus#aura) block authoring
   mechanism and the
-  [GRANDPA](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#grandpa) finality
+  [GRANDPA](https://docs.substrate.io/v3/advanced/consensus#grandpa) finality
   gadget.
 
 After the node has been [built](#build), refer to the embedded documentation to learn more about the
@@ -134,14 +134,14 @@ capabilities and configuration parameters that it exposes:
 ### Runtime
 
 In Substrate, the terms
-"[runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime)" and
-"[state transition function](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#stf-state-transition-function)"
+"[runtime](https://docs.substrate.io/v3/getting-started/glossary#runtime)" and
+"[state transition function](https://docs.substrate.io/v3/getting-started/glossary#state-transition-function-stf)"
 are analogous - they refer to the core logic of the blockchain that is responsible for validating
 blocks and executing the state changes they define. The Substrate project in this repository uses
-the [FRAME](https://substrate.dev/docs/en/knowledgebase/runtime/frame) framework to construct a
+the [FRAME](https://docs.substrate.io/v3/runtime/frame) framework to construct a
 blockchain runtime. FRAME allows runtime developers to declare domain-specific logic in modules
 called "pallets". At the heart of FRAME is a helpful
-[macro language](https://substrate.dev/docs/en/knowledgebase/runtime/macros) that makes it easy to
+[macro language](https://docs.substrate.io/v3/runtime/macros) that makes it easy to
 create pallets and flexibly compose them to create blockchains that can address
 [a variety of needs](https://www.substrate.io/substrate-users/).
 
@@ -153,7 +153,7 @@ the following:
 - The pallets are composed into a single runtime by way of the
   [`construct_runtime!`](https://crates.parity.io/frame_support/macro.construct_runtime.html)
   macro, which is part of the core
-  [FRAME Support](https://substrate.dev/docs/en/knowledgebase/runtime/frame#support-library)
+  [FRAME Support](https://docs.substrate.io/v3/runtime/frame#support-crate)
   library.
 
 ### Pallets
@@ -165,13 +165,13 @@ template pallet that is [defined in the `pallets`](./pallets/template/src/lib.rs
 A FRAME pallet is compromised of a number of blockchain primitives:
 
 - Storage: FRAME defines a rich set of powerful
-  [storage abstractions](https://substrate.dev/docs/en/knowledgebase/runtime/storage) that makes
+  [storage abstractions](https://docs.substrate.io/v3/runtime/storage) that makes
   it easy to use Substrate's efficient key-value database to manage the evolving state of a
   blockchain.
 - Dispatchables: FRAME pallets define special types of functions that can be invoked (dispatched)
   from outside of the runtime in order to update its state.
-- Events: Substrate uses [events](https://substrate.dev/docs/en/knowledgebase/runtime/events) to
-  notify users of important changes in the runtime.
+- Events: Substrate uses [events and errors](https://docs.substrate.io/v3/runtime/events-and-errors)
+  to notify users of important changes in the runtime.
 - Errors: When a dispatchable fails, it returns an error.
 - Config: The `Config` configuration interface is used to define the types and parameters upon
   which a FRAME pallet depends.
diff --git a/substrate/bin/node-template/docs/rust-setup.md b/substrate/bin/node-template/docs/rust-setup.md
index 34f6e43e7f0dd12bb63d115595217f3b767c9b21..4b96da1146b8eb4806887befbe36829d70390c3c 100644
--- a/substrate/bin/node-template/docs/rust-setup.md
+++ b/substrate/bin/node-template/docs/rust-setup.md
@@ -12,8 +12,9 @@ commands for Rust's toolchains will be the same for all supported, Unix-based op
 ## Unix-Based Operating Systems
 
 Substrate development is easiest on Unix-based operating systems like macOS or Linux. The examples
-in the Substrate [Tutorials](https://substrate.dev/tutorials) and [Recipes](https://substrate.dev/recipes/)
-use Unix-style terminals to demonstrate how to interact with Substrate from the command line.
+in the Substrate [Tutorials](https://docs.substrate.io/tutorials/v3) and 
+[How-to Guides](https://docs.substrate.io/how-to-guides/v3) use Unix-style terminals to demonstrate
+how to interact with Substrate from the command line.
 
 ### macOS
 
diff --git a/substrate/bin/node-template/node/Cargo.toml b/substrate/bin/node-template/node/Cargo.toml
index c8f2b52f112f5ad54757cfddab4fb9cf16003a60..57d9c5f3f71e0e3745882372b035357e1a48fceb 100644
--- a/substrate/bin/node-template/node/Cargo.toml
+++ b/substrate/bin/node-template/node/Cargo.toml
@@ -3,7 +3,7 @@ name = "node-template"
 version = "3.0.0"
 description = "A fresh FRAME-based Substrate node, ready for hacking."
 authors = ["Substrate DevHub <https://github.com/substrate-developer-hub>"]
-homepage = "https://substrate.dev"
+homepage = "https://substrate.io/"
 edition = "2018"
 license = "Unlicense"
 publish = false
diff --git a/substrate/bin/node-template/pallets/template/Cargo.toml b/substrate/bin/node-template/pallets/template/Cargo.toml
index dccb37c6540c3f9b3623ad24db592b0cb1f96f78..7ea5628b97c1ed1e4de5df4fe1a7534eac88bd8f 100644
--- a/substrate/bin/node-template/pallets/template/Cargo.toml
+++ b/substrate/bin/node-template/pallets/template/Cargo.toml
@@ -3,7 +3,7 @@ name = 'pallet-template'
 version = "3.0.0"
 description = "FRAME pallet template for defining custom runtime logic."
 authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
-homepage = "https://substrate.dev"
+homepage = "https://substrate.io/"
 edition = '2018'
 license = "Unlicense"
 publish = false
diff --git a/substrate/bin/node-template/pallets/template/src/lib.rs b/substrate/bin/node-template/pallets/template/src/lib.rs
index ee3ca695b64da5ef6e7348a135964527b4c383ca..18599168f1a638edf4b30cc83a250370a233a5dc 100644
--- a/substrate/bin/node-template/pallets/template/src/lib.rs
+++ b/substrate/bin/node-template/pallets/template/src/lib.rs
@@ -2,7 +2,7 @@
 
 /// Edit this file to define custom logic or remove it if it is not needed.
 /// Learn more about FRAME and the core library of Substrate FRAME pallets:
-/// <https://substrate.dev/docs/en/knowledgebase/runtime/frame>
+/// <https://docs.substrate.io/v3/runtime/frame>
 pub use pallet::*;
 
 #[cfg(test)]
@@ -31,15 +31,15 @@ pub mod pallet {
 	pub struct Pallet<T>(_);
 
 	// The pallet's runtime storage items.
-	// https://substrate.dev/docs/en/knowledgebase/runtime/storage
+	// https://docs.substrate.io/v3/runtime/storage
 	#[pallet::storage]
 	#[pallet::getter(fn something)]
 	// Learn more about declaring storage items:
-	// https://substrate.dev/docs/en/knowledgebase/runtime/storage#declaring-storage-items
+	// https://docs.substrate.io/v3/runtime/storage#declaring-storage-items
 	pub type Something<T> = StorageValue<_, u32>;
 
 	// Pallets use events to inform users when important changes are made.
-	// https://substrate.dev/docs/en/knowledgebase/runtime/events
+	// https://docs.substrate.io/v3/runtime/events-and-errors
 	#[pallet::event]
 	#[pallet::generate_deposit(pub(super) fn deposit_event)]
 	pub enum Event<T: Config> {
@@ -68,7 +68,7 @@ pub mod pallet {
 		pub fn do_something(origin: OriginFor<T>, something: u32) -> DispatchResult {
 			// Check that the extrinsic was signed and get the signer.
 			// This function will return an error if the extrinsic is not signed.
-			// https://substrate.dev/docs/en/knowledgebase/runtime/origin
+			// https://docs.substrate.io/v3/runtime/origins
 			let who = ensure_signed(origin)?;
 
 			// Update storage.
diff --git a/substrate/bin/node-template/runtime/Cargo.toml b/substrate/bin/node-template/runtime/Cargo.toml
index 3179a2cc4ff5373c4856549cc954574341fcfefd..e9f557f3fb5a4a21d855f0f725180b190033247e 100644
--- a/substrate/bin/node-template/runtime/Cargo.toml
+++ b/substrate/bin/node-template/runtime/Cargo.toml
@@ -3,7 +3,7 @@ name = "node-template-runtime"
 version = "3.0.0"
 description = 'A fresh FRAME-based Substrate runtime, ready for hacking.'
 authors = ["Substrate DevHub <https://github.com/substrate-developer-hub>"]
-homepage = "https://substrate.dev"
+homepage = "https://substrate.io/"
 edition = "2018"
 license = "Unlicense"
 publish = false
diff --git a/substrate/bin/node-template/runtime/src/lib.rs b/substrate/bin/node-template/runtime/src/lib.rs
index e11840b5813d4f8f1655d70b1ece9785a2d2f033..4b49cb48ef3528523f98209b51b02d6ed2fffa4a 100644
--- a/substrate/bin/node-template/runtime/src/lib.rs
+++ b/substrate/bin/node-template/runtime/src/lib.rs
@@ -87,7 +87,7 @@ pub mod opaque {
 }
 
 // To learn more about runtime versioning and what each of the following value means:
-//   https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning
+//   https://docs.substrate.io/v3/runtime/upgrades#runtime-versioning
 #[sp_version::runtime_version]
 pub const VERSION: RuntimeVersion = RuntimeVersion {
 	spec_name: create_runtime_str!("node-template"),