ArduBlock Studio - Visual Arduino Programming IDE | WEB & Offline IDE

ArduBlock Studio — Two Ways to Code Arduino Visually

ArduBlock Studio is a powerful visual programming IDE for Arduino that transforms the way you create embedded projects. Drag, drop, and connect colorful blocks to build complete Arduino programs — the tool automatically generates optimized C++ code, compiles, and uploads directly to your board.

There are now two versions of ArduBlock Studio: the original Offline Desktop edition and the brand-new Online Web edition. Both share the same mission — making Arduino programming accessible to everyone — but they differ significantly in interface, features, and workflow.


ArduBlock Studio WEB — :star: RECOMMENDED

The most up-to-date version, with the most features and the most active development.

The Web edition runs entirely in your browser at ardublockstudio.com.br or ardublockstudio.web.app — no installation, no setup, no drivers to fight with. It's the version where all new features land first and where active development happens.

YouTube Video here!

What makes the Web version special

  • Zero installation — runs directly in Chrome, Edge, Firefox, or Opera. No Python, no pip, no downloads.
  • Completely redesigned interface — modern dark theme, refined layout, and a smoother UX. The Web interface is significantly different from the desktop version and reflects the latest design direction of the project.
  • Direct upload from the browser — uses the Web Serial API to flash your Arduino straight from Chrome, no Arduino IDE or avrdude required.
  • Remote compilation backend — sketches are compiled on a dedicated server via arduino-cli, then the resulting .hex is flashed through your browser.
  • AI-powered features (Premium) — generate blocks from a text prompt, translate C++ line by line, and create programming quizzes, all powered by Groq's LLM API.
  • Real-time collaboration — share projects with collaborators and edit the same workspace simultaneously.
  • Cloud project storage — projects are saved to Firebase and synced across devices with your Google account.
  • Modern block library — 150+ blocks across 25+ categories, including sensors (GY-33, TCS230, UV, joystick, encoder), motors (DRV8833, L298N, A4988, TB6612), Ethernet W5100, crypto (AES-128, SHA-256, HMAC), Bluetooth HC-05/HC-06, interrupts, pointers, arrays, bitwise operations, exponentials and logarithms, and much more.
  • Visual C++ library builder — create complete Arduino libraries (.h + .cpp + keywords.txt + library.properties) using visual blocks.
  • Built-in 2D + 3D plotters — visualize analog sensors in real time with Chart.js (2D lines, XY, multi-series) plus a 3D plotter for scatter clouds, parametric surfaces, and XYZ trajectories.
  • Minimap, block search, linter, auto-format, presentation mode, PNG export — quality-of-life tools baked in.
  • Multilingual — English, Portuguese, Spanish, Japanese, Korean, and Hindi.
  • Powered by Blockly v13.
  • Project export — save and share your work as .ardublock files (JSON + XML) for backup or transfer.

Who it's perfect for

  • Teachers who want students to start coding instantly, without installing anything
  • Students and beginners in STEM, robotics, and IoT
  • Makers who need to prototype quickly on any machine
  • Anyone who wants access to the latest features first

:link: Open the Web version: ardublockstudio.com.br


:laptop: ArduBlock Studio DESKTOP — Offline Edition

The original desktop edition. Fully offline, PyQt6-based, and ideal for classroom environments without reliable internet.

The Desktop edition is a native Python application built with PyQt6 and PyQt6-WebEngine. It bundles Blockly v11 inside an embedded web view and communicates with the Python backend through QWebChannel. Everything runs locally — including compilation via arduino-cli and upload via pyserial.

What makes the Desktop version special

  • 100% offline — works without internet. Ideal for labs, classrooms, and environments with restricted connectivity.
  • Native desktop application — installable on Windows, macOS, and Linux.
  • Local compilation — uses the arduino-cli binary installed on your machine.
  • ISP programmer support — upload via AVRISP mkII, USBasp, Arduino as ISP, and other external programmers.
  • Extension system — add custom blocks, categories, and features dynamically.
  • 50+ Arduino boards supported — from the classic UNO to modern Portenta and ESP32.
  • Project history — automatic versioning and backup of your work.
  • PDF export — generate beautiful documentation of your projects.
  • Bilingual (EN/PT) — English and Portuguese interface.

:warning: Note: the Desktop interface differs substantially from the Web version. The Web version has received more recent updates, a redesigned UI, and several features that are not yet available on Desktop (such as AI-powered block generation, real-time collaboration, the browser-based 2D/3D Serial Plotter, and 6-language support).

Who it's perfect for

  • Classrooms without reliable internet access
  • Users who prefer a native desktop application
  • Makers who need ISP programmer support
  • Researchers prototyping locally

:high_voltage: Quick Start (Desktop)

git clone https://github.com/iagolirapasssos/ArduBlock-Studio.git
cd ArduBlock-Studio
pip install -r requirements.txt
python3 main.py

