Microsoft MakeCode (PXT - Programming eXperience Toolkit)
Switch branches/tags
Clone or download
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue tracker feature request templates May 17, 2018
.vscode Fix support for github dependencies in test suite (#4849) Oct 16, 2018
backendutils Move to TypeScript 2.6.1 (#3559) Dec 11, 2017
cli Add AudioContextManager.playInstructionsAsync (#5002) Nov 15, 2018
common-docs Removing "pxt login pxt" (#5004) Nov 14, 2018
devops Add script to update cloud settings Oct 3, 2016
docfiles Docs faster (#4913) Oct 25, 2018
docs Removing "pxt login pxt" (#5004) Nov 14, 2018
external download ai from official location Nov 16, 2016
libs JS compat, GC and other goodies (#4782) Nov 12, 2018
localtypings Blockly build with Android fixes (#5007) Nov 14, 2018
pxt-cli fixing new line in pxt cli Jun 14, 2018
pxtblocks Fix note picker editing on Android (#4998) Nov 14, 2018
pxtcompiler Make sure base class ctor is marked as used (avoids assertion fail) (#… Nov 15, 2018
pxteditor Update help button SVG with latest from WW (#4989) Nov 9, 2018
pxtlib Support HSV colors (#4996) Nov 13, 2018
pxtrunner enable analytics in docs / send error reports in docs (#4978) Nov 7, 2018
pxtsim Add AudioContextManager.playInstructionsAsync (#5002) Nov 15, 2018
pxtwapp Updates to PXT app (#2381) Jul 3, 2017
pxtwinrt Tweaks to UWP app to support microbit v1 (#4556) Jul 27, 2018
scripts JS compat, GC and other goodies (#4782) Nov 12, 2018
svgicons Sprite editor overhaul (#4552) Jul 26, 2018
tests JS compat, GC and other goodies (#4782) Nov 12, 2018
theme Fix button click issue on IE when the blocklyFlyoutButton has a backg… Nov 14, 2018
webapp swap buttons (#5011) Nov 15, 2018
.gitattributes adding extensions in gitattributes Jun 15, 2018
.gitignore support for sending snippets into a temp folder (#3959) May 16, 2018
.travis.yml Use prod react (#4083) Apr 10, 2018 Updating information with issue tracker guidance May 23, 2018
Jakefile.js Make debugging pxt-blockly in PXT easier. (#4924) Oct 26, 2018
LICENSE Update LICENSE Apr 12, 2017
Makefile Re-wire built system to use one jakefile Mar 5, 2016 remove jenkins info Oct 29, 2018
ThirdPartyNotice Add tooltip support in React (#4916) Oct 26, 2018
jakeutil.js Delay loading blockly (#4117) Apr 14, 2018
karma.conf.js Expandable blocks redo (#3835) Feb 9, 2018
osscg-cart-overrides.json Config files for automated OSS registration (#4380) May 30, 2018
osscg-template.json Config files for automated OSS registration (#4380) May 30, 2018
package-lock.json 5.0.5 Nov 15, 2018
package.json 5.0.5 Nov 15, 2018
ptrcheck-ignore Add ignore file for 'pxt ptrcheck' Jul 12, 2016
pxtarget.json code-gen re-work (#4671) Sep 18, 2018
tslint.json Add Microsoft's recommended tslint rules (#4285) May 11, 2018

Microsoft MakeCode

Build Status Community Discord

Microsoft MakeCode is based on the open source project Microsoft Programming Experience Toolkit (PXT). Microsoft MakeCode is the name in the user-facing editors, PXT is used in all the GitHub sources.

PXT is a framework for creating special-purpose programming experiences for beginners, especially focused on computer science education. PXT's underlying programming language is a subset of TypeScript (leaving out JavaScript dynamic features).

The main features of PXT are:

  • a Blockly-based code editor along with converter to the text format
  • a Monaco code editor that powers VS Code, editor's features are listed here.
  • extensibility support to define new blocks in TypeScript
  • an ARM Thumb machine code emitter
  • a command-line package manager

More info:

Examples of Editors built with PXT:


  • master is the active development branch, currently v3.* builds
  • v0 is the servicing branch for v0.* builds

Running a target from localhost

Please follow the instructions here.

Linking a target to PXT

If you are modifying your own instance of PXT and want a target (such as pxt-microbit) to use your local version, cd to the directory of the target (pxt-microbit, in our example, which should be a directory sibling of pxt) and perform

npm link ../pxt

If you have multiple checkouts of pxt, you can do the following:

  • run npm i in pxt and the target
  • in the target, run pxt link ..\some-other-pxt (you may need to update your CLI first by running npm install -g pxt)

If you run npm i afterwards (in either the target or pxt), you might need to repeat these steps.


First, install Node: minimum version 8.

To build the PXT command line tools:

npm install
npm run build

Then install the pxt command line tool (only need to do it once):

npm install -g pxt

After this you can run pxt from anywhere within the build tree.

To start the local web server, run pxt serve from within the root of an app target (e.g. pxt-microbit). PXT will open the editor in your default web browser.


There are a number of custom icons (to use in addition to in the svgicons/ directory. These need to be 1000x1000px. Best start with an existing one. To see available icons go to http://localhost:3232/icons.html (this file, along with icons.css containing the generated WOFF icon font, is created during build).

If you're having trouble with display of the icon you created, try:

npm install -g svgo
svgo svgicons/myicon.svg


The tests are located in the tests/ subdirectory and are a combination of node and browser tests. To execute them, run npm run test:all in the root directory.



Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.

Contact Us

Get in touch