{"id":3444,"date":"2026-10-28T06:05:58","date_gmt":"2026-10-28T13:05:58","guid":{"rendered":"https:\/\/cyber.mag212.com\/tools\/subnet-calculator\/"},"modified":"2026-10-31T10:42:02","modified_gmt":"2026-10-31T17:42:02","slug":"subnet-calculator","status":"publish","type":"page","link":"https:\/\/cyber.mag212.com\/fr\/tools\/subnet-calculator\/","title":{"rendered":"Calculateur de sous-r\u00e9seau IP et de VLSM"},"content":{"rendered":"\n<div class=\"m212x\" id=\"m212-subnet-calculator\">\n<style>\n.m212x{--bg:#0a0f15;--panel:#0f1720;--panel2:#121c27;--line:#1f2d3a;--line2:#2a3b4b;--ink:#e6edf3;--mute:#9fb0c0;--green:#3ee6a0;--red:#ff5468;--cyan:#3cc8f0;--amber:#f6b544;--violet:#a98bff;\n font-family:Inter,system-ui,-apple-system,\"Segoe UI\",sans-serif;color:var(--ink);line-height:1.6;font-size:16px}\n.m212x *{box-sizing:border-box}\n.m212x h2,.m212x h3,.m212x h4,.m212x p,.m212x ul,.m212x ol{margin:0}\n.m212x a{color:var(--cyan)}\n.m212x .hero{position:relative;background:radial-gradient(ellipse at 90% 0%,rgba(60,200,240,.14),transparent 60%),var(--bg);border:1px solid var(--line);border-radius:14px;padding:34px 30px;overflow:hidden;margin-bottom:22px}\n.m212x .hero::before{content:\"\";position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,var(--green),var(--cyan) 60%,var(--red))}\n.m212x .kick{font-size:12px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--cyan);margin-bottom:8px}\n.m212x .hero h2{font-size:clamp(26px,4.6vw,40px);line-height:1.1;font-weight:800;margin-bottom:10px}\n.m212x .hero h2 span{color:var(--green)}\n.m212x .hero p{color:var(--mute);font-size:17px;max-width:680px}\n.m212x .sec{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:22px;scroll-margin-top:110px}\n.m212x .sec h3{font-size:22px;font-weight:800;margin-bottom:8px}\n.m212x .sec h4{font-size:16px;font-weight:800;margin:16px 0 6px}\n.m212x .sec p{color:#cdd8e2;margin-bottom:10px}\n.m212x .lead{color:var(--mute) !important;margin-bottom:16px !important}\n.m212x .grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}\n.m212x .card{display:block;background:var(--panel2);border:1px solid var(--line2);border-radius:10px;padding:18px;text-decoration:none;color:var(--ink)}\n.m212x a.card:hover{border-color:var(--green)}\n.m212x .card b{display:block;font-size:17px;margin-bottom:6px}\n.m212x .card p{color:var(--mute);font-size:14.5px;margin:0}\n.m212x .card .go{display:inline-block;margin-top:10px;font-size:13px;font-weight:800;letter-spacing:.06em;color:var(--green)}\n.m212x .ic{font-size:26px;display:block;margin-bottom:8px}\n.m212x ul.l,.m212x ol.l{padding-left:22px;color:#cdd8e2;margin-bottom:10px}\n.m212x ul.l li,.m212x ol.l li{margin-bottom:6px}\n.m212x table{width:100%;border-collapse:collapse;font-size:14.5px;margin:6px 0 12px}\n.m212x th{text-align:left;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);border-bottom:1px solid var(--line2);padding:8px}\n.m212x td{border-bottom:1px solid var(--line);padding:8px;vertical-align:top;color:#d3dde6}\n.m212x code,.m212x .mono{font-family:\"JetBrains Mono\",\"DejaVu Sans Mono\",Consolas,monospace;font-size:.9em}\n.m212x code{background:rgba(60,200,240,.1);color:#bfe9ff;padding:1px 5px;border-radius:4px}\n.m212x pre{font-family:\"JetBrains Mono\",\"DejaVu Sans Mono\",Consolas,monospace;font-size:13.5px;background:#060a0f;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:6px;padding:12px 14px;overflow-x:auto;color:#cfe8d9;margin:6px 0 12px;white-space:pre}\n.m212x .callout{border:1px solid rgba(246,181,68,.4);background:rgba(246,181,68,.08);border-radius:10px;padding:14px 16px;margin:12px 0}\n.m212x .callout b{color:var(--amber)}\n.m212x .pill{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.06em;padding:2px 9px;border-radius:999px;border:1px solid}\n.m212x .p-n{color:#9fb0c0;border-color:#3a4b5b}\n.m212x .p-l{color:var(--green);border-color:rgba(62,230,160,.5);background:rgba(62,230,160,.08)}\n.m212x .p-m{color:var(--amber);border-color:rgba(246,181,68,.5);background:rgba(246,181,68,.08)}\n.m212x .p-h{color:#ff8a5c;border-color:rgba(255,138,92,.5);background:rgba(255,138,92,.08)}\n.m212x .p-c{color:var(--red);border-color:rgba(255,84,104,.5);background:rgba(255,84,104,.08)}\n.m212x .toc{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}\n.m212x .toc a{font-size:14px;font-weight:700;text-decoration:none;color:var(--ink);background:var(--panel2);border:1px solid var(--line2);border-radius:999px;padding:7px 13px}\n.m212x .toc a:hover{border-color:var(--green);color:var(--green)}\n.m212x input[type=text],.m212x input[type=search],.m212x input[type=url]{width:100%;background:#060a0f;color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:12px 14px;font-size:16px;font-family:inherit}\n.m212x input:focus{outline:2px solid var(--cyan);outline-offset:1px}\n.m212x button{font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;border-radius:8px;padding:11px 16px;border:1px solid var(--line2);background:var(--panel2);color:var(--ink)}\n.m212x button.pri{background:var(--green);color:#04130c;border-color:var(--green)}\n.m212x .help{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:linear-gradient(90deg,rgba(60,200,240,.12),rgba(62,230,160,.05));border:1px solid rgba(60,200,240,.35);border-radius:14px;padding:20px 24px}\n.m212x .help div{flex:1;min-width:240px}\n.m212x .help a.cta{display:inline-block;background:var(--cyan);color:#03141b;font-weight:800;text-decoration:none;border-radius:8px;padding:12px 18px}\n.m212x .small{font-size:13.5px;color:var(--mute)}\n<\/style>\n<section class=\"hero\"><div class=\"kick\">MAG212 CYBER \u00b7 Tools<\/div><h2>IP subnet &amp; VLSM <span>calculator.<\/span><\/h2><p>Type any IPv4 address with a prefix, mask or wildcard. Get the network, broadcast, host range, binary view and ready-to-paste Cisco commands \u2014 then carve a block into right-sized subnets.<\/p><div class=\"toc\"><a href=\"#m212sn-calc\">Subnet calculator<\/a><a href=\"#m212sn-vlsm\">VLSM planner<\/a><a href=\"#m212sn-ref\">Quick reference<\/a><\/div><\/section>\n<style>.m212x .sn-row{display:flex;gap:8px;flex-wrap:wrap}\n.m212x .sn-ex{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 2px}.m212x .sn-ex button{padding:5px 10px;font-size:13px;font-family:\"JetBrains Mono\",\"DejaVu Sans Mono\",monospace}\n.m212x .sn-out{display:none;margin-top:16px}\n.m212x .sn-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:10px;margin-bottom:14px}\n.m212x .sn-kv div{background:#060a0f;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;min-width:0}\n.m212x .sn-kv span{display:block;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}\n.m212x .sn-kv b{font-family:\"JetBrains Mono\",\"DejaVu Sans Mono\",monospace;font-size:16px;color:#e6edf3;word-break:break-all}\n.m212x .sn-bin{font-family:\"JetBrains Mono\",\"DejaVu Sans Mono\",monospace;font-size:13.5px;background:#060a0f;border:1px solid var(--line);border-radius:8px;padding:12px;overflow-x:auto;white-space:nowrap;line-height:1.9;margin-bottom:12px}\n.m212x .sn-bin i{font-style:normal;color:var(--green)}.m212x .sn-bin u{text-decoration:none;color:var(--amber)}.m212x .sn-bin em{font-style:normal;color:var(--mute);display:inline-block;width:92px}\n.m212x .sn-tag{display:inline-block;margin:0 6px 6px 0}\n.m212x .sn-err{color:var(--red);display:none;margin-top:8px}\n.m212x textarea{width:100%;min-height:150px;background:#060a0f;color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:12px 14px;font:15px\/1.5 \"JetBrains Mono\",\"DejaVu Sans Mono\",monospace}\n.m212x .sn-tw{overflow-x:auto;-webkit-overflow-scrolling:touch}.m212x .sn-tw table{min-width:640px}\n.m212x .sn-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}\n@media(max-width:640px){.m212x .sn-bin{font-size:12px}.m212x .sn-bin em{width:70px}}<\/style>\n<section class=\"sec\" id=\"m212sn-calc\"><h3>Subnet calculator<\/h3><p class=\"lead\">Accepts <code>10.20.20.77\/26<\/code>, <code>10.20.20.77 255.255.255.192<\/code> or a Cisco wildcard such as <code>10.20.20.0 0.0.0.63<\/code>.<\/p>\n<div class=\"sn-row\"><input type=\"text\" id=\"m212snin\" value=\"10.20.20.77\/26\" aria-label=\"IPv4 address with prefix, mask or wildcard\" spellcheck=\"false\" autocomplete=\"off\" style=\"flex:1;min-width:220px\"><button type=\"button\" class=\"pri\" id=\"m212sngo\">Calculate<\/button><\/div>\n<div class=\"sn-ex\"><span class=\"small\" style=\"align-self:center\">Try:<\/span><button type=\"button\" data-ex=\"192.168.1.130\/25\">192.168.1.130\/25<\/button><button type=\"button\" data-ex=\"172.16.45.9 255.255.240.0\">172.16.45.9 255.255.240.0<\/button><button type=\"button\" data-ex=\"10.0.0.0 0.0.0.255\">10.0.0.0 0.0.0.255<\/button><button type=\"button\" data-ex=\"203.0.113.1\/31\">203.0.113.1\/31<\/button><button type=\"button\" data-ex=\"100.64.1.20\/10\">100.64.1.20\/10<\/button><\/div>\n<p class=\"small sn-err\" id=\"m212snerr\">Enter an IPv4 address followed by \/prefix (0\u201332), a subnet mask, or a wildcard mask.<\/p>\n<div class=\"sn-out\" id=\"m212snout\">\n<div id=\"m212sntags\"><\/div>\n<div class=\"sn-kv\" id=\"m212snkv\"><\/div>\n<h4>Binary view <span class=\"small\" style=\"font-weight:400\">\u2014 <span style=\"color:var(--green)\">network bits<\/span> \u00b7 <span style=\"color:var(--amber)\">host bits<\/span><\/span><\/h4>\n<div class=\"sn-bin\" id=\"m212snbin\"><\/div>\n<div class=\"sn-head\"><h4>Cisco IOS \/ IOS XE snippets<\/h4><button type=\"button\" id=\"m212sncp\" style=\"padding:6px 12px;font-size:13px\">Copy commands<\/button><\/div>\n<pre id=\"m212sncfg\"><\/pre>\n<p class=\"small\">The interface example uses the address you typed when it is a usable host, otherwise the first usable address. OSPF and ACLs use <b>wildcard masks<\/b> \u2014 learn more in the <a href=\"\/learn\/ospf-cheat-sheet\/\">OSPF cheat sheet<\/a>.<\/p>\n<\/div><\/section>\n<section class=\"sec\" id=\"m212sn-vlsm\"><h3>VLSM planner<\/h3><p class=\"lead\">Give a parent block and one line per subnet (<code>name hosts<\/code>). Subnets are allocated largest-first so every block lands on a valid boundary with no overlap.<\/p>\n<div class=\"sn-row\" style=\"margin-bottom:10px\"><input type=\"text\" id=\"m212vbase\" value=\"10.20.0.0\/22\" aria-label=\"Parent network for VLSM\" spellcheck=\"false\" style=\"flex:1;min-width:200px\"><\/div>\n<textarea id=\"m212vreq\" aria-label=\"Subnet requirements, one per line: name and number of hosts\" spellcheck=\"false\">Users-VLAN20 300\nStaff-VLAN10 120\nVoice-VLAN30 60\nServers 25\nManagement-VLAN99 10\nWAN-to-ISP 2<\/textarea>\n<div class=\"sn-row\" style=\"margin-top:10px\"><button type=\"button\" class=\"pri\" id=\"m212vgo\">Plan subnets<\/button><label class=\"small\" style=\"display:flex;gap:6px;align-items:center\"><input type=\"checkbox\" id=\"m212v31\"> Use \/31 for 2-host point-to-point links<\/label><\/div>\n<p class=\"small sn-err\" id=\"m212verr2\"><\/p>\n<div id=\"m212vout\" style=\"margin-top:14px\"><\/div><\/section>\n<section class=\"sec\" id=\"m212sn-ref\"><h3>Quick reference<\/h3><div class=\"sn-tw\"><table><tr><th>Prefix<\/th><th>Subnet mask<\/th><th>Wildcard<\/th><th>Usable hosts<\/th><\/tr><tr><td class=\"mono\">\/8<\/td><td class=\"mono\">255.0.0.0<\/td><td class=\"mono\">0.255.255.255<\/td><td>16,777,214<\/td><\/tr><tr><td class=\"mono\">\/12<\/td><td class=\"mono\">255.240.0.0<\/td><td class=\"mono\">0.15.255.255<\/td><td>1,048,574<\/td><\/tr><tr><td class=\"mono\">\/16<\/td><td class=\"mono\">255.255.0.0<\/td><td class=\"mono\">0.0.255.255<\/td><td>65,534<\/td><\/tr><tr><td class=\"mono\">\/17<\/td><td class=\"mono\">255.255.128.0<\/td><td class=\"mono\">0.0.127.255<\/td><td>32,766<\/td><\/tr><tr><td class=\"mono\">\/18<\/td><td class=\"mono\">255.255.192.0<\/td><td class=\"mono\">0.0.63.255<\/td><td>16,382<\/td><\/tr><tr><td class=\"mono\">\/19<\/td><td class=\"mono\">255.255.224.0<\/td><td class=\"mono\">0.0.31.255<\/td><td>8,190<\/td><\/tr><tr><td class=\"mono\">\/20<\/td><td class=\"mono\">255.255.240.0<\/td><td class=\"mono\">0.0.15.255<\/td><td>4,094<\/td><\/tr><tr><td class=\"mono\">\/21<\/td><td class=\"mono\">255.255.248.0<\/td><td class=\"mono\">0.0.7.255<\/td><td>2,046<\/td><\/tr><tr><td class=\"mono\">\/22<\/td><td class=\"mono\">255.255.252.0<\/td><td class=\"mono\">0.0.3.255<\/td><td>1,022<\/td><\/tr><tr><td class=\"mono\">\/23<\/td><td class=\"mono\">255.255.254.0<\/td><td class=\"mono\">0.0.1.255<\/td><td>510<\/td><\/tr><tr><td class=\"mono\">\/24<\/td><td class=\"mono\">255.255.255.0<\/td><td class=\"mono\">0.0.0.255<\/td><td>254<\/td><\/tr><tr><td class=\"mono\">\/25<\/td><td class=\"mono\">255.255.255.128<\/td><td class=\"mono\">0.0.0.127<\/td><td>126<\/td><\/tr><tr><td class=\"mono\">\/26<\/td><td class=\"mono\">255.255.255.192<\/td><td class=\"mono\">0.0.0.63<\/td><td>62<\/td><\/tr><tr><td class=\"mono\">\/27<\/td><td class=\"mono\">255.255.255.224<\/td><td class=\"mono\">0.0.0.31<\/td><td>30<\/td><\/tr><tr><td class=\"mono\">\/28<\/td><td class=\"mono\">255.255.255.240<\/td><td class=\"mono\">0.0.0.15<\/td><td>14<\/td><\/tr><tr><td class=\"mono\">\/29<\/td><td class=\"mono\">255.255.255.248<\/td><td class=\"mono\">0.0.0.7<\/td><td>6<\/td><\/tr><tr><td class=\"mono\">\/30<\/td><td class=\"mono\">255.255.255.252<\/td><td class=\"mono\">0.0.0.3<\/td><td>2<\/td><\/tr><tr><td class=\"mono\">\/31<\/td><td class=\"mono\">255.255.255.254<\/td><td class=\"mono\">0.0.0.1<\/td><td>2 (point-to-point, RFC 3021)<\/td><\/tr><tr><td class=\"mono\">\/32<\/td><td class=\"mono\">255.255.255.255<\/td><td class=\"mono\">0.0.0.0<\/td><td>1 (host route)<\/td><\/tr><\/table><\/div>\n<div class=\"callout\"><b>Remember:<\/b> usable hosts = 2<sup>(32 \u2212 prefix)<\/sup> \u2212 2, because the network and broadcast addresses can&#8217;t be assigned. Exceptions: <b>\/31<\/b> gives two usable addresses on point-to-point links (RFC 3021) and <b>\/32<\/b> identifies a single host, such as a loopback.<\/div>\n<p class=\"small\">\ud83d\udd12 Every calculation runs in your browser. Nothing you type is sent or stored.<\/p><\/section>\n<p class=\"small noprint\" style=\"margin:-8px 0 18px;padding:0 4px\">\u2696\ufe0f For education and use on systems you own or are authorised to test. Results are automated guidance, not a professional audit. See our <a href=\"\/terms-of-use\/\">terms of use<\/a> and <a href=\"\/privacy-policy\/\">privacy policy<\/a>.<\/p>\n<div class=\"help\"><div><div class=\"kick\" style=\"margin-bottom:4px\">Need expert help?<\/div>\n<p style=\"font-size:17px;margin:0\"><b>MAG212 CYBER<\/b> offers network and cybersecurity consultation, plus security seminars for organisations around the world.<\/p><\/div>\n<a class=\"cta\" href=\"\/services\/\">Explore our services \u2192<\/a><\/div>\n<script>\n(function(){\nvar root=document.getElementById('m212-subnet-calculator'); if(!root) return;\nfunction P(b){ return Math.pow(2,b); }\nfunction ip2n(s){ var p=String(s).trim().split('.'); if(p.length!==4) return null; var n=0; for(var i=0;i<4;i++){ if(!\/^\\d{1,3}$\/.test(p[i])) return null; var v=+p[i]; if(v>255) return null; n=n*256+v; } return n; }\nfunction n2ip(n){ var o=[]; for(var i=0;i<4;i++){ o.unshift(n%256); n=Math.floor(n\/256); } return o.join('.'); }\nfunction maskN(p){ return P(32)-P(32-p); }\nfunction mask2p(n){ for(var p=0;p<=32;p++){ if(maskN(p)===n) return p; } return -1; }\nfunction parse(s){\n  s=String(s).trim().replace(\/\\s+\/g,' ');\n  var m=s.match(\/^([\\d.]+) ?\\\/ ?(\\d{1,2})$\/);\n  if(m){ var a=ip2n(m[1]), p=+m[2]; if(a===null) return null; if(p>32) return null; return {a:a,p:p,how:'prefix'}; }\n  m=s.match(\/^([\\d.]+) ([\\d.]+)$\/);\n  if(m){ var a2=ip2n(m[1]), k=ip2n(m[2]); if(a2===null) return null; if(k===null) return null;\n    var p2=mask2p(k); if(p2>=1) return {a:a2,p:p2,how:'mask'};\n    var p3=mask2p(P(32)-1-k); if(p3>=0) return {a:a2,p:p3,how:'wildcard'}; return null; }\n  return null;\n}\nvar R=[['0.0.0.0',8,'\"This network\" (RFC 1122)','p-n'],['10.0.0.0',8,'Private (RFC 1918)','p-l'],['100.64.0.0',10,'Shared \/ carrier-grade NAT (RFC 6598)','p-m'],['127.0.0.0',8,'Loopback','p-n'],['169.254.0.0',16,'Link-local \/ APIPA (RFC 3927)','p-m'],['172.16.0.0',12,'Private (RFC 1918)','p-l'],['192.0.0.0',24,'IETF protocol assignments','p-n'],['192.0.2.0',24,'Documentation TEST-NET-1 (RFC 5737)','p-n'],['192.168.0.0',16,'Private (RFC 1918)','p-l'],['198.18.0.0',15,'Benchmarking (RFC 2544)','p-n'],['198.51.100.0',24,'Documentation TEST-NET-2 (RFC 5737)','p-n'],['203.0.113.0',24,'Documentation TEST-NET-3 (RFC 5737)','p-n'],['224.0.0.0',4,'Multicast (class D)','p-h'],['240.0.0.0',4,'Reserved (class E)','p-c']];\nfunction kind(a){ if(a===P(32)-1) return ['Limited broadcast','p-c']; for(var i=0;i<R.length;i++){ var b=P(32-R[i][1]); if(Math.floor(a\/b)===Math.floor(ip2n(R[i][0])\/b)) return [R[i][2],R[i][3]]; } return ['Public (globally routable)','p-h']; }\nfunction cls(a){ var o=Math.floor(a\/P(24)); if(o<128) return 'A'; if(o<192) return 'B'; if(o<224) return 'C'; if(o<240) return 'D'; return 'E'; }\nfunction calc(a,p){\n  var size=P(32-p), net=Math.floor(a\/size)*size, bc=net+size-1, first, last, hosts;\n  if(p<=30){ first=net+1; last=bc-1; hosts=size-2; } else if(p===31){ first=net; last=bc; hosts=2; } else { first=net; last=net; hosts=1; }\n  return {a:a,p:p,size:size,net:net,bc:bc,first:first,last:last,hosts:hosts,mask:maskN(p),wild:size-1};\n}\nfunction bin(n,p){ var s='', bits=''; for(var i=31;i>=0;i--){ bits+=(Math.floor(n\/P(i))%2); } for(var j=0;j<32;j++){ var c=bits.charAt(j); s+= j<p ? '<i>'+c+'<\/i>' : '<u>'+c+'<\/u>'; if(j===7 || j===15 || j===23) s+='.'; } return s; }\nfunction fmt(n){ return n.toLocaleString('en-US'); }\nvar inp=document.getElementById('m212snin'), out=document.getElementById('m212snout'), err=document.getElementById('m212snerr');\nfunction esc(t){ var d=document.createElement('div'); d.textContent=t; return d.innerHTML; }\nfunction run(){\n  var q=parse(inp.value); if(!q){ err.style.display='block'; out.style.display='none'; return; }\n  err.style.display='none'; out.style.display='block';\n  var r=calc(q.a,q.p), k=kind(r.a), c=cls(r.a);\n  var tags='<span class=\"pill '+k[1]+' sn-tag\">'+esc(k[0])+'<\/span><span class=\"pill p-n sn-tag\">Historical class '+c+'<\/span>';\n  if(q.how==='wildcard') tags+='<span class=\"pill p-m sn-tag\">Read as a wildcard mask<\/span>';\n  if(r.a===r.net) if(r.p<31) tags+='<span class=\"pill p-m sn-tag\">This is the network address<\/span>';\n  if(r.a===r.bc) if(r.p<31) tags+='<span class=\"pill p-m sn-tag\">This is the broadcast address<\/span>';\n  document.getElementById('m212sntags').innerHTML=tags;\n  var kv=[['Address',n2ip(r.a)],['CIDR notation',n2ip(r.net)+'\/'+r.p],['Subnet mask',n2ip(r.mask)],['Wildcard mask',n2ip(r.wild)],['Network address',n2ip(r.net)],['Broadcast address',r.p>=31?'n\/a (\/'+r.p+')':n2ip(r.bc)],['First usable host',n2ip(r.first)],['Last usable host',n2ip(r.last)],['Usable hosts',fmt(r.hosts)],['Total addresses',fmt(r.size)]];\n  document.getElementById('m212snkv').innerHTML=kv.map(function(x){ return '<div><span>'+x[0]+'<\/span><b>'+esc(x[1])+'<\/b><\/div>'; }).join('');\n  document.getElementById('m212snbin').innerHTML='<em>Address<\/em>'+bin(r.a,r.p)+'<br><em>Mask<\/em>'+bin(r.mask,r.p)+'<br><em>Network<\/em>'+bin(r.net,r.p)+'<br><em>Broadcast<\/em>'+bin(r.bc,r.p);\n  var host=(r.a>=r.first) ? (r.a<=r.last ? r.a : r.first) : r.first;\n  var cfg='! Interface address (example)\\ninterface GigabitEthernet0\/0\\n ip address '+n2ip(host)+' '+n2ip(r.mask)+'\\n!\\n! OSPF: advertise this subnet\\nrouter ospf 1\\n network '+n2ip(r.net)+' '+n2ip(r.wild)+' area 0\\n!\\n! Standard ACL matching this subnet\\nip access-list standard NET-'+n2ip(r.net).replace(\/\\.\/g,'-')+'-'+r.p+'\\n permit '+n2ip(r.net)+' '+n2ip(r.wild)+'\\n!\\n! Static route to this subnet (replace the next hop)\\nip route '+n2ip(r.net)+' '+n2ip(r.mask)+' 192.0.2.1';\n  document.getElementById('m212sncfg').textContent=cfg;\n}\ndocument.getElementById('m212sngo').addEventListener('click',run);\ninp.addEventListener('keydown',function(e){ if(e.key==='Enter') run(); });\nArray.prototype.forEach.call(root.querySelectorAll('[data-ex]'),function(b){ b.addEventListener('click',function(){ inp.value=b.getAttribute('data-ex'); run(); }); });\ndocument.getElementById('m212sncp').addEventListener('click',function(){ var b=this; try{ navigator.clipboard.writeText(document.getElementById('m212sncfg').textContent).then(function(){ b.textContent='Copied \u2713'; setTimeout(function(){ b.textContent='Copy commands'; },1500); }); }catch(e){} });\nfunction vlsm(base,lines,use31){\n  var q=parse(base); if(!q) return {err:'Enter the parent network as address\/prefix, for example 10.20.0.0\/22.'};\n  var par=calc(q.a,q.p), req=[];\n  for(var i=0;i<lines.length;i++){ var t=lines[i].trim(); if(!t) continue; var m=t.match(\/^(.*?)[\\s,:;]+(\\d+)$\/); if(!m) return {err:'Line '+(i+1)+' needs a name followed by a host count, e.g. \"Users 120\".'}; var h=+m[2]; if(h<1) return {err:'Line '+(i+1)+': host count must be at least 1.'}; req.push({name:m[1].trim()||('Subnet '+(req.length+1)),hosts:h,ord:req.length}); }\n  if(!req.length) return {err:'Add at least one subnet line.'};\n  req.forEach(function(r){ var p; if(use31) if(r.hosts<=2){ p=r.hosts===1?32:31; } if(p===undefined){ p=30; while(p>0){ if(P(32-p)-2>=r.hosts) break; p--; } for(var x=30;x>=0;x--){ if(P(32-x)-2>=r.hosts){ p=x; break; } } } r.p=p; r.size=P(32-p); });\n  var ord=req.slice().sort(function(a,b){ return b.size-a.size || a.ord-b.ord; });\n  var cur=par.net, end=par.bc, rows=[];\n  for(var j=0;j<ord.length;j++){ var r=ord[j]; if(cur+r.size-1>end) return {err:'Not enough space: \"'+r.name+'\" (\/'+r.p+', '+fmt(r.size)+' addresses) does not fit in '+n2ip(par.net)+'\/'+par.p+'. Use a bigger parent block or fewer hosts.', rows:rows}; var c=calc(cur,r.p); c.name=r.name; c.need=r.hosts; rows.push(c); cur+=r.size; }\n  return {rows:rows,par:par,used:cur-par.net,free:end-cur+1,next:cur};\n}\nfunction runV(){\n  var res=vlsm(document.getElementById('m212vbase').value,document.getElementById('m212vreq').value.split('\\n'),document.getElementById('m212v31').checked);\n  var e=document.getElementById('m212verr2'), o=document.getElementById('m212vout');\n  if(res.err){ e.textContent=res.err; e.style.display='block'; o.innerHTML=''; return; }\n  e.style.display='none';\n  var h='<div class=\"sn-tw\"><table><tr><th>Subnet<\/th><th>Needed<\/th><th>Network<\/th><th>Mask<\/th><th>Usable range<\/th><th>Broadcast<\/th><th>Spare<\/th><\/tr>';\n  res.rows.forEach(function(r){ h+='<tr><td><b>'+esc(r.name)+'<\/b><\/td><td>'+fmt(r.need)+'<\/td><td class=\"mono\">'+n2ip(r.net)+'\/'+r.p+'<\/td><td class=\"mono\">'+n2ip(r.mask)+'<\/td><td class=\"mono\">'+n2ip(r.first)+' \u2013 '+n2ip(r.last)+'<\/td><td class=\"mono\">'+(r.p>=31?'n\/a':n2ip(r.bc))+'<\/td><td>'+fmt(r.hosts-r.need)+'<\/td><\/tr>'; });\n  h+='<\/table><\/div><p class=\"small\" style=\"margin-top:8px\">Used '+fmt(res.used)+' of '+fmt(res.par.size)+' addresses in '+n2ip(res.par.net)+'\/'+res.par.p+'. '+(res.free>0?'Free space starts at <span class=\"mono\">'+n2ip(res.next)+'<\/span> ('+fmt(res.free)+' addresses).':'The block is fully used.')+' Leave room to grow: real VLANs rarely stay the size you planned.<\/p>';\n  o.innerHTML=h;\n}\ndocument.getElementById('m212vgo').addEventListener('click',runV);\nwindow.m212subnet={parse:parse,calc:calc,vlsm:vlsm,n2ip:n2ip};\nrun(); runV();\n})();\n<\/script>\n<\/div>\n\n\n\n\n<style>.m212guide{max-width:880px;margin:40px auto 10px;font-family:inherit;color:#c5d7e5;line-height:1.65;font-size:16px}.m212guide h2{color:#fff;font-size:26px;margin:34px 0 10px}.m212guide h3{color:#fff;font-size:18px;margin:20px 0 6px}.m212guide p{margin:0 0 12px}.m212guide ol,.m212guide ul{margin:0 0 14px;padding-left:22px}.m212guide li{margin:5px 0}.m212guide a{color:#3cc8f0}.m212guide .box{border:1px solid #1f3b4d;border-radius:14px;background:#0b1828;padding:18px 22px;margin:16px 0}.m212guide .warn{border-left:4px solid #ff5468}.m212guide details{border:1px solid #1f3b4d;border-radius:12px;background:#0b1828;padding:12px 16px;margin:10px 0}.m212guide summary{cursor:pointer;color:#fff;font-weight:700}.m212guide details p{margin:10px 0 2px}.m212guide .rel{display:flex;flex-wrap:wrap;gap:10px}.m212guide .rel a{border:1px solid #1f3b4d;border-radius:10px;padding:9px 14px;text-decoration:none;background:#0f2336;color:#e6edf3}<\/style><section class=\"m212guide\" id=\"guide\"><h2>How to use the subnet calculator<\/h2><ol><li>Type an IPv4 address with a prefix, such as <code>192.168.10.37\/26<\/code>, or with a mask or wildcard.<\/li><li>Read the network address, broadcast address, usable host range and number of usable hosts.<\/li><li>Use the binary view to see exactly where the network bits end and the host bits begin.<\/li><li>Copy the ready-made Cisco commands, or switch to the <b>VLSM planner<\/b> to split one block into right-sized subnets.<\/li><\/ol><h2>Subnetting in plain language<\/h2><p>An IPv4 address has 32 bits. The prefix length (the number after the slash) says how many of those bits identify the network. The remaining bits identify hosts inside it.<\/p><ul><li><b>Usable hosts<\/b> = 2<sup>(32 &minus; prefix)<\/sup> &minus; 2, because the first address is the network and the last is the broadcast. A \/26 has 2<sup>6<\/sup> &minus; 2 = 62 usable hosts.<\/li><li><b>Subnet mask<\/b>: the prefix written as four numbers. A \/26 is 255.255.255.192.<\/li><li><b>Wildcard mask<\/b>: the inverse of the subnet mask, used in Cisco ACLs and OSPF network statements. A \/26 is 0.0.0.63.<\/li><li><b>Block size<\/b>: in the interesting octet, 256 minus the mask value. For a \/26 that is 256 &minus; 192 = 64, so the subnets start at .0, .64, .128 and .192.<\/li><\/ul><h3>Plan with VLSM<\/h3><p>Variable Length Subnet Masking gives each segment only the addresses it needs. Sort your requirements from largest to smallest, allocate the largest subnet first on its block boundary, then continue with the next. This avoids overlaps and wasted space. Point-to-point router links can use a \/30, or a \/31 where both devices support it.<\/p><div class=\"box\"><b>Exam tip.<\/b> For CCNA-style questions, memorise the block sizes 128, 64, 32, 16, 8 and 4, and practise finding the network and broadcast address of a random host in under 30 seconds. Then check yourself with this calculator.<\/div><h2>Frequently asked questions<\/h2><details><summary>How many usable hosts are in a \/24, \/26, \/28 and \/30?<\/summary><p>A \/24 has 254 usable hosts, a \/26 has 62, a \/28 has 14 and a \/30 has 2. The formula is 2 to the power of (32 minus the prefix), minus 2.<\/p><\/details><details><summary>What is the difference between a subnet mask and a wildcard mask?<\/summary><p>They are inverses. A subnet mask marks network bits with 1s (255.255.255.0 for a \/24). A wildcard mask marks the bits that can vary with 1s (0.0.0.255 for a \/24). Cisco uses wildcard masks in access lists and OSPF network statements.<\/p><\/details><details><summary>Why are two addresses lost in every subnet?<\/summary><p>In a traditional subnet, the first address identifies the network and the last is the broadcast address, so neither is assigned to a host. \/31 point-to-point links and \/32 host routes are special cases.<\/p><\/details><details><summary>What is VLSM and when should I use it?<\/summary><p>VLSM means using different prefix lengths inside one address block, so each segment gets only the space it needs. Use it whenever segments have very different sizes, such as user VLANs, server networks and point-to-point links.<\/p><\/details><details><summary>Does this calculator handle IPv6?<\/summary><p>This tool covers IPv4. Use our <a href=\"\/tools\/ipv6-calculator\/\">IPv6 subnet calculator<\/a> for IPv6 prefixes.<\/p><\/details><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How many usable hosts are in a \/24, \/26, \/28 and \/30?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A \/24 has 254 usable hosts, a \/26 has 62, a \/28 has 14 and a \/30 has 2. The formula is 2 to the power of (32 minus the prefix), minus 2.\"}},{\"@type\":\"Question\",\"name\":\"What is the difference between a subnet mask and a wildcard mask?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"They are inverses. A subnet mask marks network bits with 1s (255.255.255.0 for a \/24). A wildcard mask marks the bits that can vary with 1s (0.0.0.255 for a \/24). Cisco uses wildcard masks in access lists and OSPF network statements.\"}},{\"@type\":\"Question\",\"name\":\"Why are two addresses lost in every subnet?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In a traditional subnet, the first address identifies the network and the last is the broadcast address, so neither is assigned to a host. \/31 point-to-point links and \/32 host routes are special cases.\"}},{\"@type\":\"Question\",\"name\":\"What is VLSM and when should I use it?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"VLSM means using different prefix lengths inside one address block, so each segment gets only the space it needs. Use it whenever segments have very different sizes, such as user VLANs, server networks and point-to-point links.\"}},{\"@type\":\"Question\",\"name\":\"Does this calculator handle IPv6?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"This tool covers IPv4. Use our IPv6 subnet calculator for IPv6 prefixes.\"}}]}<\/script><h2>Keep learning<\/h2><div class=\"rel\"><a href=\"\/learn\/learning-paths\/#path-network\">Network engineer learning path<\/a><a href=\"\/tools\/ipv6-calculator\/\">IPv6 subnet calculator<\/a><a href=\"\/learn\/vlan-cheat-sheet\/\">VLAN cheat sheet<\/a><a href=\"\/learn\/ospf-cheat-sheet\/\">OSPF cheat sheet<\/a><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"<p>MAG212 CYBER \u00b7 Tools IP subnet &amp; VLSM calculator. Type any IPv4 address with a prefix, mask or wildcard. Get the network, broadcast, host range, binary view and ready-to-paste Cisco commands \u2014 then carve a block into right-sized subnets. Subnet calculatorVLSM plannerQuick reference Subnet calculator Accepts 10.20.20.77\/26, 10.20.20.77 255.255.255.192 or a Cisco wildcard such as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3386,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3444","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/pages\/3444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/comments?post=3444"}],"version-history":[{"count":2,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/pages\/3444\/revisions"}],"predecessor-version":[{"id":3719,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/pages\/3444\/revisions\/3719"}],"up":[{"embeddable":true,"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/pages\/3386"}],"wp:attachment":[{"href":"https:\/\/cyber.mag212.com\/fr\/wp-json\/wp\/v2\/media?parent=3444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}