A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.
93
Quality
Pending
Does it follow best practices?
Impact
93%
1.17xAverage score across 10 eval scenarios
Preserve surrogate edge cases without mutating provided code point arrays
Decode via ucs2.decode
100%
0%
Encode via ucs2.encode
100%
100%
Input array intact
100%
100%
Lone surrogate preservation
100%
100%
Roundtrip with supplementary
100%
100%
Decode Punycode label to Unicode
Domain decoding
100%
66%
Email domain
100%
80%
ASCII passthrough
80%
33%
Error propagation
100%
66%
Prefix handling
100%
66%
Encode Unicode label to Punycode
punycode usage
14%
85%
mañana result
0%
100%
bücher result
0%
100%
ASCII passthrough
66%
100%
RangeError propagation
100%
100%
UCS-2 code point encode/decode helpers
Use decode
100%
100%
Lone surrogates
100%
100%
Use encode
100%
100%
No mutation
100%
100%
Proper import
100%
100%
Decode punycoded labels case-insensitively
Domain decoding
0%
100%
Prefix casing
100%
100%
Leave ASCII
0%
100%
Email domains
50%
100%
Idempotent use
100%
100%
Normalize IDNA separators and isolate email local parts
toASCII conversion
100%
100%
Separator mapping
100%
100%
Email isolation
100%
100%
toUnicode decoding
100%
100%
ASCII stability
100%
100%
Expose package version string
Source is punycode.version
100%
100%
Exact value
100%
100%
Formatting uses source
100%
100%
Semver fidelity
100%
100%
Consistent reads
100%
100%
Signal RangeError on invalid digits or overflow during encode/decode
Decode via punycode
100%
100%
Encode via punycode
100%
100%
Invalid digit RangeError
100%
100%
Overflow RangeError
100%
100%
Convert domains/emails to ASCII punycode
Import punycode
100%
100%
Domain conversion
100%
100%
Email domain handling
100%
100%
Separator normalization
0%
100%
Idempotent ASCII passthrough
50%
100%
Convert domains/emails to Unicode
Domain decoding
28%
100%
Separator handling
100%
100%
Email domain conversion
100%
100%
Idempotent behavior
53%
100%
Error propagation
30%
100%
Install with Tessl CLI
npx tessl i tessl/npm-punycode