:inbox_tray: Pre-built binaries are available in the Releases section of the GitHub repository.


:vs_button: Which version should you choose?

Feature :globe_with_meridians: Web :laptop: Desktop
Installation required :cross_mark: None :white_check_mark: Python + deps
Works offline :cross_mark: :white_check_mark:
Most recent features :white_check_mark: First :hourglass_not_done: Delayed
Interface design :white_check_mark: Redesigned (latest) Legacy
Languages supported :white_check_mark: 6 (EN/PT/ES/JA/KO/HI) :white_check_mark: 2 (EN/PT)
Blockly version :white_check_mark: v13 v11
AI features (Groq) :white_check_mark: (Premium) :cross_mark:
Real-time collaboration :white_check_mark: :cross_mark:
Cloud project storage :white_check_mark: :cross_mark:
Browser-based Serial Plotter (2D + 3D) :white_check_mark: :cross_mark:
Visual C++ library builder :white_check_mark: :cross_mark:
Bitwise / interrupt / pointer blocks :white_check_mark: :hourglass_not_done: Partial
ISP programmer support :cross_mark: :white_check_mark:
PDF export :cross_mark: :white_check_mark:
Extension system :hourglass_not_done: Planned :white_check_mark:
Direct upload from browser :white_check_mark: :white_check_mark: (native)

Rule of thumb:

  • Want the latest features and the newest interface → use the Web version.
  • Need to work offline or with ISP programmers → use the Desktop version.

:handshake: We need your help!

ArduBlock Studio is hosted on GitHub and we're actively looking for contributors — whether you're a Python developer, JavaScript enthusiast, UI/UX designer, documentation writer, or just passionate about Arduino, there's a place for you!

:link: GitHub Repository: github.com/iagolirapasssos/ArduBlock-Studio

Ways to contribute

  • Report bugs and suggest features
  • Submit pull requests (Python/PyQt6, JavaScript/Blockly, Arduino)
  • Translate to new languages
  • Improve documentation and tutorials
  • Create custom extensions and block libraries
  • Enhance the UI/UX design
  • Write tests and improve code quality

Tech Stack:

  • Desktop: Python 3.10+ · PyQt6 · PyQt6-WebEngine · QWebChannel · Blockly v11 · arduino-cli · pyserial
  • Web: HTML5 · CSS3 · JavaScript · Blockly v13 · Web Serial API · Firebase (Auth + Firestore) · Groq API · Chart.js · arduino-cli (backend)
  • Shared: Firebase · arduino-cli · .ardublock project format

:glowing_star: First-time contributors welcome! Check our Issues page for good first issue tags.


:star: Support the project

  • Star the repo to help it reach more makers
  • Spread the word — share with your local makerspace, school, or Arduino meetup group
  • Try the Web version and give us feedback

Let's make Arduino programming accessible to everyone, together. :handshake:

#ArduBlock #Arduino #VisualProgramming #BlocklyIDE #ArduinoProjects #STEM #EdTech


:pushpin: TL;DR

:globe_with_meridians: Try the Web version (latest)
ardublockstudio.com.br

:laptop: Desktop version (offline)
GitHub Releases

:handshake: Contribute
github.com/iagolirapasssos/ArduBlock-Studio

The Web version features a completely redesigned interface, receives more frequent updates, supports 6 languages, includes 2D + 3D plotters, AI features, real-time collaboration, and cloud sync.

The Desktop edition is 100% offline, supports ISP programmers, and is ideal for classrooms without internet access.

For the newest features and the modern experience, start with the Web version.

Hi

I see that your GitHub repository is new, but its style and concept are very similar to the old ArduBlock:

But your project has new authors, and you don't even mention the old project. Isn't your project a development of the previous one?
As far as I can see, you were not even among the contributors to the ArduBlock project. Please tell me I'm wrong, and you didn't just take someone else's project and post it under your own name?

First of all, it's not ArduBlock, but ArduBlock Studio. The IDE was built from scratch without piggybacking on other repositories. The project mentioned was developed in Java; my project was created entirely in Python.

Really?

Anybody can compare:

Ardublock

Ardublock Studio

The design was inspired by Mit App Inventor and Thinkercad.

If you completely copy someone else's project, even in a different language, that doesn't make it your own. This is called porting, and such a project must acknowledge and link back to the original.

Also, if this is a "completely new project," why is its name practically a carbon copy of its competitor's?

This all looks very ugly.

All desendents of MIT Scratch. All claim "STEM" "easy" "no programming" and "ideal for teachers". All guarantee kids will never try programming again.

It's wrong to criticize without knowing the project. The choice of name was unfortunate.

...the same for design and even the labels on left panel?

My humble opinion is that your post should be deleted. If you find my statements unacceptable - contact the moderator.

