Check if an IPv4 or IPv6 address is contained in the given CIDR subnet.
- Small
- Fast
- Simple syntax
- Full test coverage
- TypeScript-friendly
- Zero dependencies
- 🆕 Browser-friendly
See the 📖 Reference page for complete documentation.
npm install is-in-subnet
This module is compatible with Browserify and other bundling tools. If you prefer to load it as a single file from a CDN:
- https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.js
- https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.min.js
The module is loaded as a global named isInSubnet
.
const { isInSubnet } = require('is-in-subnet');
console.log(isInSubnet('10.5.0.1', '10.4.5.0/16')); // false
console.log(isInSubnet('10.5.0.1', '10.4.5.0/15')); // true
console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f53b::1:1/48')); // false
console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f531::1:1/44')); // true
console.log(isInSubnet.isInSubnet('10.5.0.1', '10.4.5.0/16'));
// if you don’t like that syntax, you may use this instead:
console.log(isInSubnet.check('10.5.0.1', '10.4.5.0/16'));
- You can pass an array instead of a single subnet.
const inAnySubnet = isInSubnet('10.5.0.1', ['10.4.5.0/16', '192.168.1.0/24']);
createChecker(subnetOrSubnets)
returns a function used to check an address
const checker = createChecker(['10.4.5.0/16', '192.168.1.0/24']);
console.log(checker('10.5.0.1')); // true
isPrivate(address)
— Private addresses (like192.168.0.0
)isLocalhost(address)
— Localhost addresses (like::1
)
And more. See the documentation.
isIPv4(address)
,isIPv6(address)
,isIP(address)
— works just like the similarly-named functions in Node’snet
module.