https://github.com/silverwind/ip-bigint
Convert IPv4 and IPv6 addresses to and from BigInt
https://github.com/silverwind/ip-bigint
bigint ip-address javascript module
Last synced: 28 days ago
JSON representation
Convert IPv4 and IPv6 addresses to and from BigInt
- Host: GitHub
- URL: https://github.com/silverwind/ip-bigint
- Owner: silverwind
- License: bsd-2-clause
- Created: 2019-07-07T14:10:57.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2026-05-07T00:52:23.000Z (about 1 month ago)
- Last Synced: 2026-05-07T02:14:06.326Z (about 1 month ago)
- Topics: bigint, ip-address, javascript, module
- Language: TypeScript
- Homepage:
- Size: 1010 KB
- Stars: 13
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# ip-bigint
[](https://www.npmjs.org/package/ip-bigint) [](https://www.npmjs.org/package/ip-bigint) [](https://bundlephobia.com/package/ip-bigint) [](https://packagephobia.com/result?p=ip-bigint) [](https://depx.co/pkg/ip-bigint)
> Convert IPv4 and IPv6 addresses to and from BigInt. Compliant with [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952) and [RFC 4291](https://datatracker.ietf.org/doc/html/rfc4291).
## Usage
```js
import {parseIp, stringifyIp, normalizeIp} from "ip-bigint";
const parsedIp = parseIp("2001:db8::");
// => {number: 42540766411282592856903984951653826560n, version: 6}
stringifyIp(parsedIp);
// => "2001:db8::"
normalizeIp("2001:db8::0:0:1");
// => "2001:db8::1"
```
## API
### parseIp(ip: string)
Parse an IP address string to a `ParsedIP` object.
For IPv4 returns `{number, version}`.
For IPv6 returns `{number, version, [ipv4mapped], [scopeid]}`.
There is only rudimentary validation that the passed string is actually an IP address. You are encouraged to validate yourself using modules like [`ip-regex`](https://github.com/sindresorhus/ip-regex).
### stringifyIp({number, version, [ipv4mapped], [scopeid]}: ParsedIP, opts?: StringifyOpts)
Convert a `ParsedIP` object back to an IP address string.
`opts`: Options `StringifyOpts`
- `compress`: boolean - Whether to compress the IP. For IPv6, this means the "best representation" all-lowercase shortest possible form. Default: `true`.
- `hexify`: boolean - Whether to convert IPv4-Mapped IPv6 addresses to hex. Default: `false`.
- `mapv4`: boolean - Whether to convert IPv4-Mapped IPv6 addresses (e.g. `::ffff:127.0.0.1`) to plain IPv4 (e.g. `127.0.0.1`). Default: `false`.
### normalizeIp(ip: string, opts?: StringifyOpts)
Round-trip an IP address through `parseIp` and `stringifyIp`, effectively normalizing its representation.
`opts`: Options `StringifyOpts`
- `compress`: boolean - Whether to compress the IP. For IPv6, this means the "best representation" all-lowercase shortest possible form. Default: `true`.
- `hexify`: boolean - Whether to convert IPv4-Mapped IPv6 addresses to hex. Default: `false`.
- `mapv4`: boolean - Whether to convert IPv4-Mapped IPv6 addresses (e.g. `::ffff:127.0.0.1`) to plain IPv4 (e.g. `127.0.0.1`). Default: `false`.
### max4
A `bigint` value that holds the biggest possible IPv4 address.
### max6
A `bigint` value that holds the biggest possible IPv6 address.
### ipVersion(ip: string)
Returns a integer of the IP version, 4, 6 or 0 if it's not an IP. Very rudimentary and should not be used for validation.
## Related
- [ip-regex](https://github.com/sindresorhus/ip-regex) - Regular expression for matching IP addresses
- [is-cidr](https://github.com/silverwind/is-cidr) - Check if a string is an IP address in CIDR notation
- [is-ip](https://github.com/sindresorhus/is-ip) - Check if a string is an IP address
- [cidr-regex](https://github.com/silverwind/cidr-regex) - Regular expression for matching IP addresses in CIDR notation
- [cidr-tools](https://github.com/silverwind/cidr-tools) - Tools to work with IPv4 and IPv6 CIDR network lists
## License
© [silverwind](https://github.com/silverwind), distributed under BSD licence