Skip to content

The mins block

A server delivered as Xray JSON can carry a top-level mins key. It only changes how mins presents and pings the server. It never changes traffic, and it is removed before the configuration reaches the engine, so Xray itself never sees it.

{
"remarks": "Finland 1",
"mins": {
"name": "Finland 1",
"description": "Own DNS and routes",
"flag": "fi",
"icon": "house",
"ping": {
"type": "proxy-head",
"url": "https://cp.cloudflare.com/generate_204",
"timeout_ms": 3000
}
},
"outbounds": [ { "tag": "proxy", "protocol": "vless", "settings": { "...": "..." } } ]
}

Put the block at the top level of a full Xray configuration (a JSON object without a top-level protocol), whether it is the only server or one element of a JSON array subscription. A bare outbound object accepts the same fields, but the engine then warns about the fields it does not know there.

Field Type Limits Effect
name string 1 to 64 characters Server name shown instead of remarks.
description string up to 120 characters Description on the server’s second line and in its details.
flag string ISO 3166-1 alpha-2 code, any case, or "none" Country of the server. "none" switches off all automatic country detection and shows the icon.
icon string one of globe, house, briefcase, server, shield, star, lightning, game, play, cloud Icon used when the server has no country. Default globe.
ping.type string tcp, proxy, proxy-head, icmp How this server is measured. Required if ping is present.
ping.url string https:// URL Probe address for proxy and proxy-head.
ping.timeout_ms integer 500 to 30000 Ping timeout in milliseconds.

Validation never fails an import. A field outside its limits, an unknown field, or a value of the wrong type is ignored and reported as a warning in the import preview; the other fields still apply. A ping object without a valid type is ignored entirely.

Texts are shown as plain text.

  • Name: mins.name, then remarks (or remark) of the JSON, then the address:port of the server.
  • Description: mins.description, then meta.serverDescription of the JSON, then the serverDescription of a link or header.

The country is decided by the first step that gives an answer:

  1. mins.flag ("none" means no country).
  2. A flag emoji at the start of the name, for example 🇫🇮 Finland. The emoji is removed from the displayed name; the stored remarks stays as sent.
  3. A country name as a whole word in the name, in English or Russian (Finland, Финляндия, USA, UK, ОАЭ). Georgia and Jersey are ambiguous and match only through flag.
  4. GeoIP, only if the server address is an IP literal and the user has a GeoIP database downloaded. Domain names are never resolved just to find a flag.
  5. No country: the icon is shown.

For predictable results set flag explicitly.

For one server the ping settings are taken in this order; the first that sets a value wins:

  1. The user’s explicit choice for that server.
  2. mins.ping of the server.
  3. The subscription’s ping-type, check-url-via-proxy, proxy-ping-timeout and ping-result, with the user’s override for the subscription.
  4. The user’s global ping settings (default type icmp, default URL https://www.gstatic.com/generate_204, timeout 5000 ms).

The provider’s own balancer (“Auto”)

Section titled “The provider’s own balancer (“Auto”)”

If a full JSON configuration contains routing.balancers, the first balancer is treated as the provider’s Auto: the server is tagged with its strategy, and the user chooses in Settings → Connection → Auto priority whether to show mins Auto (the default, which picks the lowest ping) or the provider’s balancer (Provider balancer). The outbounds shown as the server’s protocol and transport are the first outbound whose tag begins with one of the balancer’s selector entries, or the first proxy outbound when there is no match.

Inside an outbound object, mins has a second use: it stores what some share-link parameters turn into. These keys are not presentation fields.

Key Type Effect
allowInsecure bool VLESS and Hysteria2. true disables TLS certificate verification; the server shows an allowInsecure warning tag. On any other protocol true makes the configuration unusable.
fragment object { "length", "interval", "packets", "maxSplit" } TLS fragmentation for this outbound; maxSplit is optional. Same meaning as the fragmentation-* headers.
noises array of { "type", "packet", "delay", "applyTo" } Noise packets for this outbound; applyTo is optional. Same meaning as the noises-* headers.

Prefer the link parameters or the response headers for these.