L Designs+
xLights Tools & Resources
xModel Converter Reference
Technical reference for the xLights .xmodel format conversion tool — what changes between versions, what stays the same, and how to keep it running.
client-side only 2025.12 ⇄ 2026 dvlight.com
1Purpose & Overview

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

2Background — Why Conversion Is Needed

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:

  • The root XML element and its wrapper
  • The dimension attributes (width and height)
  • The child element structure of each subModel

Face definitions (faceInfo) and state definitions (stateInfo) use identical XML in both versions and require no changes — they are preserved as-is during conversion.

3Format Comparison
Attribute / Element2025.12 Format2026 Format
Root element<custommodel ...><models type="exported"><model ...>
Width attributeparm1="119"CustomWidth="119"
Height attributeparm2="207"CustomHeight="207"
Node data attrline0="1,2,3-5"line0="1,2,3-5"  (identical)
Layout attrlayout="horizontal"layout="horizontal"  (identical)
SubModel closing<subModel ...><Aliases/><ControllerConnection/></subModel><subModel ... />  (self-closing)
Source versionSourceVersion="2025.12"SourceVersion="2026.04"
faceInfo<faceInfo ... /><faceInfo ... />  (identical)
stateInfo<stateInfo ... /><stateInfo ... />  (identical)
CustomModelCompressedPresent as attributePresent as attribute  (identical)
CustomModelPresent as attributeNot present in wrapper
4What Does NOT Change

The following are identical in both formats and pass through the converter without modification:

Attribute / Element2025.12 Format2026 Format
Node rangesline0="93-92,90-91,83,..."line0="93-92,90-91,83,..."
Buffer stylebufferstyle="Default"bufferstyle="Default"
Layout orient.layout="horizontal"layout="horizontal"
SubModel typetype="ranges"type="ranges"
Face defs<faceInfo Name="..." .../><faceInfo Name="..." .../>
State defs<stateInfo Name="..." .../><stateInfo Name="..." .../>
Compressed dataCustomModelCompressed="..."CustomModelCompressed="..."
5Security & Privacy

The converter tool is implemented as client-side JavaScript only:

  • No files are uploaded to any server at any time
  • The File API reads the .xmodel into browser memory only
  • Conversion and download happen entirely in the browser
  • The page works fully offline once loaded
  • A domain check prevents the tool from running on unauthorised copies of the page
6Known Limitations & Notes
  • The converter targets 2025.12 and 2026 formats specifically. Earlier xLights versions may use a different structure.
  • CustomModel attribute: 2026 exports omit the CustomModel= grid string. When converting 2025→2026 the attribute is dropped. Converting back 2026→2025 will have an empty CustomModel= attribute, which is normal — xLights regenerates this from CustomModelCompressed.
  • If xLights updates its export format in a future version, the converter script will need updating to match the new structure.
  • Multi-row submodels: submodels with more than one row use pipe-separated values in line0 (e.g. line0="1,2,3|4,5,6"). The converter preserves these as-is.