rowbot/idna
rowbot/idna provides IDNA 2008 and UTS #46 processing for PHP: convert internationalized domain names to ASCII (Punycode) and back, with validation and normalization for safe, spec-compliant handling of Unicode domains.
münchen.de, Arabic or CJK domains). This package provides UTS#46 to-ASCII/to-Unicode conversion, so you can store canonical punycode for DNS/HTTP and display Unicode to users.ß and ς behave closer to what users see in browsers.ext-intl/ICU or symfony/polyfill-intl-idn. Relevant if you want IDNA behavior without a native extension or host-ICU dependency.Consider it when:
ext-intl is not guaranteed across environments (shared hosting, minimal containers, CI) or ICU versions differ between dev and production, and you need deterministic IDNA behavior in userland.rowbot/url ecosystem or need pure-PHP URL parsing with IDN support.Look elsewhere when:
ext-intl is available and acceptable — it is simpler, faster, and widely exercised. Wrap it behind your own interface and move on.egulias/email-validator or equivalent.symfony/polyfill-intl-idn unless you have a specific reason to standardize on this implementation.To executives: “This is a small MIT-licensed PHP component that lets us support international domain names without adding a native extension. It would let us serve customers on Unicode domains, canonicalize them safely for DNS and HTTP, and control whether users see Unicode or punycode. The trade-off is maintenance risk: it is a low-adoption project, so we would wrap it behind our own interface, pin the version, and keep a fallback to ext-intl or a polyfill. Recommendation: a time-boxed spike, not a platform bet.”
To engineering: “UTS#46 toASCII/toUnicode in pure PHP, no ICU dependency. Use it at boundaries: validation, storage as punycode, display as Unicode. Do not treat it as an email validator or a spoof detector. Add conformance tests from Unicode IDNA test data, pin the Composer version, and hide it behind an internal Idn service so we can swap to ext-intl or symfony/polyfill-intl-idn. Watch release cadence and be prepared to fork — MIT makes that viable.”
How can I help you explore Laravel packages today?