Config Converter
Paste a configuration on the left, pick the source and target formats, and read the converted output on the right. Conversion is best-effort: every field that cannot be mapped cleanly to the target surfaces as a warning below the editors. The matching field-by-field rationale lives in the migration cookbook.
Config Converter
Paste a configuration on the left, choose source and target formats, and read the converted output on the right. Conversions are best-effort — features without a clean equivalent show up as warnings below.
- No warnings.
What's supported
- Protocols: VLESS, VMess, Trojan, Shadowsocks (incl. 2022 ciphers), Hysteria / Hysteria2, TUIC, WireGuard, HTTP, SOCKS, plus the Direct / Block / DNS specials and the Selector / URL-test / Fallback / Load-balance proxy groups.
- Transports: TCP, WebSocket (with
?ed=early-data lifting), HTTP/2, gRPC, HTTPUpgrade, QUIC, and xHTTP (preserved where the target understands it). - Security: TLS, uTLS fingerprint, REALITY, ECH.
- Routing: domain / IP-CIDR / GEOIP / GEOSITE / port / process / network rules across all three vocabularies. mihomo's compact rule strings round-trip faithfully through the converter's parser.
- DNS: typed server URLs (
udp/tcp/tls/https/quic/h3/fakeip/local) and mihomo'snameserver-policymap.
What's intentionally lossy
- Each core has features the other two cannot express: Xray's
policy/observatory/metrics, mihomo'stun/sniffer/iptablesand rule-providers, sing-box'sendpoints/experimental.clash_api. Those fields are preserved when the source and target are the same core (so axray → xrayround-trip is near-lossless), but are dropped on cross-emit with aCORE_SPECIFIC_PRESERVEDinfo-level note. - Xray-core has no Hysteria2 outbound; converting a sing-box / mihomo Hysteria2 outbound into Xray emits
PROTOCOL_UNSUPPORTED_BY_TARGETand drops the entry. - Plugins (e.g. mihomo's
plugin: shadow-tlsor Shadowsocks plugin sub-blocks) are passed through as opaque strings; their internal schema is not understood.
Sharing a session
Use the Share link button: the URL gets ?src=…&tgt=…&body=… (body is URL-safe base64) so you can paste it into a chat or bookmark a particular test case. Bodies over ~8 KB are omitted from the link with a notice.
