Motoko · 



A safe, simple, actor-based programming language for building Internet Computer (ICP) canister smart contracts.
- Introduction
- Basic concepts and terms
- Sample code
- Language manual
- Concrete syntax
- Documentation sources
- Core package documentation
High-level programming language for ICP smart contracts
Simple design and familiar syntax
Convenient support for the actor model
Good fit for underlying Wasm and ICP execution model
Object-based language with actors, classes, modules, etc. as closures
Classes can be actors
Async construct for direct-style programming of asynchronous messaging
Structurally typed with simple generics and subtyping
Overflow-checked number types, explicit conversions
JavaScript/TypeScript-style syntax but without the JavaScript madness
Inspirations from Java, C#, JavaScript, Swift, Pony, ML, Haskell
- Next-Gen Core package
- Legacy Base package
- Vessel package manager
- Example projects
- ICP Ninja, online authoring of canisters
- Motoko Playground · (DEPRECATED — online IDE)
- Embed Motoko code snippets · (online interpreter)
- VS Code extension · (install)
- Browser and Node.js bindings · (npm package)
- Awesome Motoko
- Blocks - an online low-code editor for Motoko
- MOPS - a Motoko package manager hosted on the IC
- Motoko Bootcamp · (YouTube channel)
- Motoko library starter template
See our contribution guidelines, code of conduct and build instructions to get started.