A shared, client-side asset layer for WLED's standard palettes and effects: localized names, evocative palette illustrations, and effect motion previews — for any WLED client to render.
That's the idea in two tiles: a palette becomes a telling illustration in its real colours, an effect becomes a living preview of how it moves — each with a localized name and a one-line description. Below: all 72 palettes and all 220 effects at a glance.

The 72 standard WLED palettes, each as its gradient-filled illustration.

The 220 standard WLED effects, each animated and visually distinct.
WLED's effect and palette names are English identifiers, compiled into the firmware and
referenced by index (fx:63, pal:11). There is no official localization, and the
firmware can't carry translations or artwork without inflating the binary that ships to
every ESP. This repo is the firmware-independent, client-side complement: a single
source of truth that phone apps, web UIs, overlays and third-party tools can all consume
to show localized names, telling palette icons, and a preview of what each effect does.
Not affiliated with the WLED project. WLED is an independent open-source project; this repo merely interoperates with its public enumerations. The join key is the exact English name returned by
/json/paland/json/eff. Everything falls back to that English name when a translation or asset is missing — so a consumer is never worse off than plain WLED.
If you build a WLED client — the web UI, a phone app, a browser overlay, a Stream Deck / MIDI tool — this repo drops localized names and telling visuals into your UI for free, at runtime, without touching the firmware or its binary size:
- Read the device's list once:
GET /json/eff,GET /json/pal. The exact English name at each index is your join key (indices are not stable across WLED versions — names are). - Look the name up in
i18n/effects.json/i18n/palettes.jsonfor the user's language (en fr de es it ja ko zh), fall back toen. Showname(+ optionaldesc). - For a palette thumbnail, take
illustrations/<slug>.svgand inject the palette's real colours fromGET /json/palx. For an effect preview, useanimations/families.json+tools/anim.js.
Everything is CC0 — vendor it as a submodule, a package, or a plain copy, no attribution
required. Fetch it from a CDN so updates land without an app release. Because it's keyed on
the English name with English fallback, a missing entry is never worse than plain WLED. A
runnable proof-of-concept (a drop-in overlay for the WLED web UI) lives in
pages/webui-localize-poc.html.
One page per language × concept — English name · translation · description · illustration. 11 concepts, each with an icon and an intro: palettes · effects · controls · nightlight · segment · buttons · button-events · presets · effect-sliders · info · UI. Full index (all concepts × languages): docs/. Main ones:
| Language | Palettes | Effects | Controls | Nightlight |
|---|---|---|---|---|
| 🇬🇧 English | palettes | effects | controls | nightlight |
| 🇫🇷 Français | palettes | effects | controls | nightlight |
| 🇩🇪 Deutsch | palettes | effects | controls | nightlight |
| 🇪🇸 Español | palettes | effects | controls | nightlight |
| 🇮🇹 Italiano | palettes | effects | controls | nightlight |
| 🇯🇵 日本語 | palettes | effects | controls | nightlight |
| 🇰🇷 한국어 | palettes | effects | controls | nightlight |
| 🇨🇳 中文 | palettes | effects | controls | nightlight |
| Path | What |
|---|---|
data/palettes.json, data/effects.json |
The reference WLED enum lists (English names, in index order). |
i18n/palettes.json |
Every palette → per language { name, desc } (8 languages, English fallback). |
i18n/effects.json |
Every effect → per language { name, desc } (desc = its motion family). |
i18n/controls.json |
The standard effect controls (Speed, Intensity, Custom 1-3, Options 1-3, colour slots, Palette) → { name, desc }. |
i18n/concept-intros.json |
A short per-language intro for each concept — where it lives in WLED — shown at the top of every doc page. |
i18n/nightlight.json, i18n/segment.json, i18n/buttons.json, i18n/button-events.json, i18n/presets.json |
Nightlight modes, segment actions, button/input types, button events (short/long/double press → preset), and preset/playlist option labels → { name, desc } per language. |
i18n/fxdata-labels.json |
The 234 per-effect slider labels from /json/fxdata (Speed, Blur, # of balls…) → { name } per language (common ones translated, long tail = English fallback). |
i18n/info.json, i18n/ui.json |
Info-panel field labels and core UI labels (tabs, actions) → { name, desc } per language. |
i18n/nightlight.json |
The 4 nightlight modes (instant, fade, colour fade, sunrise) → mode number + { name, desc } per language. |
i18n/effect-families.json |
Descriptions of the 9 broad motion families, per language. |
meanings/palette-meanings.json |
Source for palette descriptions. |
illustrations/*.svg |
One reusable gradient-agnostic stencil per palette (fill #grad with the palette's real colours). |
animations/families.json |
Maps every effect name → one of 24 motion types + the per-effect seeding rule. |
tools/anim.js |
Reference JS: anim(phase, motion, seed) → the effect animation (24 motions; seed = effect index → unique). |
docs/<lang>/*.md |
The GitHub-rendered reference pages above. |
images/nightlight/*.png, images/segment/*.png, images/fxdata/*.png |
Icons for nightlight modes (brightness curves), segment actions (reverse/mirror/freeze…), and effect-slider labels (keyword icons + a generic slider). |
images/controls/*.png |
Icons for the effect controls (speedometer, sliders, toggles, colour swatches, painter palette). |
images/palettes/*.png, images/effects/*.gif |
Rendered thumbnails, transparent background (adapt to light/dark) — 72 palette PNGs, 216 animated effect GIFs. The 2 contact sheets are transparent too. |
pages/ |
Standalone interactive HTML reference pages. |
- Read the current palette/effect index from the device (
/json/state,/json/pal,/json/eff). The English name at that index is your key. - Look it up in
i18n/…for the user's language (fall back toen). Showname+desc. - For palettes, load
illustrations/<slug>.svgand inject a<linearGradient id="grad">built from the palette's colours (/json/palx). - For effects, look up its motion in
animations/families.jsonand animate withanim(phase, motion, effectIndex)fromtools/anim.js.
Vendor it as a git submodule, a package, or a plain copy. It's data + SVG + one small JS file.
This repo's goal is to localize everything WLED exposes as named vocabulary — not a curated subset. Concepts covered (each × 8 languages, English fallback):
- Palettes (72) · Effects (220) · Effect controls (Speed, Intensity, Custom 1-3, Options, colour slots, Palette)
- Segment actions (reverse, mirror, freeze, on/off, transition, sound-sim)
- Button/input types (push, switch, PIR, touch, analog…)
- Per-effect slider labels — the 234 parameter names from
/json/fxdata - Info-panel fields (uptime, free memory, signal, FPS, estimated current…)
- Core UI labels (Colours, Effects, Segments, Presets, Settings, Save, Sync, Live…)
Coverage grows over time: the small enums are fully translated; the large sets (the 234 fxdata labels, the UI strings) have the common items translated and the specific long tail (plus the CJK columns) fall back to English — extend any of them via PR, that's the point.
Kept in English on purpose (they are identifiers/product names, not words — like
proper-noun palettes such as Rivendell): LED-chip types (WS2812B, SK6812…) and colour
orders (GRB, RGB…). If a client wants those localized too, open an issue and we'll add them.
The palette illustrations and effect animations were bootstrapped from the English names (best-effort interpretation — Ghost Rider → a ghost, Lissajous → the curve, etc.). Some are approximations, and any of them can be corrected or replaced on request. Open an issue / PR providing either:
- an SVG following the contract (viewBox
0 0 144 144, no background rect; palette stencils fill#grad, effect motions are drawn bytools/anim.js), or - a ready image — a static PNG or an animated GIF — with: transparent background, square aspect, ≥ 144×144 px, and a one-line description of what it should show (which palette/effect it's for, static vs animated, and the intended motion).
Tell us the exact WLED name (the join key) it maps to. We'll wire it into the asset set.
Alpha. Palettes translated 72/72, effects 217/217, illustrations 72/72. The Latin-script translations (fr/de/es/it) are solid; the CJK ones (ja/ko/zh) are a first pass and want a native-speaker review before production use. Corrections, missing translations, new illustrations and new-language columns are all welcome via PR — the English name is always the stable key.
Data, translations, meanings and SVG stencils: CC0-1.0 (public domain — reuse freely, no attribution required, so any client can adopt it without friction).
Maintained as part of OpenLamp — 100% local stage-light control for musicians and makers — but vendor-neutral: nothing here is OpenLamp-specific. If it helps a WLED client, it's doing its job.

