# tinygo-org/tinygo

Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

Repository: https://github.com/tinygo-org/tinygo
Canonical: https://ross.abutalabs.com/products/tinygo
Homepage: https://tinygo.org
Language: Go
License: NOASSERTION
License Family: other
Topics: microcontroller, tinygo, llvm, wasm, webassembly, arduino, arm, microbit, samd21, stm32, nrf51, nrf52, avr, i2c, spi, gpio, adafruit, wasi, esp32
Last push: 2026-08-26T18:03:44+00:00

## Health v2 (maintenance only)
Score: 88/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 68, longevity 100
- inputs: {"age_days": 3009, "days_push": 7, "days_rel": 133, "gap_med": 64, "n_releases_24m": 10}
- flags: no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 17670, forks 1070 (observed 2026-08-28T04:11:20.155183+00:00)

## What it is
TinyGo is an alternative Go compiler based on LLVM designed for small places such as microcontrollers, WebAssembly (WASM/WASI), and compact command-line tools. It supports over 150 microcontroller boards including Arduino, ESP32, and BBC micro:bit, and produces very compact WebAssembly binaries for browsers and edge runtimes.

## Use cases
- compile go programs for microcontrollers like arduino or esp32
- build small webassembly binaries for the browser
- compile go to wasi for serverless and edge runtimes
- flash go code onto embedded boards
- write go firmware for stm32 or nrf52 chips
- create tiny go command-line tools with small binaries

## When to choose
- you want to program microcontrollers in go instead of c
- you need compact webassembly output from go code
- your target board is among the 150+ supported microcontrollers
- you deploy go to wasm runtimes like Fermyon Spin or Fastly Compute

## When to avoid
- you need full compatibility with the standard go runtime and all its libraries
- you rely on cgo or go features TinyGo does not support
- you target platforms outside embedded and wasm where standard go works fine

## Facets
- artifact type: cli-tool
- maturity: active
- function: compiler, embedded, wasm, cli, developer-tools
- domain: programming-languages, embedded-systems, iot, compilers, cross-platform
- platform: windows, embedded, wasm, cli
- tags: go, llvm, microcontrollers, arduino, esp32, wasi, webassembly, stm32, nrf52, avr, compiler, linux, macos, docker

## Member repositories
- tinygo-org/tinygo (main) score 88

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:11:20.155183+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:30:59.205976+00:00, confidence not recorded.
  - readme: https://github.com/tinygo-org/tinygo (fetched 2026-08-28T04:11:20.155183+00:00, sha c1f05a4b973e)
  - homepage: https://tinygo.org (fetched 2026-08-29T08:00:46.276739+00:00, sha cba10b179434)
  - site_page: https://tinygo.org/getting-started (fetched 2026-08-29T08:00:46.285796+00:00, sha b35bfde524cc)
  - site_page: https://tinygo.org/docs (fetched 2026-08-29T08:00:46.287652+00:00, sha ca8281588f57)
  - site_page: https://tinygo.org/docs/reference/microcontrollers (fetched 2026-08-29T08:00:46.289370+00:00, sha a6a13b71e0a4)
- Data as of 2026-08-30T08:39:29.467469+00:00.
