asdlokj1qpi233/subconverter

About Utility to convert between various subscription format.Support anytls、mieru、hy2、hy and vless for singbox and clash meta.original git: https://github.com/asdlokj1qpi23/subconverter

C++

1,821

805 commits

updated Aug 24, 2026

See the code

README

subconverter

Utility to convert between various proxy subscription formats.

original git: https://github.com/asdlokj1qpi23/subconverter

Build Status GitHub tag (latest SemVer) GitHub release GitHub license

Docker README

中文文档

Docker

For running this docker, simply use the following commands:

# run the container detached, forward internal port 25500 to host port 25500
docker run -d --restart=always -p 25500:25500 asdlokj1qpi23/subconverter:latest
# then check its status
curl http://localhost:25500/version
# if you see `subconverter vx.x.x backend` then the container is up and running

Or run in docker-compose:

---
version: '3'
services:
  subconverter:
    image: asdlokj1qpi23/subconverter:latest
    container_name: subconverter
    ports:
      - "15051:25500"
    restart: always

Supported Types

TypeAs SourceAs TargetTarget Name
Clash✓✓clash
ClashR✓✓clashr
Quantumult✓✓quan
Quantumult X✓✓quanx
Loon✓✓loon
SS (SIP002)✓✓ss
SS Android✓✓sssub
SSD✓✓ssd
SSR✓✓ssr
Surfboard✓✓surfboard
Surge 2✓✓surge&ver=2
Surge 3✓✓surge&ver=3
Surge 4✓✓surge&ver=4
Surge 5✓✓surge&ver=5
V2Ray✓✓v2ray
Telegram-liked HTTP/Socks 5 links✓×Only as source
Singbox✓✓singbox

Notice:

  1. Shadowrocket users should use ss, ssr or v2ray as target.

  2. You can add &remark= to Telegram-liked HTTP/Socks 5 links to set a remark for this node. For example:


Quick Usage

Using default groups and rulesets configuration directly, without changing any settings

Access Interface

http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&config=%CONFIG%

Description

ArgumentRequiredExampleDescription
targetYesclashTarget subscription type. Acquire from Target Name in Supported Types.
urlYeshttps%3A%2F%2Fwww.xxx.comSubscription to convert. Supports URLs and file paths. Process with URLEncode first.
configNohttps%3A%2F%2Fwww.xxx.comExternal configuration file path. Supports URLs and file paths. Process with URLEncode first. More examples can be found in this repository.

If you need to merge two or more subscription, you should join them with '|' before the URLEncode process.

Example:

You have 2 subscriptions and you want to merge them and generate a Clash subscription:
1. https://dler.cloud/subscribe/ABCDE?clash=vmess
2. https://rich.cloud/subscribe/ABCDE?clash=vmess

First use '|' to separate 2 subscriptions:
https://dler.cloud/subscribe/ABCDE?clash=vmess|https://rich.cloud/subscribe/ABCDE?clash=vmess

Then process it with URLEncode to get %URL%:
https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

Then fill %TARGET% and %URL% in Access Interface with actual values:
http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

Finally subscribe this link in Clash and you are done!

Advanced Usage

Please refer to 中文文档.

Auto Upload

Upload Gist automatically

Add a Personal Access Token into gistconf.ini in the root directory, then add &upload=true to the local subscription link, then when you access this link, the program will automatically update the content to Gist repository.

Example:

[common]
;uncomment the following line and enter your token to enable upload function
token = xxxxxxxxxxxxxxxxxxxxxxxx(Your Personal Access Token)

Thanks

tindy2013 https://github.com/tindy2013/subconverter

asdlokj1qpi233/subconverter

About Utility to convert between various subscription format.Support anytls、mieru、hy2、hy and vless for singbox and clash meta.original git: https://github.com/asdlokj1qpi23/subconverter

C++

1,821

805 commits

updated Aug 24, 2026

See the code

README

subconverter

Utility to convert between various proxy subscription formats.

original git: https://github.com/asdlokj1qpi23/subconverter

Build Status GitHub tag (latest SemVer) GitHub release GitHub license

Docker README

中文文档

Docker

For running this docker, simply use the following commands:

# run the container detached, forward internal port 25500 to host port 25500
docker run -d --restart=always -p 25500:25500 asdlokj1qpi23/subconverter:latest
# then check its status
curl http://localhost:25500/version
# if you see `subconverter vx.x.x backend` then the container is up and running

Or run in docker-compose:

---
version: '3'
services:
  subconverter:
    image: asdlokj1qpi23/subconverter:latest
    container_name: subconverter
    ports:
      - "15051:25500"
    restart: always

Supported Types

TypeAs SourceAs TargetTarget Name
Clash✓✓clash
ClashR✓✓clashr
Quantumult✓✓quan
Quantumult X✓✓quanx
Loon✓✓loon
SS (SIP002)✓✓ss
SS Android✓✓sssub
SSD✓✓ssd
SSR✓✓ssr
Surfboard✓✓surfboard
Surge 2✓✓surge&ver=2
Surge 3✓✓surge&ver=3
Surge 4✓✓surge&ver=4
Surge 5✓✓surge&ver=5
V2Ray✓✓v2ray
Telegram-liked HTTP/Socks 5 links✓×Only as source
Singbox✓✓singbox

Notice:

  1. Shadowrocket users should use ss, ssr or v2ray as target.

  2. You can add &remark= to Telegram-liked HTTP/Socks 5 links to set a remark for this node. For example:


Quick Usage

Using default groups and rulesets configuration directly, without changing any settings

Access Interface

http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&config=%CONFIG%

Description

ArgumentRequiredExampleDescription
targetYesclashTarget subscription type. Acquire from Target Name in Supported Types.
urlYeshttps%3A%2F%2Fwww.xxx.comSubscription to convert. Supports URLs and file paths. Process with URLEncode first.
configNohttps%3A%2F%2Fwww.xxx.comExternal configuration file path. Supports URLs and file paths. Process with URLEncode first. More examples can be found in this repository.

If you need to merge two or more subscription, you should join them with '|' before the URLEncode process.

Example:

You have 2 subscriptions and you want to merge them and generate a Clash subscription:
1. https://dler.cloud/subscribe/ABCDE?clash=vmess
2. https://rich.cloud/subscribe/ABCDE?clash=vmess

First use '|' to separate 2 subscriptions:
https://dler.cloud/subscribe/ABCDE?clash=vmess|https://rich.cloud/subscribe/ABCDE?clash=vmess

Then process it with URLEncode to get %URL%:
https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

Then fill %TARGET% and %URL% in Access Interface with actual values:
http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

Finally subscribe this link in Clash and you are done!

Advanced Usage

Please refer to 中文文档.

Auto Upload

Upload Gist automatically

Add a Personal Access Token into gistconf.ini in the root directory, then add &upload=true to the local subscription link, then when you access this link, the program will automatically update the content to Gist repository.

Example:

[common]
;uncomment the following line and enter your token to enable upload function
token = xxxxxxxxxxxxxxxxxxxxxxxx(Your Personal Access Token)

Thanks

tindy2013 https://github.com/tindy2013/subconverter

Significant stargazers

zxl hhyccc

77 followers · starred Aug 2024

Andy Tian

96 followers · starred Dec 2024

zh239ns

0 followers · starred Jul 2025

Yingjie Qi

15 followers · starred Dec 2025