Create an Account¶
Introduction¶
Creating accounts is a fundamental operation when building applications on Polkadot and its parachains. Accounts serve as the basis for identity, asset ownership, and transaction signing. Understanding how to generate and manage accounts programmatically enables you to build wallets, automate operations, and create seamless user experiences.
Polkadot accounts are based on the SR25519 signature scheme by default, though ED25519 and ECDSA are also supported. Each account consists of a public key (address) and a private key (seed/mnemonic). Keep your private keys secure and never share them.
This tutorial will guide you through creating accounts using different programming languages and libraries.
Prerequisites¶
Before starting, make sure you have:
- Basic understanding of public-key cryptography concepts
- Development environment set up for your chosen language
- Familiarity with the programming language you'll be using
Use JavaScript/TypeScript¶
JavaScript/TypeScript developers can use the Polkadot.js API to create and manage Polkadot accounts.
-
Create a new project directory and initialize it:
-
Install the required packages:
-
Create a file named
create-account.tsand add the following code to it:create-account.tsimport { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto'; import { Keyring } from '@polkadot/keyring'; async function main() { await cryptoWaitReady(); const mnemonic = mnemonicGenerate(12); const keyring = new Keyring({ type: 'sr25519', ss58Format: 0 }); const pair = keyring.addFromMnemonic(mnemonic); console.log(`Address: ${pair.address}`); console.log(`Mnemonic: ${mnemonic}`); } main().catch(console.error);Key aspects of the code:
- Mnemonic generation: Uses
mnemonicGenerate()to create a 12-word BIP39 mnemonic phrase for human-readable key backup. - Keyring: The
Keyringclass manages accounts with a specified signature scheme and address format. - SS58 format: Setting
ss58Format: 0configures addresses for the Polkadot relay chain.
- Mnemonic generation: Uses
-
Execute the script using
tsx:You should see output similar to:
npx tsx create-account.ts Address: 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5 Mnemonic: cushion dog echo people vendor curve truck begin latin romance rebuild ...
Python¶
Python developers can use the substrate-interface library to create and manage Polkadot accounts.
-
Create a new project directory and set up a virtual environment:
-
Install the required package:
-
Create a file named
create_account.py:create_account.pyfrom substrateinterface import Keypair mnemonic = Keypair.generate_mnemonic() keypair = Keypair.create_from_mnemonic(mnemonic) print(f"Address: {keypair.ss58_address}") print(f"Mnemonic: {mnemonic}")Key aspects of the code:
- Mnemonic generation: The
generate_mnemonic()function creates a BIP39-compatible phrase. - Keypair creation:
Keypair.create_from_mnemonic()derives keys from the mnemonic.
- Mnemonic generation: The
-
Execute the script:
You should see output similar to:
python create_account.py Address: 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5 Mnemonic: cushion dog echo people vendor curve truck begin latin romance rebuild ...
Rust¶
Rust provides low-level access to Substrate primitives for account creation through the sp-core and sp-keyring crates.
-
Create a new Rust project:
-
Add dependencies to your
Cargo.toml: -
Create your account generation code in
src/main.rs:src/main.rsuse sp_core::{crypto::Ss58Codec, Pair}; fn main() { let (pair, phrase, _) = sp_core::sr25519::Pair::generate_with_phrase(None); let address = pair.public().to_ss58check(); println!("Address: {}", address); println!("Mnemonic: {}", phrase); }Key aspects of the code:
- Keypair generation:
sr25519::Pair::generate_with_phrase()creates a new key pair with mnemonic. - Public key extraction: The
public()method retrieves the public key from the pair. - SS58 encoding: Uses Polkadot's address format for the human-readable address.
- Keypair generation:
-
Build and run the project:
You should see output similar to:
cargo run Address: 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5 Mnemonic: cushion dog echo people vendor curve truck begin latin romance rebuild ...
Where to Go Next¶
-
Guide Send Transactions with SDKs
Learn how to send signed transactions using your newly created accounts with Polkadot-API and Polkadot.js API libraries.
-
Guide Calculate Transaction Fees
Learn how to estimate transaction fees before sending transactions from your accounts.
-
Guide Query Chain Data
Explore different methods for querying blockchain data, including account balances and other chain state.
| Created: January 14, 2026