ipaddr.js

A dependency-free JavaScript library for parsing, validating, and manipulating IPv4 and IPv6 addresses.

Library
npm
v2.5.0
651stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
63/100Good
Development Activity72
Maintenance24
Community76
Maturity60
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
80/100Excellent
Architecture80
Code Quality82
Innovation74
Learning Curve85

ipaddr.js is a small, dependency-free library for working with IPv4 and IPv6 addresses in JavaScript, running equally well in Node.js and the browser. It parses and validates addresses, matches them against CIDR ranges, classifies them into named ranges such as loopback, private, and reserved, and converts freely between string, byte-array, and IPv4/IPv6 representations.

With over 100 million weekly downloads it is one of the most widely relied-upon networking primitives in the JavaScript ecosystem, used under the hood by Express, proxies, and countless server frameworks to interpret client addresses and enforce trusted-network rules.

What You Get

  • Safe validation helpers (isValid, isValidCIDR) that never throw, plus strict parse functions for both IPv4 and IPv6
  • CIDR-aware parsing and matching via parseCIDR and match, including network and broadcast address derivation
  • Built-in range classification (loopback, private, linkLocal, multicast, reserved, carrierGradeNat, and more) through range() and subnetMatch
  • Conversion between string, byte-array, and normalized/RFC 5952 forms, plus IPv4-mapped IPv6 handling via process()
  • Bundled TypeScript declarations and zero runtime dependencies for use in Node.js or the browser

Common Use Cases

  • Validating and normalizing user- or client-supplied IP addresses in web servers and APIs
  • Enforcing allow/deny lists by matching request addresses against trusted CIDR ranges
  • Resolving real client IPv4 addresses from IPv4-mapped IPv6 connections on dual-stack sockets
  • Classifying addresses as private, loopback, or public to drive security and routing decisions

Under The Hood

Architecture - The entire library lives in a single UMD module, lib/ipaddr.js (~1,100 lines), wrapped in an IIFE that exports to CommonJS, AMD, or a browser global. It defines two peer classes, IPv4 and IPv6, each carrying static factory/validation methods (parse, isValid, parseCIDR, broadcastAddressFromCIDR) and instance methods (match, range, toByteArray, toString). A shared matchCIDR helper drives all subnet comparisons at the byte level, while regular expressions precompiled at module load (fourOctet, native, transitional) recognise the many legal notations before parsing normalizes them into fixed octet or part arrays.

Tech Stack - Pure JavaScript targeting Node.js 10+ with no runtime dependencies. It ships CommonJS (“type”: “commonjs”) with a hand-written TypeScript declaration file (lib/ipaddr.d.ts). Tooling is minimal: ESLint 10 for linting and the built-in node —test runner with experimental coverage for tests; there is no build step, bundler, or transpiler since the source is published as-is.

Code Quality - The code is disciplined and well-factored: strict mode throughout, const/let, small single-purpose functions, and named range tables kept as declarative data rather than branching logic. Errors are surfaced by throwing on invalid parse input while validation entry points stay non-throwing. Test coverage is thorough - test/ipaddr.test.js is roughly 41 KB, comparable in size to the source itself, exercising parsing edge cases, CIDR math, range classification, and the exotic inet_aton notations.

API Design - The public surface is small, symmetric, and highly ergonomic: the same verbs (parse, isValid, match, range, toString) appear on the global namespace and on both address classes, so knowledge transfers directly between IPv4 and IPv6. parseCIDR returns a tuple that plugs straight into match, minimising boilerplate. The README is extensive with per-method examples, and bundled type declarations give first-class editor support, keeping the learning curve gentle for anyone who has worked with IP addresses before.

Used by 32 apps in this directory

TypeScript
99%
Other

Activepieces

Automation · AI Assistants

23,887

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
65
Dependency
Built with
TypeScript99%
Updated today
TypeScript
94%
MIT

Actual

Invoicing Finance

28,224

Local-first personal finance with envelope budgeting, end-to-end encryption, and multi-device sync — no subscription required.

View details
93
Repo Health
85
Technical
77
Dependency
Built with
TypeScript94%
Updated yesterday
TypeScript
96%
Other

Cal.diy

Scheduling

47,796

The 100% MIT-licensed, community-driven scheduling platform — self-host your own booking infrastructure with no enterprise strings attached.

View details
93
Repo Health
86
Technical
66
Dependency
Built with
TypeScript96%
Updated 1 weeks ago
TypeScript
99%
AGPL 3.0

Cherry Studio

AI Assistants

50,753

All-in-one AI desktop client with 300+ assistants and multi-model support

View details
88
Repo Health
84
Technical
71
Dependency
Built with
TypeScript99%
Updated today
TypeScript
98%
Apache 2.0

Codebuff

AI Code Assistants

9,981

An open-source AI coding assistant that coordinates specialized agents to edit your codebase from natural language — including Freebuff, a free, ad-supported version powered entirely by open-source models like DeepSeek and Kimi.

View details
84
Repo Health
71
Technical
68
Dependency
Built with
TypeScript98%
Updated today
JavaScript
82%
Other

Countly

Analytics · Marketing

5,887

Privacy-first, self-hosted analytics and customer engagement platform with full data ownership, GDPR compliance, and AI-powered insights across mobile, web, desktop, and IoT.

View details
96
Repo Health
82
Technical
68
Dependency
Built with
JavaScript82%
Updated today
Rust
66%
Other

DefGuard

Security · Networking · Authentication

2,805

Self-hosted secure remote access that unifies WireGuard VPN, identity management, and connection-level MFA in one open-source platform.

View details
85
Repo Health
82
Technical
77
Dependency
Built with
Rust66%
TypeScript32%
Updated today
TypeScript
80%
Other

Directus

CMS · Low Code Platforms

37,462

Connect any SQL database and get instant REST and GraphQL APIs, a visual management Studio, and a native MCP server for AI agents — free for most organizations.

View details
93
Repo Health
82
Technical
78
Dependency
Built with
TypeScript80%
Vue18%
Updated yesterday
TypeScript
89%
Other

FastGPT

AI Agents · AI Development

29,387

Build, debug, and deploy knowledge-based AI agents with a visual workflow editor, RAG retrieval, and support for any OpenAI-compatible LLM.

View details
93
Repo Health
84
Technical
70
Dependency
Built with
TypeScript89%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search