ExpensiveDear user, your comments are unfounded. You need to invest in something deeply before launching attacks.

:rocket: ArduBlock Studio Web – A Web-Based Advanced Block Programming Platform for Arduino

Are you an Arduino enthusiast, educator, student, or maker looking for a more visual and intuitive way to program your Arduino projects?

I’m excited to introduce Arduino Block Studio, a web-based platform for advanced block-based Arduino programming.

:wrench: What is Arduino Block Studio?

Arduino Block Studio lets you create Arduino programs visually using programming blocks directly in your web browser. It combines the simplicity of block-based programming with advanced programming concepts, making it suitable for both learning and more complex projects.

:globe_with_meridians: No installation required — simply open the platform in your browser and start programming.

It can be useful for:

• Arduino beginners learning programming
• Students and educators
• Robotics projects
• Makers and hobbyists
• Sensor and actuator projects
• STEM education
• Advanced Arduino applications

The goal is to make Arduino programming more accessible while providing a powerful visual programming environment for building real projects.

:backhand_index_pointing_right: Try Arduino Block Studio:

I’d love to hear feedback from the Arduino community!

What features would you like to see in a web-based advanced block programming platform for Arduino? :rocket:

#Arduino #ArduinoProgramming #ArduinoProjects #BlockProgramming #WebBased #Robotics #STEM #Maker #IoT #Programming #ArduinoIDE

you really think that the left 3/4th of the screen are an improvement to nthe 1/4 on the right?

I didn't understand. Please explain in detail.

What make you think that hiding all lanuage elements in the leftmost tree, dragging them to the middle, struggling with white-text-on-yellow-background, clicking all over the place to change a value etc ... is easier than just typing the text on the right?

I understand your point, especially if you already have experience with text-based programming. However, ArduBlock Studio is not primarily designed for experienced programmers who can already write Arduino code fluently. It is designed as an educational tool for beginners and students.

There is a well-established educational rationale for using block-based programming. Research in computer science education has shown that block-based environments can reduce the syntactic burden of programming, allowing novice learners to focus more on programming concepts and computational thinking rather than on memorizing syntax and dealing with syntax errors.

For example, Hao et al. (2023), in the International Journal of STEM Education, discuss how novice learners face significant cognitive demands when processing programming structures and note that block-based languages have become popular in education partly because they reduce the burden of complex text-based syntax. Their research also highlights the importance of scaffolding when teaching programming to novices.

Research specifically comparing graphical and textual approaches to introductory microcontroller programming has also found educational benefits from graphical environments. A study published in Education and Information Technologies reviewed evidence showing that students using block-based environments can achieve significant learning gains in introductory programming and that graphical environments can support problem-solving development.

Another study on children's coding experiences explains that syntax is a frequent difficulty in programming education and that block-based environments are widely used to reduce this barrier for learners.

More recent research continues to support this educational approach. Sung and Ozkan (2026), in the Journal of Science Education and Technology, found that a block-based programming intervention significantly improved computational-thinking skills among sixth-grade students. The authors specifically describe block-based environments as a way of lowering the syntax barrier so students can focus on computational and scientific reasoning.

There is also research showing that combining block-based and text-based environments can be particularly useful. A 2024 study involving 240 programming students found benefits from approaches that combine block-based and text-based programming for the development of sustained problem-solving skills.

So, I don't claim that blocks are universally better than text. They are simply designed for a different purpose.

If an experienced Arduino programmer can type:

digitalWrite(LED, HIGH);

faster than dragging a block, that's completely understandable.

But a beginner who has never programmed before is dealing with a different problem. They first need to understand concepts such as variables, conditions, loops, functions, inputs, outputs and program flow. Requiring them to simultaneously memorize syntax, punctuation, function names and language rules adds another layer of difficulty that may have little to do with the concept we are actually trying to teach.

That's the educational purpose behind ArduBlock Studio.

And regarding your UI criticism: that's fair feedback. If some interactions feel cumbersome, such as finding blocks, changing values, or dealing with color contrast, those are legitimate UX issues that can be improved. I'm always open to that kind of feedback.

But the existence of those UI issues doesn't invalidate the educational purpose of block-based programming.

ArduBlock Studio is not intended to replace text-based Arduino programming for experienced developers. The goal is to provide a more accessible entry point into programming and microcontroller development, particularly for students and beginners.

Ideally, the learner starts with visual programming, develops an understanding of the underlying concepts, and then progressively moves toward reading and writing textual code.

So the relevant question isn't simply:

"Why drag blocks when you can type?"

For education, the more useful question is:

"What interface helps a beginner understand programming well enough to eventually be able to type the code themselves?"

That's the problem ArduBlock Studio is trying to solve.

