IP Address Class & Range Calculator
ANA›Life Services Authority›National Calculator Authority›IP Address Class & Range Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
IP Address Class & Range Calculator
Enter an IPv4 address to determine its class, default subnet mask, usable host range, broadcast address, and number of hosts.
IPv4 Address
Custom Subnet Mask (optional)
Calculate
function ipCalc() { const resultDiv = document.getElementById('ip-result'); const ipStr = document.getElementById('ip-address').value.trim(); const subnetStr = document.getElementById('ip-subnet').value.trim();
// ── Validation helpers ────────────────────────────────────────────────────── function parseIP(str) { const parts = str.split('.'); if (parts.length !== 4) return null; const nums = parts.map(Number); if (nums.some(n => isNaN(n) || n 255 || String(n) !== parts[nums.indexOf(n)])) return null; return nums; }
function ipToInt(parts) { return ((parts[0] >> 0; }
function intToIP(n) { return [ (n >>> 24) & 0xFF, (n >>> 16) & 0xFF, (n >>> 8) & 0xFF, n & 0xFF ].join('.'); }
function maskFromCIDR(cidr) { if (cidr === 0) return 0; return (0xFFFFFFFF >> 0; }
function countOnes(n) { let c = 0; while (n) { c += n & 1; n >>>= 1; } return c; }
function isValidMask(parts) { const n = ipToInt(parts); // A valid mask has all 1s followed by all 0s const inv = (~n) >>> 0; return (inv & (inv + 1)) === 0; }
// ── Parse IP ──────────────────────────────────────────────────────────────── if (!ipStr) { resultDiv.innerHTML = 'Please enter an IPv4 address.
'; return; }
const ipParts = parseIP(ipStr); if (!ipParts) { resultDiv.innerHTML = 'Invalid IPv4 address. Each octet must be 0–255.
'; return; }
const firstOctet = ipParts[0];
// ── Special / reserved ranges ─────────────────────────────────────────────── let special = ''; if (firstOctet === 0) special = 'Reserved (this network)'; if (firstOctet === 127) special = 'Loopback (127.0.0.0/8)'; if (firstOctet >= 224 && firstOctet = 240) special = 'Reserved / Experimental (Class E)';
// ── Determine class & default mask ───────────────────────────────────────── let ipClass, defaultMaskInt, defaultCIDR;
if (firstOctet >= 1 && firstOctet = 128 && firstOctet = 192 && firstOctet = 224 && firstOctet 32) { resultDiv.innerHTML = 'Invalid CIDR prefix length (0–32).
'; return; } maskInt = maskFromCIDR(cidr); } else { const maskParts = parseIP(subnetStr); if (!maskParts || !isValidMask(maskParts)) { resultDiv.innerHTML = 'Invalid subnet mask. Must be a valid contiguous mask (e.g. 255.255.255.0).
'; return; } maskInt = ipToInt(maskParts); cidr = countOnes(maskInt); } } else if (defaultMaskInt !== null) { maskInt = defaultMaskInt; cidr = defaultCIDR; } else { maskInt = null; cidr = null; }
// ── Compute network info ──────────────────────────────────────────────────── const ipInt = ipToInt(ipParts); let networkAddr, broadcastAddr, firstHost, lastHost, totalHosts, usableHosts;
if (maskInt !== null) { networkAddr = (ipInt & maskInt) >>> 0; broadcastAddr = (networkAddr | (~maskInt >>> 0)) >>> 0; firstHost = cidr = 16 && ipParts[1] ';
html += IP Address${ipStr};
html += Class${ipClass}${special ? ' — *' + special + '*' : ''};
html += Private Address${isPrivate ? '✅ Yes (RFC 1918)' : '❌ No (Public)'};
if (defaultCIDR !== null) {
html += Default Mask${intToIP(defaultMaskInt)} /${defaultCIDR};
}
if (maskInt !== null) {
html += Applied Subnet Mask${intToIP(maskInt)} /${cidr};
html += Network Address${intToIP(networkAddr)};
html += Broadcast Address${intToIP(broadcastAddr)};
if (cidr First Usable Host${intToIP(firstHost)};
html +=Last Usable Host${intToIP(lastHost)};
}
html +=Total Addresses${totalHosts.toLocaleString()};
html +=Usable Hosts${usableHosts.toLocaleString()}`;
}
html += ''; resultDiv.innerHTML = html; }
// Allow Enter key to trigger calculation document.getElementById('ip-address').addEventListener('keydown', e => { if (e.key === 'Enter') ipCalc(); }); document.getElementById('ip-subnet').addEventListener('keydown', e => { if (e.key === 'Enter') ipCalc(); });
#### Formulas
Network Address = IP & Subnet Mask (bitwise AND)
Broadcast Address = Network Address | ~Subnet Mask (bitwise OR with inverted mask)
First Usable Host = Network Address + 1
Last Usable Host = Broadcast Address − 1
Total Addresses = 2(32 − CIDR prefix)
Usable Hosts = Total Addresses − 2 (subtract network & broadcast; for /31 and /32 no subtraction)
#### Assumptions & References
- Class A: 1.0.0.0 – 126.255.255.255, default mask /8 (16,777,214 usable hosts).
- Class B: 128.0.0.0 – 191.255.255.255, default mask /16 (65,534 usable hosts).
- Class C: 192.0.0.0 – 223.255.255.255, default mask /24 (254 usable hosts).
- Class D: 224.0.0.0 – 239.255.255.255 — Multicast; no standard host mask.
- Class E: 240.0.0.0 – 255.255.255.255 — Reserved / Experimental.
More Calculators
- Frame Rate & Delta Time Calculator
- Player Progression Curve Calculator
- Loot Drop Probability Calculator
- Structural Drying Equipment Needs Calculator
- Identity Verification Confidence Score Calculator
- Verification Process Turnaround Time Estimator
- EV Home Charging Cost Calculator (Virginia Electricity Rates)
- Insurance Claim Settlement Estimator
- Subrogation Recovery Estimator
- Bad Faith Insurance Damages Calculator
- National Insurance Credits Eligibility Calculator
- Claim Denial Appeal Deadline Calculator
Read Next
External Review Eligibility Checker ANA › Life Services Authority › National Calculator Authority › External Review Eligibility Checker .calc-container {...
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...