# mathiasbynens/punycode.js

A robust Punycode converter that fully complies to RFC 3492 and RFC 5891.

Repository: https://github.com/mathiasbynens/punycode.js
Canonical: https://ross.abutalabs.com/products/punycodejs
Homepage: https://mths.be/punycode
Language: JavaScript
License: MIT
License Family: permissive
Last push: 2024-04-18T16:14:56+00:00

## Health v2 (maintenance only)
Score: 23/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 0, release rhythm 8, longevity 100
- inputs: {"age_days": 5409, "days_push": 867, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1689, forks 168 (observed 2026-08-28T04:05:22.405303+00:00)

## What it is
Punycode.js is a robust JavaScript library for converting between Punycode (ASCII) and Unicode strings, fully compliant with RFC 3492 and RFC 5891. It works in modern Node.js and browsers and was formerly bundled with Node.js core.

## Use cases
- convert internationalized domain names to punycode
- decode punycode domain labels to unicode
- convert punycode email addresses to unicode
- handle IDN domains in URLs
- encode non-ASCII hostname labels for DNS
- validate and convert IDNA domain strings

## When to choose
- you need standards-compliant punycode conversion in JavaScript
- you handle internationalized domain names or email addresses in Node.js or the browser
- you need a small, well-tested library with no dependencies

## When to avoid
- you only need punycode in modern Node.js and are fine with the deprecated built-in module
- your project must support pre-ES2015 runtimes without using the older v1.4.1 release
- you need full IDNA processing (mapping, normalization) rather than just punycode encoding/decoding

## Facets
- artifact type: library
- maturity: stable
- function: serialization, parser, developer-tools
- domain: web-development, networking, apis
- platform: browser, cross-platform
- tags: punycode, idn, idna, unicode, dns, domain-names, rfc3492, rfc5891, url, internationalization, nodejs, javascript

## Member repositories
- mathiasbynens/punycode.js (main) score 23

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:22.405303+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:38:41.538053+00:00, confidence not recorded.
  - readme: https://github.com/mathiasbynens/punycode.js (fetched 2026-08-28T04:05:22.405303+00:00, sha 594e40a360d7)
  - homepage: https://mths.be/punycode (fetched 2026-08-29T11:13:48.755118+00:00, sha 9a129438f3f9)
  - registry_npm: https://registry.npmjs.org/punycode.js (fetched 2026-08-29T11:13:48.764157+00:00, sha b064745190d8)
- Data as of 2026-08-30T08:39:29.467469+00:00.
