The short answer: it is a config — the server address, port and keys packed into one string. There is no need to take it apart by hand: you paste the whole thing into a client, which reads the format itself. Keep it like a password — your credentials are inside it.

What is inside the string

It is built like an ordinary web address, only with a protocol name in place of http. Before the colon is the scheme — how to connect. Then come the credentials, the server address and the port number. After the question mark are the transport parameters; after the hash, the name the server will appear under in the list.

Reading this by eye is neither necessary nor useful. Parsing is the client's job: it recognises the scheme, pulls out the parameters and fills the fields in itself. People come back to those fields by hand only when something did not fit.

The eight schemes the client understands

The list is closed and looks like this: socks5:// and http:// for plain proxies; ss:// for Shadowsocks; vless:// and vmess:// for the modern protocols that carry transport parameters in the link; trojan:// for the protocol that impersonates an ordinary HTTPS server; awg:// and vpn:// for AmneziaWG in its two link notations.

SSH has no link scheme of its own: that transport is configured by hand only, through the advanced editor. Conversely, if a link matches none of the eight schemes, it will not be parsed automatically — the parameters have to be typed in.

One link or a list: what a subscription is

A link can lead not to one server but to a list. Such a link is called a subscription: behind it is a list of servers, kept up to date by whoever issued it. The client re-reads that list on its own roughly every 12 hours, and the "Update" button does it at once — new addresses appear in the app while the ones that are gone disappear.

The practical difference: a single config is one server and one point of failure; a subscription is a list you can pick another from when the first stops answering.

A QR code instead of a string

The same config often comes as a picture with a QR code. The camera reads both kinds: a code with a single server and a code with a subscription. That helps when the config is open on a computer screen and you would rather not send it through a messenger.

The limits are simple: a code larger than 8 KB, or with an unknown link scheme, is rejected before parsing, and input larger than 64 KB is not accepted at all.

The link is a password

Inside the config are your credentials: the password or key the server recognises you by. Anyone who receives the whole string has exactly the access you have. So it does not go into open chats, does not get posted on forums with a screenshot, and is not forwarded to people you do not trust.

The same reasoning applies to screenshots: a code in a picture is read just as easily as a string of text.

If the link did not work

Sometimes a string will not parse: an exotic scheme, non-standard parameters, a tail cut off while copying. The advanced editor helps here — the same fields, filled in by hand: address, port, transport and its parameters.

It is worth checking the simple things too: whether the string was copied whole, including the part after the hash, and whether a messenger inserted a line break in the middle.

How to move everything to another device

There is no need to paste the configs again on a new phone. The settings export to a single encrypted file: Settings → Data → Export saves the servers, groups and rules whole. Importing that file on another device replaces its configuration outright — on a new phone that is exactly what you want, but on an already-configured client the import wipes the servers and rules that were there.

The file contains secrets — those same server keys and passwords — so it should be kept like sensitive data. The client itself never sends it anywhere.

Read next