A lightweight subscription converter and manager for proxy protocols, deployable on Cloudflare Workers, Vercel, Node.js, or Docker.
Fork of 7Sageer/sublink-worker with AnyTLS support and custom rule defaults.
English | 中文
Want to try it out before deploying? Check out the live instance:
👉 https://sublink-worker.nortons.workers.dev/
Feel free to test subscription conversion, rule customization, and all supported protocols (SS/VMess/VLESS/AnyTLS/Hysteria2/Trojan/TUIC) directly in your browser. No installation required.
- Added
anytls://protocol parser. AnyTLS links are correctly parsed and converted to native AnyTLS nodes in Clash / Sing-Box output, instead of being silently dropped. - AnyTLS is structurally identical to VLESS (UUID@Host:Port?TLS params) but uses
type: anytlswithpasswordfield, which is a distinct protocol type in Clash Meta and Sing-Box.
- Proxy-provider disabled: Subscriptions returning Clash YAML format are no longer auto-converted to
proxy-providers. All nodes from all subscriptions are now inlined into the final config, preventing runtime fetch failures caused by UA restrictions or token auth. - Proxy-groups isolation: Subscription-sourced
proxy-groupsare no longer merged into the output config. Only the rule groups you select in the web UI will appear.
- Non-China and Fall Back default to DIRECT instead of Node Select.
- GFWList rule added (based on
geosite:category-gfw), defaults to Node Select (proxy). - GFWList auto-merge: When GFWList is selected without Social Media/Google/Youtube/Github, it automatically pulls in
twitter/google/youtube/github/gitlabsite rules. This fixes domains likex.comthat are GFW-blocked but classified undergeosite:twitterinstead ofcategory-gfwin v2fly. - Rule priority: specific rules (Google, Telegram, Github...) > GFWList > Non-China (DIRECT) > Fall Back (DIRECT).
- This implements a whitelist proxy mode: only GFW-blocked domains go through proxy, everything else is direct.
- Adds a Web UI toggle in Advanced Options → General Settings: "GLOBAL group defaults to Node Select".
- When enabled (off by default), the generated Clash config emits an explicit
GLOBALproxy-group whose first member is theNode Selectgroup, instead of relying on mihomo's implicit GLOBAL group. - Why: Clash
globalmode routes all traffic through the GLOBAL group's currently selected node. mihomo's implicit GLOBAL group defaults toDIRECT, makingglobalmode behave identically todirectmode — users clicking "Global" see no effect and mistakenly think the button is broken. With this toggle on,globalmode immediately routes through the user's selected Node Select node. - Triggered via URL parameter
global_group_node_select=trueon the/clashendpoint. - Backward compatible: when the toggle is off, behavior is unchanged (mihomo implicit GLOBAL group is used).
ShadowSocks, VMess, VLESS, AnyTLS, Hysteria2, Trojan, TUIC
Sing-Box, Clash (Meta/Mihomo), Xray/V2Ray, Surge
- Click the "Deploy to Cloudflare Workers" button above
- See the upstream Documentation for more information
- Node.js:
npm run build:node && node dist/node-server.cjs - Vercel:
vercel deploy(configure KV in project settings) - Docker:
docker pull ghcr.io/7sageer/sublink-worker:latest - Docker Compose:
docker compose up -d(includes Redis)
- Import subscriptions from multiple sources (inline merge, no proxy-provider)
- Generate fixed/random short links (KV-based)
- Light/Dark theme toggle
- Flexible API for script automation
- Multi-language support (Chinese, English, Persian, Russian)
- Web interface with predefined rule sets and customizable policy groups
This project is licensed under the MIT License - see the LICENSE file for details.
