Quick Links

Key Takeaways

  • Adding a static route to the Windows routing table can be useful in specific situations, such as managing multiple internet connections or directing traffic to specific subnets.
  • You can view the Windows routing table using the Command Prompt by typing "route print" and see the destinations and gateways for packets.
  • To add a static route, use the command "route add destination_network MASK subnet_mask gateway_ip metric_cost" and make it persistent with the "-p" option. To remove a static route, use "route delete destination_network".

In some specific types of environments, you might find it useful to add a static route to the routing table. Here's how to go about it in Windows 10 and Windows 11.

What Are Routing Tables?

A routing table dictates where all packets go when they leave a system — whether that system is a physical router or a PC. Most routers — including the one built into your Windows PC — use some form of dynamic routing, where the router is capable of selecting the best place to forward packets based on information it gets from other routers. You can see it at work if you use the traceroute command to watch the connections a packet makes as it reaches it's final destination.

Most routers also allow you to add a static route (one that doesn't get dynamically updated) if you want to always forward certain traffic to a specific router or gateway. Why? Well, most people using Windows in their home or small business probably won't — but this can be useful under certain circumstances, such as:

  • You have two internet connections — maybe one for regular use and one for connecting to a work network — and you want all traffic to a certain IP address range to go out over one of those connections.
  • You have set up multiple subnets on your network and need to direct traffic to a particular subnet. Static routes can be particular useful in testing these types of environments.
  • You're actually using a Windows PC as a router for your network and you want finer control over it.

If any of those apply to you, read on. You'll need to dive into the Command Prompt to add a static route to the Windows routing table, but it's easy and we'll walk you through the steps.

View the Windows Routing Table

Before you get started adding routes, it may be helpful to view the routing table first. Fire up Command Prompt or PowerShell by hitting Windows+X and then selecting "PowerShell (Admin)" or "Command Prompt (Admin) on the Power Users menu.

Run PowerShell through the Power User menu.

You'll probably see PowerShell instead of Command Prompt in the Power Users menu. It is switch back to showing the Command Prompt if you want, or you can give PowerShell a try. You can do pretty much everything in PowerShell that you can do in Command Prompt, plus a lot of other useful things.

In the Command Prompt or PowerShell, type the following command and hit Enter:

route print

"Route print" will display a list of network destinations.

You'll see a long list of network destinations and the gateways to which packets are forwarded when they are headed to that destination. Unless you've already added static routes to the table, everything you see here will be dynamically generated.

Add a Static Route to the Windows Routing Table

To add a static route to the table, type a command using the following syntax:

route add destination_network MASK subnet_mask gateway_ip metric_cost

The subnet_mask and metric_cost components are optional to the command. If you don't specify a subnet mask, 255.255.255.0 will be used automatically. If you don't specify a metric cost, a cost one greater than the 0.0.0.0 destination entry will be used. The metric cost value is just a cost that is relative to other costs in the table and is used when Windows decides between multiple routes that could reach the same destination.

So, for example, if you wanted to add a route specifying that all traffic bound for the 192.168.35.0 subnet went to a gateway at 192.168.0.2 and you just wanted to use the automatic metric cost, you would use the following command:

route add 192.168.35.0 MASK 255.255.255.0 192.168.0.2

"Route add" adds a static route to your Routing Table.

If you were to use the route print command to look at the table now, you'd see your new static route.

Type "route print" into the Command Prompt again and confirm that your addition is present.

That's all easy enough, but there is one extra little catch. When you add a static route, by default it only lasts until the next time you start Windows. The reason for this is that many companies use a coordinated list of static routes that gets updated fairly often. Rather than adding and updating all those routes on every machine, they just distribute a batch script file that adds the newest routes during Windows startup. This keeps the routing table relatively uncluttered.

You could certainly use the batch script method yourself. Writing batch scripts isn't hard. But if you're just adding one or two static routes that you don't expect to change often, you can instead just add the -p option to the command to make the route persistent. A persistent route stays in place even when Windows starts up. Using the same command we used earlier, you could make that route persistent with the following modification:

route -p add 192.168.35.0 MASK 255.255.255.0 192.168.0.2

Adding "-p" to the command will make the addition persistent between restarts.

Remove a Static Route from the Windows Routing Table

Of course, there will come a time you might want to remove a static route from your table. All you have to do is type a command using the following syntax:

route delete destination_network

So, to delete the route we created earlier with the destination network 192.168.35.0, all we'd have to do is type this command and hit Enter:

route delete 192.168.35.0

Type "route delete" to delete a static route you've added.

Yes, using static routes is a bit esoteric when it comes to managing most home and small business networks. But if you do need to do it, it's a pretty easy process. And if you don't need to do it right now, at least you know it's an option in the future.