NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
An internationalized hostname validator as defined by RFC5890, RFC5891, RFC5892, RFC5893, RFC3492 and UTS#46
Last release 1 months ago
14 Sep 2026
Ships unpredictably
gaps range from 8 days to 8 months
Most releases are documented
notes for 19 of 30 stable releases
Nothing withdrawn
no release was ever pulled
12 months old
30 releases · first in 2025
One column per month.
Accepts one terminal U+002E, U+FF0E, U+3002, or U+FF61 separator as the DNS root marker.
IdnaTestV2.txt trailing-root vectors in conformance testing.All 6,336 tests and six benchmark scenarios passed.
Published on npm as latest.
Migrates test and benchmark dispatchers to the gh-workspace-data v0.5.0 traversal APIs.
gh-workspace-data v0.5.0 traversal APIs.All 6,324 tests and six benchmark scenarios passed. There are no runtime API or Unicode 17 validator behavior changes.
Published on npm as latest.
This patch restores executable verification for the Unicode 17 release line through shared public workspace data.
This patch restores executable verification for the Unicode 17 release line through shared public workspace data.
node:test dispatcher and npm test entry point.IdnaTestV2.txt concern with 6,202 applicable nontransitional vectors.isIdnHostname and idnHostname, including exact expected ToASCII output for valid vectors.npm run benchmark with isolated package loading and five function scenarios.>=24.13.1 <25 || >=26.0.0.gh-workspace-data v0.4.1 runtime helper explicitly.There are no runtime API or validator behavior changes. This package remains on the Unicode 17 data line.
Published on npm as latest.
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satis
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satisfy the 63-character label and 253-character presentation limits, and do not contain -- in positions 3 and 4 now avoid Unicode mapping, Punycode, contextual, and bidi validation.
Reserved labels, including xn-- A-label candidates, continue through the complete IDNA pipeline. idnHostname continues to apply UTS #46 mapping when producing output, including lowercase conversion of uppercase ASCII input.
On Node.js 24.20.0, the fast path validated the representative 86-character ASCII hostnames at approximately 1.14 million validations per second on the benchmark system.
IdnaTestV2.txt vectors passed.Upgrade the bundled UTS #46 and IDNA2008 data from Unicode 16.0.0 to Unicode 17.0.0. This release continues to use nontransitional processing with STD
Upgrade the bundled UTS #46 and IDNA2008 data from Unicode 16.0.0 to Unicode 17.0.0. This release continues to use nontransitional processing with STD3 rules disabled during preprocessing and ships one deterministic Unicode table.
Install this release line explicitly with:
npm install idn-hostname@17Unicode 17.0 expands the accepted repertoire. Exhaustive comparison of the complete compact tables found no change to final eligibility, preprocessing behavior, existing mappings, viramas, bidi classes, or joining types that invalidates an input accepted by the Unicode 16 release line.
Runtime compatibility and selection of the appropriate package release remain the consumer's responsibility.
Qualification used Node.js 24.13.1 with Unicode 17.0 and ICU 78.2.
IdnaTestV2.txt vectors passed.Accepts one terminal U+002E, U+FF0E, U+3002, or U+FF61 separator as the DNS root marker.
IdnaTestV2.txt trailing-root vectors in conformance testing.All 6,327 tests and six benchmark scenarios passed.
Published on npm with the unicode-16.0 tag.
Migrates test and benchmark dispatchers to the gh-workspace-data v0.5.0 traversal APIs.
gh-workspace-data v0.5.0 traversal APIs.All 6,315 tests and six benchmark scenarios passed. There are no runtime API or Unicode 16 validator behavior changes.
Published on npm with the unicode-16.0 tag.
This patch restores executable verification for the Unicode 16 release line through shared public workspace data.
This patch restores executable verification for the Unicode 16 release line through shared public workspace data.
node:test dispatcher and npm test entry point.IdnaTestV2.txt concern with 6,200 applicable nontransitional vectors.isIdnHostname and idnHostname, including exact expected ToASCII output for valid vectors.npm run benchmark with isolated package loading and five function scenarios.>=22.12.0 <23 || >=24.0.0.gh-workspace-data v0.4.1 runtime helper explicitly.There are no runtime API or validator behavior changes. This package remains on the Unicode 16 data line.
Published on npm with the unicode-16.0 tag.
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satis
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satisfy the 63-character label and 253-character presentation limits, and do not contain -- in positions 3 and 4 now avoid Unicode mapping, Punycode, contextual, and bidi validation.
Reserved labels, including xn-- A-label candidates, continue through the complete IDNA pipeline. idnHostname continues to apply UTS #46 mapping when producing output, including lowercase conversion of uppercase ASCII input.
IdnaTestV2.txt vectors passed.Upgrade the bundled UTS #46 and IDNA2008 data from Unicode 15.1.0 to Unicode 16.0.0. This release continues to use nontransitional processing with STD
Upgrade the bundled UTS #46 and IDNA2008 data from Unicode 15.1.0 to Unicode 16.0.0. This release continues to use nontransitional processing with STD3 rules disabled during preprocessing and ships one deterministic Unicode table.
Install this release line explicitly with:
npm install idn-hostname@16Unicode 16.0 expands the accepted repertoire. Existing mappings and final/preprocessing eligibility remain additive, with one relevant property correction:
U+1171E AHOM CONSONANT SIGN MEDIAL RA
Bidi_Class: NSM -> L
Joining_Type: T -> U
Consequently, labels whose validity depends on the Unicode 15.1 properties of U+1171E can become invalid under RFC 5893 bidi or RFC 5892 CONTEXTJ validation. The README includes examples for both cases.
Runtime compatibility and selection of the appropriate package release remain the consumer's responsibility.
IdnaTestV2.txt vectors passed.Accepts one terminal U+002E, U+FF0E, U+3002, or U+FF61 separator as the DNS root marker.
IdnaTestV2.txt trailing-root vectors in conformance testing.All 6,248 tests and six benchmark scenarios passed.
Published on npm with the unicode-15.1 tag.
Migrates test and benchmark dispatchers to the gh-workspace-data v0.5.0 traversal APIs.
gh-workspace-data v0.5.0 traversal APIs.All 6,197 tests and six benchmark scenarios passed. There are no runtime API or Unicode 15.1 validator behavior changes.
Published on npm with the unicode-15.1 tag.
This patch restores executable verification for the Unicode 15.1 release line through shared public workspace data.
This patch restores executable verification for the Unicode 15.1 release line through shared public workspace data.
node:test dispatcher and npm test entry point.isIdnHostname callback.IdnaTestV2.txt concern with 6,089 applicable nontransitional vectors.isIdnHostname and idnHostname, including exact expected ToASCII output for valid vectors.npm run benchmark with isolated package loading and five function scenarios.>=20.12.0 <21 || >=22.0.0.gh-workspace-data v0.4.1 runtime helper explicitly.There are no runtime API or validator behavior changes. This package remains on the Unicode 15.1 data line.
Published on npm with the unicode-15.1 tag.
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satis
Add a validated fast path for non-reserved ASCII LDH hostnames. Hostnames whose labels contain only ASCII letters, digits, and internal hyphens, satisfy the 63-character label and 253-character presentation limits, and do not contain -- in positions 3 and 4 now avoid Unicode mapping, Punycode, contextual, and bidi validation.
Reserved labels, including xn-- A-label candidates, continue through the complete IDNA pipeline. idnHostname continues to apply UTS #46 mapping when producing output, including lowercase conversion of uppercase ASCII input.
IdnaTestV2.txt vectors passed.Correct RFC 5892 Appendix A.4 validation for U+0375 GREEK LOWER NUMERAL SIGN. The validator now checks the Script property of the immediately followin
Correct RFC 5892 Appendix A.4 validation for U+0375 GREEK LOWER NUMERAL SIGN. The validator now checks the Script property of the immediately following character rather than matching the complete remaining label suffix.
This fixes both boundaries:
SyntaxError objects apply to the three validator functions, not the separately exported low-level Punycode dependency.The bundled Unicode target remains Unicode 15.1.0.
IdnaTestV2.txt vectors passed.The README installation command now selects the Unicode 15.1 release line explicitly:
The README installation command now selects the Unicode 15.1 release line explicitly:
npm install idn-hostname@15.1This installs the latest 15.1.x patch without automatically selecting a different Unicode release line.
This patch changes documentation and package metadata only. Validation behavior and the bundled Unicode 15.1.0 table are unchanged.
IdnaTestV2.txt vectors passed.The package major and minor version components identify the targeted Unicode major and minor version.
The 15.1.x release line continues to target Unicode 15.1.0. This patch changes documentation and package metadata only; validation behavior and the bundled Unicode table are unchanged.
IdnaTestV2.txt vectors passed.Moved the package validation fixtures out of the canonical repository and into public workspace data.
#/ exclusion used for materialized workspace data.Tests section.gh-workspace-data.This update separates UTS #46 preprocessing from final IDNA eligibility.
This update separates UTS #46 preprocessing from final IDNA eligibility.
A source code point may be permitted during nontransitional preprocessing but still be invalid after mapping and NFC. Conversely, a preprocessing sequence such as Hangul Jamo may normalize into a valid final syllable. The validator now represents and checks those phases independently without adding another label scan.
The update also corrects ACE handling and the RFC 5892 ZWNJ joining-context check.
uts46_ranges overrides and falls back to ranges.ranges.This resolves cases that one combined property could not represent:
ij.a᠌b validates as ab.xn-- prefix created by mapping is recognized and validated as ACE.xn--u-ccb no longer passes by being normalized into validity.Mapped/NFC output and decoded ACE output are checked against the final/default ranges. Only valid and nontransitional deviation properties are accepted at this stage.
The final check reuses the existing IdnaUnicodeError and runs inside the existing contextual loop. Length, hyphen, and leading-mark checks retain their current ordering.
The RFC 5892 Appendix A.1 check now correctly requires:
L or D as the nearest non-transparent joining type on the left; andR or D as the nearest non-transparent joining type on the right.A ZWNJ immediately following a virama remains accepted. The correction preserves the existing joining-type accumulator, loop, exception type, and error text.
The compact condition was compared with the RFC rule across 597,870 synthetic joining sequences, including transparent characters and both joining types found among Unicode 15.1 viramas, with no mismatch.
The compact table is generated directly from authoritative Unicode 15.1.0 text files:
IdnaMappingTable.txt;DerivedCombiningClass.txt;DerivedJoiningType.txt;DerivedBidiClass.txt.IdnaTestV2.txt provides the official qualification vectors.
The validator continues to ship one immutable table and does not select a Unicode version at runtime. Unicode text files remain the source of truth; generation and exhaustive source-fidelity checks stay outside the validator package.
Current compact data totals:
| Data | Count |
|---|---|
| Final/default ranges | 2,034 |
| Preprocessing override ranges | 452 |
| Code points covered by preprocessing overrides | 9,490 |
| Preprocessing mappings | 6,239 |
| Viramas | 65 |
| Bidi ranges | 1,530 |
| Joining-type ranges | 506 |
The preprocessing overrides cover 8,900 valid and 590 mapped code points.
The exact candidate implementation and Unicode 15.1 table pass:
Validator test suite 102 / 102
Applicable IdnaTestV2 cases 6077 / 6077
The 102-case validator suite includes focused coverage for:
The qualification adapter separately records:
NV8/XV8 cases outside the validator's final policy;The runtime versions record test provenance; classification remains based on the bundled Unicode 15.1 table.
The generated data also passes exhaustive source-fidelity, range coverage, ordering, overlap, scalar, derived-property, and deterministic-rebuild checks.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →