
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
@se-oss/ip-address
Advanced tools
A modern, immutable, and zero-dependency library for working with IPv4 and IPv6 addresses in JavaScript and TypeScript.
@se-oss/ip-address is a modern, immutable, and zero-dependency library for working with IPv4 and IPv6 addresses in JavaScript and TypeScript.
npm install @se-oss/ip-address
pnpm
pnpm install @se-oss/ip-address
yarn
yarn add @se-oss/ip-address
This library makes working with IP addresses a breeze. Here are a few common scenarios:
You can easily parse any IP address string. The library will automatically figure out the version and throw an error if the address is invalid.
import { IPv4, IPv6, parseIP } from '@se-oss/ip-address';
// Let the factory do the work
const ip = parseIP('192.168.1.1'); // Returns an IPv4 instance
const ip6 = parseIP('2001:db8::1'); // Returns an IPv6 instance
console.log(ip.version); // 4
console.log(ip6.version); // 6
// Or validate without creating an instance
if (IPv4.isValid('10.0.0.1')) {
console.log('Yep, a valid IPv4 address.');
}
try {
parseIP('not.an.ip');
} catch (error) {
console.error(error.message); // "Invalid IP address: not.an.ip"
}
Once you have an IPv4 instance, you can perform all sorts of checks and conversions.
import { IPv4 } from '@se-oss/ip-address';
const ip = new IPv4('192.168.1.1');
// Check its type
console.log(ip.isPrivate()); // true
console.log(ip.isLoopback()); // false
// Convert it
console.log(ip.toBigInt()); // 3232235777n
console.log(ip.toBytes()); // [192, 168, 1, 1]
console.log(ip.toArpa()); // "1.1.168.192.in-addr.arpa"
// Get the next IP
const nextIp = ip.next();
console.log(nextIp.address); // "192.168.1.2"
IPv6 is just as easy, with full support for its unique features.
import { IPv6 } from '@se-oss/ip-address';
const ip6 = new IPv6('2001:db8::8a2e:370:7334');
// Get compressed vs. expanded address
console.log(ip6.address); // "2001:db8::8a2e:370:7334"
console.log(ip6.expandedAddress); // "2001:0db8:0000:0000:0000:8a2e:0370:7334"
// Check its type
console.log(ip6.isGlobalUnicast()); // true
console.log(ip6.isLinkLocal()); // false
// Handle IPv4-mapped addresses
const mappedIp = new IPv6('::ffff:192.168.1.1');
console.log(mappedIp.isIPv4Mapped()); // true
const ipv4 = mappedIp.toIPv4();
console.log(ipv4.address); // "192.168.1.1"
Need to work with subnets? The CIDR class has you covered.
import { CIDR } from '@se-oss/ip-address';
const cidr = new CIDR('10.0.0.0/24');
// Get network details
console.log(cidr.network.address); // "10.0.0.0"
console.log(cidr.broadcast.address); // "10.0.0.255"
console.log(cidr.first.address); // "10.0.0.1"
console.log(cidr.last.address); // "10.0.0.254"
// Check if an IP falls within the range
console.log(cidr.contains('10.0.0.123')); // true
console.log(cidr.contains('10.0.1.1')); // false
For all configuration options, please see the API docs.
Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub
Thanks again for your support, it is much appreciated! 🙏
MIT © Shahrad Elahi and contributors.
FAQs
A modern, immutable, and zero-dependency library for working with IPv4 and IPv6 addresses in JavaScript and TypeScript.
We found that @se-oss/ip-address demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.