Link from the clipboard
Copy a vless://…, vmess://…, trojan://…, ss://… or awg://… link and tap "Add server" → "Paste from clipboard". The client parses the parameters itself. This is the fastest route when the seller sent the config as text.
A reference for the client: configuration formats, server editor fields, the transport table, rule resolution order, installation and common problems. Looking for a walkthrough instead of a reference? See First run in 5 minutes.
This part is for anyone opening Stealtify for the first time. There is not a single setting in it — only what is worth understanding before you install. Five minutes here saves most of the questions later.
Stealtify is an Android app that decides which route the traffic of each program on your phone takes. Some programs you send through your server; others carry on directly. The decision is made per program, not for the whole phone at once.
Ordinary VPN apps work the other way: they move the entire phone through the server. That breaks the programs that expect your usual address — banking apps, government services, a delivery service. Stealtify does not do that: anything you have not ticked keeps working as before.
A regular VPN
The whole phone goes through the server at once — including the programs that this breaks.
Stealtify
Only what you ticked goes through the server. Everything else works as before.
The app does not provide a server. It knows how to use one you already have access to — your own, or one you obtained from a provider. That is the key difference from services where the server comes with the subscription.
These words are used constantly further down the documentation. Understanding them once is enough.
The app is only half of it. The other half is yours.
If the second and third are missing, start with the "Your own server" part below: it covers setting a server up yourself on any VPS provider.
Four things that others have individually and rarely together.
We do not sell access and we recommend no one — not in the text and not by link. The choice is yours, so here is what to look at. The list works the same for any provider.
Four things that most often come to light too late.
Next comes Part 2: the step-by-step first run, config formats, routing rules and troubleshooting.
A guide for people who already have a subscription or their own server. Stealtify is a client: we do not provide servers, we connect to yours. Work through the steps in order and you will end up with a working "app → group" rule and a backup proxy for when things break.
Open the releases page and download the latest APK. Only take the file from this site or from the update channel — builds in third-party catalogues are outside our control.
Android asks for the permission the first time you open the file. It is granted to whichever app you open the APK from: the browser or a file manager. You can revoke it after installing.
On the first connection Android shows a system prompt asking to create a VPN connection — that is the standard VpnService dialog and you confirm it once. No root required.
The configuration comes from your subscription seller or your own server. All the client needs is that config, in one of three shapes.
Copy a vless://…, vmess://…, trojan://…, ss://… or awg://… link and tap "Add server" → "Paste from clipboard". The client parses the parameters itself. This is the fastest route when the seller sent the config as text.
Choose "Scan QR" and point the camera at the code in the seller's dashboard. This is the convenient way to carry a config over from a computer screen without forwarding the link through a messenger.
If you have many servers, or you are moving settings over from another device, import the whole configuration. Note that the file replaces your current configuration rather than adding to it â export your own first. The file format and what it holds are covered in Configuration formats.
Example: all Telegram traffic should go through US VLESS. Open the rules screen, find Telegram in the app list and assign it to the group with the US VLESS proxy. That is the whole rule.
The rule you created is immediately visible on the home screen — you do not have to go looking for it. It switches on and off with a single tap, with no JSON editing and no reconnect.
Example: *.youtube.com → US VLESS. On the same rules screen switch to domains, add a domain mask and assign it to the group with the US VLESS proxy. Routing uses the domain from the TLS SNI, so the rule applies to any app that talks to that address.
App rules and domain rules sit next to each other on one screen: you see what is assigned to an app and what is assigned to a domain without switching between different settings sections.
Add a second server the same way you added the first and mark it as the backup for the primary one. Turn on the health check: the client periodically probes the primary server and moves traffic to the backup if it stops responding.
The point is that one server going down does not turn into manual reconfiguration: the rules stay as they were, only the server underneath them changes.
The monitoring screen shows how much traffic each app used and which server it went through. The connection log lives there too: connection attempts, errors and health check events.
It is the first place to look when something does not behave as expected — the log usually shows straight away whether the problem is the server, the rule or the network itself.
A short checklist, in the order that is easiest to work through:
If the problem reproduces on every server of one subscription, the question is almost certainly for the subscription seller rather than for the client.
Android 10 or newer, arm64-v8a only. The client will not install on 32-bit devices or on older versions of Android.
Every build is published with a SHA-256 checksum. Check the downloaded file with Get-FileHash using the SHA256 algorithm and compare the result against the published value.
The client finds updates on its own: the offer appears on the home screen and in Settings → Updates. The dialog shows the version number and the changelog, with Update and Later buttons. Mandatory updates cannot be postponed.
Add a proxy, tap connect, and confirm the system VPN permission prompt — the status changes to "VPN active".
Android will not install a build with a lower versionCode over a newer one, so rolling back to a previous build by a simple reinstall does not work: the app has to be uninstalled first, which wipes its settings and server list. Export your configuration in advance if a rollback might be needed.
The only official source is update.stealtify.app. The client is not on Google Play and will not be, so Android will ask you to allow installation from unknown sources. Updating from inside the app is the safest route: the built-in update runs over a pinned-certificate connection and its checksum is verified before installation.
A checksum only confirms that the file downloaded without corruption — it says nothing about who built it. Anyone can rebuild the APK with their own servers and publish it under the Stealtify name, and for a VPN client that is the main threat: a counterfeit build sees all your traffic. So every genuine build is signed with the developer's key, and the app verifies that signature on startup. If the check fails the client does not start: instead of the interface you get a warning that the copy is not genuine and a link to the official source. There is no access to the VPN or the settings in that state, so a counterfeit cannot route your traffic through someone else's server. Nothing is required of you — the check runs by itself.
They cannot update over the network: the Let's Encrypt certificate pinning changed, and an older build cannot verify the update server's certificate. Download the latest APK by hand from the official site and install it over the top — your configuration and data survive, the signing key is the same.
A server can be added three ways: the "+" button for a quick add, the QR scanner, or a subscription URL. The server name is optional — leave it blank and the client fills in "TYPE host". The "Advanced input" button opens the full editor with every field.
Every server has the basic fields: name, protocol type, host, port, login and password.
Separate from the protocol: a "Use TLS" toggle, and a "Chain" setting — route traffic through another proxy first, then through this one.
A subscription card shows its name and the number of servers in it, traffic used against the total, the expiry date, and a traffic progress bar that turns red past 90% usage. Update and Delete buttons are available. The client re-reads the server list on its own roughly every 12 hours when the network is up — the exact moment is chosen by the system, so the interval can be longer. Opening the app or raising the tunnel does not trigger a refresh; the Update button does it immediately. Auto-refresh cannot be turned off and its period cannot be changed.
The client parses a link in one of eight schemes:
SSH has no link scheme of its own: it is set up manually, through the advanced input form.
If a link does not match any of the eight schemes, the client cannot parse it automatically — the parameters have to be entered through advanced input instead.
The camera reads both kinds of code: a single server and a subscription. A code larger than 8 KB, or one with an unrecognised link scheme, is rejected before parsing; input over 64 KB is rejected as well.
Settings → Data → Export saves the whole configuration to an encrypted stealtify_backup.stbackup file — servers, groups and rules. The older JSON format is still accepted on import. An import <strong>replaces the current configuration outright</strong>: the servers, groups and rules you had are deleted rather than added to. So export your own configuration before importing someone else's. The file holds secrets — server keys and passwords — so treat it as sensitive data; the client itself never uploads it anywhere.
Apps are assigned to groups, not to proxies directly. The proxy lives on the group, so the same proxy setting is reused by several apps at once.
For every connection the client works through five steps in order:
Which group handles the connection
What the group sends its traffic through
A domain rule takes one of three forms: an exact address like example.com, a subdomain like mail.example.com, or a mask like *.example.com. The format is validated on entry. Matching is done against the TLS SNI — the hostname visible while the TLS connection is being set up — not against the destination IP address.
If an app has no rule and its domain matches no mask, the connection goes direct.
While the client has no rules at all, the raised tunnel carries every app's traffic through the proxy. As soon as one rule exists, that changes: the rules decide, and anything they do not cover goes direct.
DNS-over-HTTPS and IP addresses hard-coded into an app bypass domain matching, because the hostname is never visible to the client in that case. A domain rule will not catch this — route the whole app instead, with an app rule.
Failover is simple: the client checks a proxy before connecting and switches to the backup if the primary one is unreachable or answers too slowly.
The threshold is a slider from 500 ms to 15 s. If the response latency is above it, the client treats the proxy as unreachable and uses the fallback group. The fallback group is set on the group itself, the same way the primary proxy is.
The Test button on a server card shows the response latency or the error text. The "Proxies (check)" screen lists every server with its status, ping and transport type — it is the first place to look when something is not working.
TV sets and boxes get their own app — StealtifyTV. It is not the same APK as the phone one, but the routing is: per-app rules work exactly as they do on mobile.
StealtifyTV is in beta. Android TV support is under active development: expect rough edges and interface changes between versions.
For owners of Smart TVs and Android TV boxes who want to route the TV's traffic through their own proxy. The router stays untouched: the client runs only on the box it is installed on and does not affect other devices in the house.
The box's traffic goes through the proxy you pick, while domain rules and server groups work as they do on the phone: individual sites can be sent to another proxy or straight out. Home-network addresses are never sent to the proxy.
Nothing is configured on the router and nothing affects other devices in the house — the client works only on the box it is installed on.
As on the phone, the servers are yours: a seller subscription or your own VPS. The links and protocols are the same as on mobile. The client connects to them but does not provide them.
TV boxes have no store install path for clients like this, so the route is sideloading — the standard way to put an APK on Android TV by hand. Download the StealtifyTV file specifically: the mobile build will not do on a box.
Settings → Apps → Security & restrictions → Unknown sources. The permission is granted to the app you will open the file with: a file manager or a browser.
The easiest path is to open the releases page in the box's built-in browser and download the StealtifyTV file. Alternatively, download the APK on a computer and move it across with a network-share file manager or a USB stick.
The file manager offers to install the app. After installation the system asks for permission to create a VPN connection — confirm it once.
This is the main route: typing server addresses, UUIDs and Reality keys with a remote is close to impossible. On the box open the Proxies tab → the phone icon: a QR code and the TV's address appear. On the phone open Stealtify → Proxies → the QR scanner and point the camera at the screen. Proxies, groups and domain rules come across; phone app rules are skipped, since those apps do not exist on a TV box. One requirement: phone and TV on the same network. If the network will not allow it, fall back to a subscription link — it is short enough to type once with a remote.
Every key action is reachable from an ordinary remote — no touch input is needed at any step.
From the home screen press up until you reach the top bar, move right to the settings icon and confirm with the centre button. Inside settings the same arrows apply: move vertically through the items, centre button toggles.
StealtifyTV is an app in its own right, not the mobile build with different styling. The difference is the interface rather than what it can do: it is built for a 10-foot UI, meaning couch distance and remote control — larger elements, clearer focus, fewer actions per screen. Routing rules, servers and subscriptions are the same as on mobile.
Estimate: behaviour can vary between Android TV firmwares — manufacturers modify the system shell noticeably.
Unlike the phone version, four files are published for TV boxes — boxes come both 64-bit and 32-bit.
Installed the wrong one and Android refuses with "App not installed" or "Package incompatible". No harm done: download universal.
Another option is skipping a ready-made subscription and running a server yourself. The general shape is the same for most protocols on the supported list:
The client does not change anything in this setup: it connects to this server the same way it connects to any other, over one of the eight supported transports.
The provider is picked from a single list; entries with a padlock encrypt queries, plain ones do not. Presets: Cloudflare (1.1.1.1, the default), Cloudflare DoT and DoH, Google (8.8.8.8) and Google DoT, AdGuard (94.140.14.14) and AdGuard DoT, Quad9 DoT. You can set your own — primary and fallback fields, validated as IPv4 or IPv6. DoT and DoH hide which sites you open from your ISP.
Off by default, and worth understanding. Encrypted presets usually keep an unencrypted fallback: if your ISP blocks DoT or DoH, queries quietly go out in the clear. This setting removes the fallback — resolution simply fails when blocked, but nothing goes out unencrypted.
Blocking happens at name resolution: a query to an ad domain never leaves the device and no connection is made at all. It works across every app at once, with no separate blocker. The blocked count shows on the traffic tile.
Stealtify is an Android routing client. It connects to your servers and subscriptions and splits traffic according to your rules. Below: what the client is made of and what exactly it can connect to.
The client brings up a local VPN through the system VpnService API and hands connections to one of two engines. Which one runs is decided by the transport type — you never pick an engine by hand.
TCP/UDP packet processing, routing by app UID and by domain, DNS cache and filtering. Used for simple transports that need no heavy machinery.
xray-core and awg, built with gomobile into an .aar and wired in over JNI. Handles the transports with encryption and traffic masking.
The list is closed: this is everything the client can connect to today. Nothing beyond this list is supported.
| Transport | Engine | Auth | UDP | Specifics |
|---|---|---|---|---|
| SOCKS5 | Kotlin | user:pass | supported | A basic proxy without encryption — fine for local and trusted networks. |
| HTTP CONNECT | Kotlin | Basic | not supported | TCP only: an HTTP proxy does not tunnel UDP traffic. |
| SSH Tunnel | Go | password | not supported | Dynamic port forwarding over ordinary SSH access to your server. |
| VLESS | Go (xray) | UUID | supported | Reality and XTLS-Vision modes are supported. |
| VMess | Go (xray) | UUID | supported | A classic encrypted transport, common among subscription sellers. |
| Trojan | Go (xray) | password | supported | Disguises itself as ordinary HTTPS traffic to a web server. |
| Shadowsocks | Go (xray) | password | supported | A light encrypted transport on a shared password, with no TLS wrapper. |
| AmneziaWG | Go (awg) | keys | supported | Obfuscated WireGuard: the same key-based principle, but with a changed packet signature. |
AmneziaWG is obfuscated WireGuard: it keeps the key-based model, but its handshake packets stop looking recognisable to filtering systems. In the client it is a separate transport with its own parameters — your server or subscription provides them.
Shadowsocks-2022 (SIP022, the blake3 methods) is no longer supported. Regular Shadowsocks still works: aes-128-gcm, aes-256-gcm, chacha20-ietf-poly1305, xchacha20-ietf-poly1305.
Requirements: Android 10+ (API 29), no root — the system VpnService API is used.
Another option is skipping a ready-made subscription and running a server yourself. The general shape is the same for most protocols on the supported list:
The client does not change anything in this setup: it connects to this server the same way it connects to any other, over one of the eight supported transports.
If none of this helps, turn on the connection log and write to support@stealtify.app. Before sending it, redact IP addresses, hostnames and credentials from the log.
Download the APK and connect your own subscription — it takes a few minutes.