---
description: Why to use Blockly, and alternative solutions.
title: Why Blockly?
image: images/blockly_banner.png
---

# Why Blockly?

Blockly lets you focus on applying blocks to your domain without worrying about
the complexities of how those blocks should be rendered, dragged, or connected.

It is applicable to a wide range of educational use-cases, such as:

- Working students toward text-based programming.
- Encouraging computational thinking.
- Exploring other concepts (e.g. physics) computationally.

As well as many many industry use-cases, such as:

- Data analysis and cleaning.
- Automation (e.g. in robotics, process workflows, etc).
- Configuration (e.g. in online shops, IoT, etc).

## Strengths

Blockly has a number of strengths that make it the most popular option for
building a block-based programming environment.

- **Availability.** Blockly is published on NPM, so you can require it in
  the same way you require any other web dependency.
- **Fully featured.** Blockly comes bundled with common blocks that generate
  code in 5 popular programming languages (JavaScript, Python, Lua, Dart, and
  PHP). Plus it has a thriving [plugin ecosystem][plugins] that gives you even
  more capabilities.
- **Customizability.** Blockly lets you easily define your own blocks, fields,
  and inputs. Plus many of its core functionalities can be swapped out for
  your own custom ones.
- **Internationalization.** Blockly's core library of blocks comes with
  translations in 90+ languages, including right-to-left versions for Arabic
  and Hebrew.
- **Open Source.** Raspberry Pi Foundation shares Blockly's technology with everyone so, together, we can educate the next generation of developers.

## Alternatives

There are some use cases where it makes sense to use a library other than
Blockly. Here are some other options:

- [**PXT**][pxt]: This is an editor built on Blockly that powers
  [MakeCode][make-code]. It outputs JavaScript exclusively, which enables it
  to convert from code to blocks. It also comes bundled with a compiler and a
  simulator.
- [**Droplet**][droplet]: This is the editor that powers
  [Pencil Code][pencil-code]. It lets you type to create blocks without
  dragging, and also supports going from code to blocks.
- [**Node-red**][node-red]: This is a node-based rather than block-based
  programming editor, but it fulfills a similar function. It is popular for
  wiring together hardware devices, often in industry contexts.

[plugins]: https://raspberrypifoundation.github.io/blockly-samples/#plugins
[pxt]: https://github.com/Microsoft/pxt
[make-code]: https://makecode.com
[droplet]: https://github.com/PencilCode/droplet
[pencil-code]: https://pencilcode.net/
[node-red]: https://nodered.org/
