Routing
Choose which traffic goes through the proxy, which goes direct and which is blocked, with ready-made profiles or your own rules.
Routing decides where each connection goes: through your proxy, directly to the internet, or nowhere. This page shows how to download a ready-made routing profile for your country, write your own rules, and share profiles. If you want everything to go through the proxy, you do not need to change anything.
How routing works
A routing profile is a list of rules plus a default outbound. When a connection starts, Throne checks the rules from top to bottom. The first rule that matches decides where the connection goes. If no rule matches, the connection uses the default outbound.
An outbound is a place where traffic can go:
| Outbound | Where the traffic goes |
|---|---|
proxy |
Through the profile you started. When WARP is on, WARP is added as the last hop. |
direct |
Straight to the internet, without the proxy. |
block |
Nowhere. The connection is refused. |
warp-bypass |
Through the profile you started, but without WARP. When WARP is off, the same as proxy. See WARP. |
| A saved profile | Through that profile instead of the one you started. Only in advanced rules. |
Exactly one routing profile is active at a time. The built-in Default profile has only a DNS rule (Route DNS) and sends everything to proxy.
To change the active routing profile, use one of these:
- The list at the bottom of the
Routingmenu. The active profile has a check mark. - Tray menu →
Select Routing. Settings→Routing Settings→Common→Routing Profile, thenOK.
Choosing a routing profile in the Routing menu or the tray restarts the running connection, so the new rules apply at once. The window title shows the active routing profile when it is not Default.
Download ready-made profiles
Throne can download routing profiles that are maintained for China, Iran and Russia.
- Open the
Routingmenu →Download Profilesand chooseChina,IranorRussia. - Throne lists the profiles it will add ("Add these remote routing profiles?"). Keep
Auto updateticked and clickOK. - Open the
Routingmenu again and choose one of the new profiles at the bottom. Downloading alone does not change your active profile.
| Country | Profile | What it does |
|---|---|---|
| China | Bypass China |
Proxies everything except Chinese sites, Chinese IP addresses and your local network, which go direct. Sites on an anti-censorship list always use the proxy. |
| China | Proxy China Blocked |
Sends everything direct, except sites known to be blocked in China. |
| Iran | Bypass Iran |
Proxies everything except Iranian sites, Iranian IP addresses and your local network. |
| Russia | Bypass Russia |
Proxies everything except Russian sites and IP addresses, sites that work only inside Russia, and your local network. |
| Russia | Proxy Russia Blocked |
Sends everything direct, except sites and IP addresses blocked in Russia. |
| Russia | Proxy Antizapret |
Sends everything direct, except sites on the Antizapret block list. |
| Russia | Proxy Refilter |
Sends everything direct, except sites and IP addresses on the Re:filter block list. |
A "Bypass" profile suits you when most sites you visit are abroad. A "Proxy … Blocked" profile sends less traffic through your server, which helps when the server is slow or has a data limit. The downside: a blocked site that is missing from the list does not load.
These profiles are alternatives. Activate the one you want and leave the others; there is no need to delete them. They are remote profiles, so they can update themselves. The lists are maintained in the throneproj/routeprofiles repository and can change over time.
If the download fails with "Requesting profile error", choose another Remote Rule-set Mirror (see below) and try again.
Routing profiles
Settings → Routing Settings (also the first item of the Routing menu) opens the Routes window:
| Tab | What it contains |
|---|---|
Common |
The active routing profile, domain strategies and the rule-set mirror. |
Hijack |
Deprecated. Use Tun Mode instead; see DNS. |
Warp |
Cloudflare WARP; see WARP. |
DNS |
DNS servers and options; see DNS. |
Route |
Your routing profiles. |
Settings on the Common tab:
| Setting | Default | What it does |
|---|---|---|
Routing Profile |
Default |
The active routing profile. |
Default Domain Strategy |
empty | IPv4 or IPv6 preference when Throne looks up the address of a server or of a site that goes direct. |
Resolve Domain Strategy |
empty | When set, Throne looks up the IP address of every requested domain before the rules run, so IP rules can match domains too. |
Remote Rule-set Mirror |
jsDelivr(Cloudflare) |
Where rule-sets and profiles stored on GitHub are downloaded from. GitHub downloads them directly. |
The strategies are ipv4_only, ipv6_only, prefer_ipv4 and prefer_ipv6. Do not choose ipv6_only on a network without IPv6.
Buttons on the Route tab:
| Button | What it does |
|---|---|
New |
Creates a Structured profile, a Raw profile or a Remote profile. |
Clone |
Copies the selected profile. |
Export |
Copies the selected profile as a throne://route/ link (Ctrl+C). |
Import |
Adds a profile from the clipboard (Ctrl+V). |
Edit |
Opens the selected profile. Double-clicking it does the same. |
Delete |
Deletes the selected profile (Del). The last profile cannot be deleted. |
Update |
Update selected or Update all downloads remote profiles again. |
Changes in the Routes window are saved when you click OK. If a connection is running, the main window then shows "Settings changed, restart to apply". Click Restart there to use the new rules.
There are three kinds of routing profiles: structured profiles, which you edit in Throne with simple rules and advanced rules; remote profiles, which are downloaded from a URL; and raw profiles, written as sing-box JSON. Most people only need structured ones.
To create a structured profile:
- On the
Routetab, clickNew→Structured profile. - Enter a
Nameand choose theDefault outbound. - Add rules on the
Basictab or theAdvancedtab. - Click
OK. On theCommontab, choose the profile asRouting Profile, then clickOK.
A new profile starts with a dns-hijack rule. Throne adds the same DNS step to every structured profile anyway (see DNS), so you can leave the rule as it is.
The Endpoints tab appears when you have OpenVPN or OpenConnect profiles. It runs them next to your proxy for the networks they announce; see split tunnel.
Simple rules
The Basic tab of a profile has four boxes: Direct, Proxy, Block and Warp-bypass. Each line in a box sends matching traffic there. How to use shows a short summary of the syntax.
| Line | Matches |
|---|---|
domain:example.com |
Only example.com. |
suffix:example.com |
example.com and all its subdomains, such as www.example.com. |
keyword:example |
Every domain that contains example. |
regex:^cdn[0-9]*\.example\.com$ |
Domains that match a regular expression (Go RE2 syntax). |
ruleset:geosite-youtube |
Everything in a rule-set: a built-in name or the URL of an .srs file. |
ip:10.0.0.0/8 |
IP addresses in a range. A single address such as 1.2.3.4 also works. |
processName:Telegram.exe |
Connections of a program, by file name. |
processPath:C:\Program Files\App\app.exe |
Connections of a program, by full path. |
Rules for writing lines:
- Write one entry per line. Empty lines are ignored.
- Write the prefix exactly as shown, including upper and lower case (
processName, notprocessname). domain:,suffix:andkeyword:values are saved in lower case.- A process name must match exactly, including upper and lower case and
.exeon Windows. The Connections tab shows the exact name. - Throne checks the lines when you switch tabs or click
OK, and lists the lines it cannot use under "Some rules could not be added". Switching tabs drops those lines.OKdoes not save until you fix them.
Example 1: proxy everything except local sites, and block ads. Set Default outbound to proxy. In Direct:
suffix:example.com
ruleset:geosite-ir
ruleset:geoip-ir
In Block:
ruleset:geosite-category-ads-all
Replace ir with your country code, for example cn or ru.
Example 2: only one program and one site through the proxy. Set Default outbound to direct. In Proxy:
processName:Telegram.exe
suffix:example.org
Order of simple rules
Each box becomes ordinary rules on the Advanced tab, named after the box, such as Simple Address Bypass (addresses in Direct) or Simple Process Name Proxy (programs in Proxy). In a new profile they are added in this order: Direct, Block, Proxy, Warp-bypass. Because the first match wins, a line in Proxy has no effect when a broader line in Direct already matches the same traffic.
To make an exception, move it up on the Advanced tab. For example, to proxy example.ir in a profile that sends geosite-ir direct:
- Add
suffix:example.irto theProxybox. - Open the
Advancedtab and selectSimple Address Proxy. - Click
Move Upuntil it is above the rule that containsgeosite-ir.
Advanced rules
The Advanced tab shows every rule of the profile in order, with New, Move Up, Move Down and Delete. The right side shows the rule's Name and a Preview of the rule in sing-box JSON.
To add a rule:
- Click
New. - Choose an
Action. - Open the
+tab and tick the attributes you need. Each attribute becomes a tab. Unticking an attribute clears its value. - Fill in the tabs. Lists take one entry per line.
| Action | What it does |
|---|---|
route |
Sends matching traffic to the rule's outbound: proxy, direct, warp-bypass or a saved profile. A new rule sends to direct until you tick outbound and choose another one. |
reject |
Blocks matching traffic. method and no_drop change how. |
hijack-dns |
Answers DNS queries with Throne's DNS. |
route-options |
Sets options such as override_address, override_port or tls_spoof, then continues with the next rules. |
sniff |
Detects the protocol and the domain of a connection, then continues. |
resolve |
Looks up the IP address of the domain (with strategy), then continues. |
bypass |
Linux only, for advanced setups. See the sing-box documentation. |
To block traffic in an advanced rule, use reject. The name block exists only as a default outbound and as the Block box.
| Attributes | What they match |
|---|---|
domain, domain_suffix, domain_keyword, domain_regex |
The requested domain. |
ip_cidr, ip_is_private |
The destination address; ip_is_private covers private and local ranges. |
rule_set |
Built-in rule-set names or .srs URLs. |
port, port_range |
The destination port, for example 443 or 1000:2000. |
source_ip_cidr, source_ip_is_private, source_port, source_port_range |
Where the connection comes from, for example another device on your network. |
process_name, process_path, process_path_regex |
The program on this computer. |
network, protocol, ip_version |
tcp, udp or icmp; a detected protocol such as tls, quic or bittorrent; 4 or 6. |
inbound |
Where the connection entered Throne: mixed-in (the proxy port) or tun-in (TUN mode). |
wifi_ssid, wifi_bssid |
The Wi-Fi network you are connected to. Not available on macOS. |
package_name |
Android apps. On the desktop, a rule with this attribute never matches. |
invert |
true makes the rule match when its conditions do not match. |
Inside one rule, the domain, IP and rule_set attributes match when any one of them matches. Other attributes, such as port or process_name, must match as well.
Tips:
- Exceptions go first. Put a rule for one site above the rule for the whole country or list.
- Process rules only see programs whose traffic reaches Throne. Use TUN mode to include programs that ignore the system proxy; see the note under Simple rules.
- Send traffic to a specific server. Tick
outboundand choose a saved profile, shown as[group] name. Throne runs that profile next to the one you started. Extra Core profiles and full custom configs cannot be used here. - Rules you cannot edit. A rule named "… route prefer" belongs to the
Endpointstab. You can only move it.
Rule-sets
A rule-set is a list of domains or IP ranges stored in a separate file. Use it in a simple rule (ruleset:<name>) or in the rule_set attribute of an advanced rule.
- Built-in names. Throne knows more than 2,000 rule-sets by name. Names that start with
geosite-hold domains, for examplegeosite-youtube,geosite-cnorgeosite-category-ads-all. Names that start withgeoip-hold IP ranges, for examplegeoip-ir,geoip-telegramorgeoip-private. When you typeruleset:in a simple-rule box, or in therule_settab, Throne suggests matching names. - Your own files. The URL of any sing-box binary rule-set works, for example
ruleset:https://example.com/lists/my-sites.srs. The file name in the URL must contain.srs.
Throne downloads the rule-sets of a profile when the profile starts and keeps them in the core's cache. Routing → Update Rule-Sets downloads fresh copies. It is available while a connection runs and reports how many rule-sets it refreshed.
Built-in rule-sets are stored on GitHub. If GitHub is blocked or slow on your network, change Routing Settings → Common → Remote Rule-set Mirror. The mirror also applies to the AdBlock list and to routing profiles stored on GitHub. Your own .srs URLs are always used as written.
Remote profiles
A remote profile is a structured profile that Throne downloads from a URL. The profiles from Download Profiles are remote profiles. A provider can also give you one with a throne://remoteroute/ link.
To add one yourself:
- On the
Routetab, clickNew→Remote profile. - Enter a
Nameand theURL. The address can serve athrone://route/link, its Base64 text, or the profile's JSON. - Click
Previewto look at the profile without changing anything, orFetchto load its rules now. - Tick
Auto updateto keep the profile up to date, then clickOK.
The URL must serve a structured profile. Raw profiles cannot be remote profiles.
Automatic updates need two things: the profile's Auto update box, and Settings → Basic Settings → Subscription → Routing profiles auto update. The second one is off by default. Its interval is in minutes (default 1440, once a day); values under 30 turn it off. The Runtime Stats tab shows Next remote route update. To update at once, use Update on the Route tab.
An update replaces the rules and the default outbound with the downloaded ones, so your own changes to the profile are lost. To change a remote profile safely, Clone it, open the copy and untick Auto update. An update does not restart a running connection: the new rules are used the next time you start a profile.
Raw profiles
A raw profile is a complete sing-box route object in JSON. Use it when you need sing-box features that the rule editor does not offer.
On the Route tab, click New → Raw profile. The editor checks the JSON and has a Format JSON button. Outbounds are written as numbers:
| Number | Outbound |
|---|---|
-1 |
proxy |
-2 |
direct |
-5 |
warp-bypass |
| A profile ID | A saved profile. After "outbound": or "final":, the editor suggests your profiles by name and inserts the number. |
If final is missing, Throne uses proxy. Built-in rule-set names are not defined for you: add your own rule_set entries to the JSON. Throne also does not add the DNS step that structured profiles get automatically. For TUN mode, start your rules like this:
{
"rules": [
{ "action": "sniff" },
{ "protocol": "dns", "action": "hijack-dns" },
{ "domain_suffix": ["example.com"], "outbound": -2 }
],
"final": -1
}
Prevent modifications uses the object exactly as written; Throne only turns the outbound numbers into tags. Throne then adds nothing of its own, so DNS, Xray profiles, chains and other features may stop working. Use it only if you know sing-box well.
Enable AdBlock, Enable DNS Routing and the Append actions of the Connections tab do not work with raw profiles. Throne for Android cannot use raw profiles.
Connections tab
The Connections tab at the bottom of the main window lists open connections, grouped by program. For each connection it shows the destination, the protocol, the outbound it used and its traffic. It is the quickest way to see where a site goes and to add a rule for it.
Right-click a connection:
| Menu item | What it does |
|---|---|
Append "<host>" to → Direct / Proxy / Block |
Adds suffix:<host> to that box of the active routing profile. For an IP address it adds ip:<address>. |
Append process "<name>" to → Direct / Proxy / Block |
Adds processName:<name> to that box. |
Copy Destination, Copy Process Name |
Copies the value. |
Close connection |
Closes the connection. |
After you add a rule, click Restart in the "Settings changed, restart to apply" notice. The new line joins the existing simple rule of that box. If the box was empty, its rule is added at the end of the list, where a broader rule above it can still match first. Check the order on the Advanced tab.
The Append items are disabled when the active routing profile is raw, is locked with Prevent modifications, or is a remote profile with Auto update on. Hover over the item to see the reason. For a remote profile, clone it first as described in Remote profiles.
The tab needs Settings → Basic Settings → Style → Connection statistics → Enable, which is on by default.
AdBlock
Routing → Enable AdBlock blocks ads in whichever routing profile is active. Throne adds a block rule for a public ad-blocking rule-set (adblocksingbox from the 217heidai/adblockfilters project). The rule runs before your own route rules, so ads are blocked for direct and proxied traffic alike. Turning AdBlock on or off restarts the running connection.
- AdBlock works with structured and remote profiles, not with raw profiles.
- If a site stops working, turn AdBlock off to check whether the list blocks it.
- To block ads in one profile only, put
ruleset:geosite-category-ads-allin itsBlockbox instead.
Share profiles
To share a routing profile, select it on the Route tab and click Export (or press Ctrl+C in the list). Throne copies a throne://route/ link. Send the link to anyone.
To import a profile:
- In Routing Settings. Copy the link, open the
Routetab and clickImport(or pressCtrl+Vin the list). Throne asks "Import routing profile … from the clipboard?". If the clipboard holds no profile, a box opens where you can paste a Throne route link, a remote route link, Base64 text or a JSON rule array. The imported profile is also selected on theCommontab, so it becomes active when you clickOK. - From anywhere. Click the link, or copy it and press
Ctrl+Vin the main window. Throne asks "Add this routing profile?" and adds it without making it active.
What the link carries:
- The name, the default outbound and the rules.
- Rules that send traffic to a saved profile refer to it by name. On the other computer, Throne uses a profile with the same name, or
proxyif there is none, and tells you. - VPN endpoints, shared without their credentials. When you import such a link, Throne creates the OpenVPN or OpenConnect profiles before it asks "Add this routing profile?", and keeps them if you cancel.
For the link format, see Deep Links.
On Android
Throne for Android has the same routing profiles, rules and rule-sets. Open Routing from the drawer; tap a profile to make it active. The differences:
- App rules. The rule editor has an
Appsfield that matches Android apps. The desktop cannot see Android apps, so there a rule with an app condition never matches. Android shows a note when you export a profile with such rules. - Wi-Fi rules.
Wi-Fi SSIDandWi-Fi BSSIDneed precise location access set to "Allow all the time", and location turned on, because Android hides the Wi-Fi name otherwise. Throne asks when you save such a rule. If access is missing, the notification "Wi-Fi rules are inactive" appears. - Raw profiles. Android refuses raw
throne://route/links ("raw routing profiles are not supported on Android"). Raw profiles from a desktop backup are kept but cannot be used ("Raw (Throne desktop) · read-only"). - VPN endpoints in an imported link are dropped with a warning.
- Quick switch. On the Profiles screen, the menu (⋮) →
Routing profilelists your routing profiles. The same dialog has anEnable WARP/Disable WARPbutton. - Links. A
throne://route/link adds the profile but does not make it active.
Download profiles, Update rule-sets and remote profiles work as on the desktop. AdBlock and Auto update remote profiles are in Settings → Routing.