For the sake of argument ... transfer this approach to basic algebra. Learning addition/subtraction and memorizing the multiplication tables is hard. Still, children start lerarning these basics years before being allowed to use a calculator at school. Now your argument is: just give them a calculator, they will learn multiplication tables without knowing. This does not work.

Problem is, that there is no "easy" way to learn programming. You cannot skip the basics. Most (with a minor number of exceptions) of teachers here (austria) that teach programming do not have a clue how to program themselfs. Scratch and its offsprings make the live of these teachers easy - no need to learn programming at all. The outcome is dire to put it politely. And those papers ... I won't comment.

I actually agree with one important part of your argument: there is no magic shortcut around learning programming fundamentals. Students still need to learn variables, data, control flow, abstraction, algorithms, debugging, problem decomposition, etc.

But I think the calculator analogy makes an important category error.

A block-based programming environment is not analogous to giving a child a calculator instead of teaching multiplication. It is more analogous to changing the notation or interface through which the same computational concepts are expressed.

A student using a block-based environment still has to construct the algorithm. They still have to decide what should happen, in what order, under which conditions, how variables change, how loops work, how inputs and outputs interact, and how to debug the program.

The difference is that the learner does not have to simultaneously master all of those concepts AND the syntax of a textual programming language.

And this isn't merely my personal opinion.

A 2021 meta-analysis of 29 empirical studies found a small-to-medium positive overall effect of block-based visual programming on students' academic achievement (random-effects g = 0.47). The authors examined tools including Scratch, Alice and MIT App Inventor and specifically investigated their use with novice learners.

There is also a 2025 meta-analysis, covering research published between 2001 and 2024, which found a moderate positive overall effect of block-based programming on academic achievement (Hedges' g = 0.53), with particularly strong effects among elementary students.

https://doi.org/10.1080/02635143.2025.2593936

Now, I also want to be fair to your position.

A 2019 meta-analysis comparing block-based and text-based programming environments for novice learners did NOT find statistically significant differences in cognitive or affective outcomes. The authors explicitly concluded that more research was needed.

That is important because I don't think the evidence justifies saying "blocks are better than text."

https://doi.org/10.1080/08993408.2019.1565233

What the research does support is a more nuanced conclusion: block-based programming can be an effective instructional tool for novices, but its effectiveness depends on how it is designed and taught.

There is also a cognitive reason for using visual representations. Research published in the International Journal of STEM Education has shown that novice learners experience substantial cognitive load when processing hierarchical programming structures. This is precisely the kind of cognitive burden that educational programming environments have to consider.

And the evidence goes beyond "students enjoy Scratch." A 2024 systematic review and meta-analysis covering 19 studies and 1,523 participants found that coding interventions can improve problem-solving, planning, working memory and inhibition, with the largest effect observed for problem-solving.

https://doi.org/10.1016/j.compedu.2023.104961

So I completely agree that students should eventually understand textual programming. In fact, I would argue that a good educational progression should be:

concepts → visual representation → algorithms → debugging → increasingly complex projects → reading text-based code → writing text-based code.

That is very different from saying "give students Scratch and they don't need to learn programming."

Regarding your comment about teachers: I actually think that is a separate issue.

If a teacher doesn't understand programming, putting Scratch, Blockly or any other visual tool in their hands will not magically make them a good programming teacher. The problem there is teacher preparation, curriculum design and pedagogical training — not the existence of block-based languages.

A bad teacher can misuse both Scratch and C++.

Likewise, a good teacher can use blocks as scaffolding and deliberately connect every visual construct to the underlying computational concept and, eventually, to textual code.

That's also how I see ArduBlock Studio.

I'm not claiming that dragging a block is inherently superior to typing Arduino code. If you already know C/C++, typing is obviously faster for many tasks.

ArduBlock Studio is aimed at a different point on the learning curve: students who are learning programming concepts and Arduino simultaneously.

For an experienced programmer, the blocks may look unnecessarily cumbersome.

For a beginner, the same blocks can make the structure of the program visible and eliminate a class of syntax errors that have nothing to do with the concept being taught.

And I don't think we should confuse "this is slower for me" with "this has no educational value."

The interesting question isn't whether an experienced programmer can type the equivalent code faster.

The interesting educational question is:

Does the representation help a beginner understand algorithms, control flow, variables, inputs, outputs and problem solving well enough to eventually write the textual code themselves?

The research suggests that, under appropriate instructional conditions, the answer can be yes.

And that's the educational problem ArduBlock Studio is trying to address.

I respect your opinion, but I only stated the facts. If you come across any article in a magazine that contradicts this, then I will reconsider my thoughts. However, the facts confirm my thoughts.

@iagolira can the "generate[d] optimized C++ code" be seen easily?

a7

Yes, you can see it on the right side of the screen. In addition to block-based programming, you can write code using C++ or pure C libraries and compile directly for boards such as the Uno, Mega, Nano, Leonardo, ESP32, etc.