Skip to main content

FastLED Wasm Compiler

Project description

FastLED WASM Compiler

Build Lint Unit Test Integration Test
Linux x86 Linux x86 Build Linux x86 Lint Linux x86 Unit Test Linux x86 Integration Test
Linux ARM Linux ARM Build Linux ARM Lint Linux ARM Unit Test Linux ARM Integration Test
Windows x86 Windows x86 Build Windows x86 Lint Windows x86 Unit Test Windows x86 Integration Test
Windows ARM Windows ARM Build Windows ARM Lint Windows ARM Unit Test Windows ARM Integration Test
macOS x86 macOS x86 Build macOS x86 Lint macOS x86 Unit Test macOS x86 Integration Test
macOS ARM macOS ARM Build macOS ARM Lint macOS ARM Unit Test macOS ARM Integration Test

Publish Release

Compile your FastLED sketch and run it on the browser!

image

Demo

https://zackees.github.io/fastled-wasm/

About

Compile FastLED sketches to browser-ready html/js/wasm output using a native Emscripten toolchain.

Compile times are extremely fast thanks to aggressive object caching and sketch fingerprinting. Recompilation of sketch files with minimal changes completes in under a second.

Tutorial Video

Note: This video predates the Rust CLI migration. Install with pip install fastled and run with fastled mysketchfolder.

https://github.com/user-attachments/assets/64ae0e6c-5f8b-4830-ab87-dcc25bc61218

Install

pip install fastled

Alternative installers:

  • uv pip install fastled --system
  • pipx install fastled

Executables

Pre-built binaries are published on each GitHub release:

Ubuntu Install Script

curl -L https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/install_linux.sh | /bin/bash

Run

Change into a sketch directory and run:

fastled

Useful flags:

Flag Description
--just-compile Compile and exit without opening a browser or watching files
--debug Build with debug-friendly compiler settings
--quick Default build mode
--release Optimized build (~1/3 smaller binary)
--fastled-path <path> Point the build at a local FastLED checkout
--purge Clear cached FastLED downloads and stale WASM build artifacts
--serve-dir <dir> Serve an existing directory without compiling

Set FASTLED_VIEWER_LOGS=1 to forward the viewer window's browser console output (console.*, uncaught errors, failed fetches) to the terminal's stderr, prefixed with [viewer] — useful when diagnosing a blank or broken viewer.

Features

Hot Reload

Once launched, the compiler remains open and watches for file changes. Edits to your sketch are automatically recompiled and the browser reloads with the updated output. Build output is streamed to the browser in real time via SSE.

Hot Reload FastLED Source

If you launch fastled inside the FastLED repo with --fastled-path, changes to the library source code are detected and trigger recompilation. Unlike sketch-only rebuilds, modifying a header file may produce a longer recompile.

Big Data in /data Directory

Large files (e.g. video) in a sketch's data/ directory are handled specially to avoid round-tripping blobs. The WASM compiler generates a files.json manifest for an emulated SD card system mounted at /data/. Files named *.json, *.csv, *.txt are injected before setup() runs; all others are streamed asynchronously at runtime.

For an example see examples/SdCard in the FastLED repo.

Compile Speed

Three compile modes are available: --quick (default), --release (optimized for size, ~1/3 smaller binary), and --debug (debug-friendly compiler settings). Aggressive object caching means incremental rebuilds are near-instant.

Arduino Compatibility

Most simple Arduino sketches compile out of the box. Common functions like digitalWrite(), Serial.println(), and others are stubbed. digitalRead() returns 0 and analogRead() returns random numbers.

HTTPS

The local preview server supports HTTPS using the bundled localhost certificate pair. HTTPS is required for browser features such as microphone access. See HTTPS_SSL.md.

Python Package

The fastled Python package is a compatibility launcher for the native Rust CLI. Internal build, project discovery, and fuzzy matching behavior lives in Rust and is tested there.

FAQs

Q: Why does FastLED become choppy when the browser tab is in the background? A: FastLED WASM currently runs on the main thread. Chrome throttles the event loop for background tabs. Moving to a Web Worker would solve this.

Q: Why does a long delay() freeze the browser? A: delay() blocks loop() which blocks the main thread. A Web Worker would decouple FastLED from the browser's UI thread.

Q: How can I reduce the compiled size of my sketch? A: A significant portion of the binary is Emscripten JS bundling overhead. The wasm_compiler_settings.py in the FastLED repo can tune this. Using --release produces a ~1/3 smaller binary than --quick.

Development

./install
./test
./lint

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fastled-2.0.12-py3-none-win_arm64.whl (11.1 MB view details)

Uploaded Python 3Windows ARM64

fastled-2.0.12-py3-none-win_amd64.whl (11.1 MB view details)

Uploaded Python 3Windows x86-64

fastled-2.0.12-py3-none-manylinux_2_28_x86_64.whl (20.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

fastled-2.0.12-py3-none-manylinux_2_28_aarch64.whl (20.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

fastled-2.0.12-py3-none-macosx_11_0_arm64.whl (11.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fastled-2.0.12-py3-none-macosx_10_12_x86_64.whl (11.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file fastled-2.0.12-py3-none-win_arm64.whl.

File metadata

  • Download URL: fastled-2.0.12-py3-none-win_arm64.whl
  • Upload date:
  • Size: 11.1 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastled-2.0.12-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 596e826731cc22930d127559f9d467fc101cd7e01ee0758fe20433c324852458
MD5 83e91875504ae4423b237a1c8e0f7621
BLAKE2b-256 df8b3be74eb5e23f6167dc069a0e0a9609155c5bdf378424151975c646d4099b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-win_arm64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.12-py3-none-win_amd64.whl.

File metadata

  • Download URL: fastled-2.0.12-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastled-2.0.12-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ec431b1fae5b5b1b7d941c6d710df411dff3459298d7aaf0d45677ed55d529b1
MD5 7c4f5495f42a0bc9e7a957454270afea
BLAKE2b-256 d60225760630b188bb50c92ed704d51a7a4ba3301e16a052132447068476557c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-win_amd64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.12-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastled-2.0.12-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f34cc160c4955c1a58bf360ec1ce5bf83d52a3a39568201e484f7e2e8880fc78
MD5 3dfd88c8c78c3fd986b22f63d2ee69f6
BLAKE2b-256 d9282129eedff688c40f16b33730382d7ae30f9df49e802c989d14ea4bb6db5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-manylinux_2_28_x86_64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.12-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastled-2.0.12-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4ef10cb0aa66573886ce042a9c70355fa60edf9293cd8b82ed2bbf3d4f12bdd2
MD5 2f4888fe9128b5409a63752b3814e2dd
BLAKE2b-256 cc940bb6186550585e3516d2f1aa367f3c4650e9bcfed08d2e55f6fd24c97aad

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-manylinux_2_28_aarch64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.12-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastled-2.0.12-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5794dac63a891fa2d3fd3da7347a5d5dc9f9bb11d9b62a0592544f327df23e7f
MD5 acee83693ca2081f4456f437160db62f
BLAKE2b-256 e995b1d863324e01741d660d2e66c4cf26803b34fda35b61dbbb70e9ce0aab48

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-macosx_11_0_arm64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.12-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fastled-2.0.12-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 857c11b1d6c898feb03d75b5b2126c95e42673a86a8253032e6e7581d90c6bdc
MD5 e3c2e6005d55f3043426123b4bd89b69
BLAKE2b-256 8c25c408c49a9c3f66c1ba10af74276f0295e97d6a73a692858177d1bcd4834a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.12-py3-none-macosx_10_12_x86_64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page