Back to tools

Local configuration tool

VLESS to Xray JSON

Produces the vnext/streamSettings structure Xray-core expects, including realitySettings.

Your links stay on this device

Conversion happens entirely in your browser. Links are not uploaded, saved, or placed in the page URL.

This page accepts VLESS links, one per line.
Targets Xray-core 1.8.16 or newer; the XHTTP transport additionally needs 24.11 or newer.
Routing preset

Conversion result

Why some links are rejected

A parameter that cannot be mapped without changing how the connection behaves is reported rather than dropped. Xray-core speaks none of the QUIC-native protocols, so Hysteria2 and TUIC links are refused outright rather than reshaped into something that merely looks close. Certificate pinning and the post-2024 REALITY fields are refused for the same reason.

How to import into Xray or v2rayN

Xray-core reads this JSON directly as its config file. Note that Xray uses the first outbound as the active node — with several nodes in one file, switching means editing routing rather than clicking a selector.

How VLESS fields map to Xray

What this converter actually does, line by line. On the left is how it is written in a VLESS link; on the right is the field it becomes in the Xray config.

In the linkIn the Xray configNotes
uuid@host:portsettings.vnext[].users[].idThe part before @ is the UUID; anything that is not a valid UUID is rejected.
security=tlsstreamSettings.security: "tls"Without security=tls the link is treated as plaintext and the TLS-only parameters below are rejected.
security=reality + pbk / sidrealitySettings.publicKey / shortIdsid must be hex of even length, 16 characters at most.
snirealitySettings.serverName / tlsSettings.serverNameFalls back to the server address when absent. Each client spells it differently: servername in Mihomo, server_name in sing-box, serverName in Xray.
fptlsSettings.fingerprintDefaults to chrome. An unrecognised fingerprint is an error, not a silent fallback.
alpntlsSettings.alpnComma-separated in the link, an array in every target format.
flow=xtls-rprx-visionsettings.vnext[].users[].flowPassed through as-is. It only means anything over TCP with TLS or REALITY.
type=ws + path / hoststreamSettings.wsSettingshost becomes the Host header. ed and eh become max-early-data and early-data-header-name.
type=grpc + serviceNamegrpcSettings.serviceNamegun mode only; mode=multi is rejected.
type=h2 / type=httpRejected with an errorXray has removed the HTTP/2 transport, so that target refuses the line instead of rewriting it as XHTTP — a different protocol on the wire.
type=xhttpstreamSettings.xhttpSettingsMihomo needs 1.19 or newer and Xray needs 24.11 or newer; sing-box has no XHTTP transport at all, so that target rejects the line.
type=httpupgradestreamSettings.httpupgradeSettingsMihomo models HTTPUpgrade as a flag on WebSocket; the other two make it its own transport type.
allowInsecure=1Rejected with an errorConverted with a warning — turning certificate checks off gives up protection against interception. Xray removed the option in favour of certificate pinning, so that target refuses the link.
pqv / spx / pcs / vcn / echRejected with an errorREALITY fields added after 2024 that have no faithful equivalent yet — reported rather than dropped.

FAQ

Which client do I use after converting VLESS to Xray?
Use Xray-core 1.8.16 or newer, or an Xray-based client such as v2rayN or v2rayNG. Note that Xray treats the first outbound as the active node; switching between several is a routing change.
Is this VLESS converter free, and does it upload my node links?
It is free and needs no account. The conversion is done by JavaScript inside this page, on your own machine: links are never uploaded, never written into the page URL, and never stored. Closing the tab is all the cleanup there is.
Can I convert a subscription link straight to Xray?
Yes, but paste the body the subscription URL returns — usually one long base64 string — rather than the URL itself, which the browser cannot fetch across origins. Mixed protocols in one subscription are fine.
The Xray config converted fine but will not connect — what now?
This page only translates links into a config: it checks the structure, never whether the server is reachable. Confirm the same link works in the client you copied it from, then check the client version — the XHTTP transport needs Xray 24.11 or newer.

Other converters

This creates a one-time local configuration, not an auto-updating subscription. It checks configuration structure, not whether a server is reachable.

© 2026