ICU Message Validator
Process icu message validator locally with complete copy/download and explicit rules.
Enabling local controls…
Results
Review the settings and run. Editing inputs clears old results.
Processing model and limits
Use installed FormatJS parser3.5.22 and intl-messageformat12.1.4 for full supported MessageFormat syntax, nested select/plural/selectordinal/offset, apostrophe escaping and number/date skeletons. Plain-text mode ignores HTML tags; never renders them or executes callbacks. Variables must be own JSON string/number/boolean primitives, copied to a null-prototype map; reserved-name arguments remain literal keys. AST≤2000 nodes/depth30, raw braces≤64 levels, values depth20. Native Intl data/timezone affect formatting. Each text field is limited to 32 KiB; complete output to 1 MiB. Runs in a one-second local Worker, with no network requests.
Data and model checked: ToolHubEN source controls ↗FormatJS ICU MessageFormat parser ↗
How to use this tool
Load the example, confirm field units and processing rules, then run locally. Editing any input clears the old result. Copy or download the complete output explicitly.
When not to use it
Use installed FormatJS parser3.5.22 and intl-messageformat12.1.4 for full supported MessageFormat syntax, nested select/plural/selectordinal/offset, apostrophe escaping and number/date skeletons. Plain-text mode ignores HTML tags; never renders them or executes callbacks. Variables must be own JSON string/number/boolean primitives, copied to a null-prototype map; reserved-name arguments remain literal keys. AST≤2000 nodes/depth30, raw braces≤64 levels, values depth20. Native Intl data/timezone affect formatting. Each text field is limited to 32 KiB; complete output to 1 MiB. Runs in a one-second local Worker, with no network requests.