This document describes the conversion process performed by the L Designs+ xModel Converter tool, which translates xLights model files (.xmodel) between version 2025.12 and 2026 formats. It is intended as a technical reference for troubleshooting, future development, and understanding what changes during conversion.
Tool location: dvlight.com — runs entirely in the user's browser. No files are uploaded to any server.
Supported conversions: 2026 → 2025.12 and 2025.12 → 2026
xLights version 2026 changed the XML structure of exported .xmodel files. The root element, wrapper structure, and several attribute names were updated. As a result, a model exported from xLights 2026 cannot be directly imported into xLights 2025.12 using “Import Submodels from File”, and vice versa.
The three main areas of change are:
Face definitions (faceInfo) and state definitions (stateInfo) use identical XML in both versions and require no changes — they are preserved as-is during conversion.
| Attribute / Element | 2025.12 Format | 2026 Format |
|---|---|---|
| Root element | <custommodel ...> | <models type="exported"><model ...> |
| Width attribute | parm1="119" | CustomWidth="119" |
| Height attribute | parm2="207" | CustomHeight="207" |
| Node data attr | line0="1,2,3-5" | line0="1,2,3-5" (identical) |
| Layout attr | layout="horizontal" | layout="horizontal" (identical) |
| SubModel closing | <subModel ...><Aliases/><ControllerConnection/></subModel> | <subModel ... /> (self-closing) |
| Source version | SourceVersion="2025.12" | SourceVersion="2026.04" |
| faceInfo | <faceInfo ... /> | <faceInfo ... /> (identical) |
| stateInfo | <stateInfo ... /> | <stateInfo ... /> (identical) |
| CustomModelCompressed | Present as attribute | Present as attribute (identical) |
| CustomModel | Present as attribute | Not present in wrapper |
The following are identical in both formats and pass through the converter without modification:
| Attribute / Element | 2025.12 Format | 2026 Format |
|---|---|---|
| Node ranges | line0="93-92,90-91,83,..." | line0="93-92,90-91,83,..." |
| Buffer style | bufferstyle="Default" | bufferstyle="Default" |
| Layout orient. | layout="horizontal" | layout="horizontal" |
| SubModel type | type="ranges" | type="ranges" |
| Face defs | <faceInfo Name="..." .../> | <faceInfo Name="..." .../> |
| State defs | <stateInfo Name="..." .../> | <stateInfo Name="..." .../> |
| Compressed data | CustomModelCompressed="..." | CustomModelCompressed="..." |
The converter tool is implemented as client-side JavaScript only: