Every counter below is read live from this repository's own index.json / health.json — they cannot go stale:
🇮🇷 نسخهٔ فارسی · 🇨🇳 中文版 · 🇷🇺 Русская версия
The Top 100 is the shortest path to a working connection: it is the verified list
sorted by median delay and cut at the 100 fastest, so it is small enough to import
anywhere and every entry already answered a real request three times.
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/top100.txt
Want more than 100 servers? Take the full verified list instead — same standard of proof, just longer:
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/configs_base64.txt
📱 On your phone? Point your client's scanner at one of these.
Each QR encodes the subscription URL itself — your client fetches a fresh list every time, it is not a frozen snapshot.
Not sure which one to take? Use
verified— every entry answered a real HTTP request through the proxy in all three independent test rounds:https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/configs_base64.txtWant the largest possible list instead of the most reliable one? Swap
verifiedforall.
Six tiers are published every run. They are not different sources — they are the same pool, filtered by how much evidence there is that a config actually works.
| Tier | What gets in | Plain | Base64 | Clash | Sing-box |
|---|---|---|---|---|---|
🏆 verified |
passed a real proxied request in all 3 rounds — recommended | txt | b64 | yaml | json |
⚡ fast |
verified and median delay < 800 ms |
txt | b64 | yaml | json |
🔐 secure |
verified and forward secrecy, and the link does not disable cert validation |
txt | b64 | yaml | json |
🌐 all |
everything, deduplicated — largest list, mostly untested | txt | b64 | yaml | json |
📦 heavy |
the 14 high-volume upstreams only | txt | b64 | yaml | json |
⭐ light |
the 7 curated / speed-tested upstreams only | txt | b64 | yaml | json |
Which format? configs_base64.txt is the classic subscription format and the safest
default. configs.txt is the same list unencoded. clash.yaml is a full mihomo/Clash
profile; singbox.json is a full sing-box config — both are validated by the real
binaries before publishing (see below).
# ── verified — passed all 3 rounds (recommended) ───────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/verified/singbox.json
# ── fast — verified and median delay < 800 ms ──────────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/fast/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/fast/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/fast/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/fast/singbox.json
# ── secure — verified and forward secrecy ──────────────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/secure/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/secure/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/secure/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/secure/singbox.json
# ── all — light + heavy, deduplicated ──────────────────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/all/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/all/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/all/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/all/singbox.json
# ── heavy — high-volume upstreams ──────────────────────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/heavy/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/heavy/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/heavy/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/heavy/singbox.json
# ── light — curated upstreams ──────────────────────────────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/light/configs.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/light/configs_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/light/clash.yaml
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/light/singbox.json
# ── top 100 — the verified list, sorted by median delay ────────────────────────
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/top100.txt
Split out of all/. A file is published only when it is non-empty, so a 404 means
"nothing of this protocol this round" — never an empty subscription that would wipe your
client's list.
| Protocol | Plain | Base64 |
|---|---|---|
| VLESS | …/main/protocols/vless.txt |
…/main/protocols/vless_base64.txt |
| VMess | …/main/protocols/vmess.txt |
…/main/protocols/vmess_base64.txt |
| Trojan | …/main/protocols/trojan.txt |
…/main/protocols/trojan_base64.txt |
| Shadowsocks | …/main/protocols/shadowsocks.txt |
…/main/protocols/shadowsocks_base64.txt |
| ShadowsocksR | …/main/protocols/shadowsocksr.txt |
…/main/protocols/shadowsocksr_base64.txt |
| Hysteria2 | …/main/protocols/hysteria2.txt |
…/main/protocols/hysteria2_base64.txt |
| TUIC | …/main/protocols/tuic.txt |
…/main/protocols/tuic_base64.txt |
| SOCKS | …/main/protocols/socks.txt |
…/main/protocols/socks_base64.txt |
📎 Full per-protocol URLs (copy-paste)
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/vless.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/vless_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/vmess.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/vmess_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/trojan.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/trojan_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/shadowsocks.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/shadowsocks_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/shadowsocksr.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/shadowsocksr_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/hysteria2.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/hysteria2_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/tuic.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/tuic_base64.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/socks.txt
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/protocols/socks_base64.txt
hysteria · wireguard · juicity · anytls · snell · mieru are recognised by the
parser too, but were empty in the snapshot below — no upstream published any. The
authoritative, always-current list of protocol files that exist right now is the
protocol_files block of index.json.
| File | What it is |
|---|---|
index.json |
every counter, timestamp, next-update ETA and every file URL (raw + mirror) |
health.json |
per-source health, converter drops, geo stats, and the full cascade test report |
state.json |
rolling per-source yield history and auto-disable decisions |
top100.txt |
the 100 lowest-latency verified configs |
archive/all_broken.txt |
what was rejected, and kept visible on purpose (+ _base64, + heavy_broken*) |
Replace the prefix https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main
with https://cdn.jsdelivr.net/gh/0xRadikal/Free-v2ray-Configs@main — every path above
exists on the mirror unchanged.
https://cdn.jsdelivr.net/gh/0xRadikal/Free-v2ray-Configs@main/verified/configs_base64.txt
Prefer raw when you can. This is the repository's own link_policy, not an opinion:
| cache directive | worst-case staleness | |
|---|---|---|
raw.githubusercontent.com |
max-age=300 |
5 minutes |
cdn.jsdelivr.net (branch ref) |
s-maxage=43200 |
12 hours — 144× longer |
The CDN is purged on every run, but purging clears only the edge; jsDelivr's origin can
still lag while it re-resolves the branch name. If you need a guaranteed-exact copy
through the CDN, pin a commit instead of the branch: @<commit-sha>/….
📌 Everything is on the default branch (
main). No branch switching, no hidden location — a link you copied months ago still works. Why that is not as obvious as it sounds: How publishing stays cheap.
Most free-config repositories publish a big number and let you guess. Here is the uncomfortable answer, measured rather than estimated: the large majority of any free config pool is dead at any given moment. That is a property of free configs, not of this repository — so instead of hiding it, every run measures it and sorts by it.
Each config is pushed through four stages. Every stage is cheap enough to run on the whole pool, and each one throws away work the next stage would have wasted:
| Stage | The question it asks | Cost |
|---|---|---|
| L0 / L1 | Is it parsable, is the endpoint unique, is it routable? | no network |
| L2 | Does the TCP port actually accept a connection? | one connect per unique endpoint |
| L3 | Does a real HTTP request through the proxy succeed? | full handshake, repeated 3× |
| buckets | Which ones passed every L3 round? | sorting only |
A config reaches verified/ only if it passed every round — never just its best one.
Snapshot: 2026-08-02 08:38:43 UTC · run took 213 s · test ran from a 🇺🇸 US runner (Cloudflare colo IAD)
| Stage | Configs | Share of pool |
|---|---|---|
| fetched from 17 live sources | 14,212 | — |
| unique after CDN-aware dedup | 10,118 | 100 % |
| structurally valid (L0/L1) | 10,071 | 99.5 % |
| TCP port open (L2) | 5,285 | 52.2 % |
| worked at least once (L3) | 1,231 | 12.2 % |
worked in all 3 rounds → verified/ |
856 | 8.5 % |
The three L3 rounds individually returned 1,040 / 1,069 / 1,074 successes — but only 856 configs are in all three sets. 30.46 % of everything that ever worked is flaky. Publishing "everything that worked once" would have overstated the result by 1.44×; publishing the best single round, by 1.25×. That gap is the entire reason the L3 stage runs more than once.
8.5 % is not a constant, and it is not a claim about your connection. It was measured from one host, in the United States, on one day. A config that fails from a GitHub runner in Virginia may work perfectly from Tehran — and the reverse is just as true.
So:
verified/means "this config answered a real request from the machine that ran the test" — not "this config will work for you." The numbers for the exact release you are downloading, plus the country the test ran from, are recorded in thecascadeblock ofhealth.json. Trust that file over any number written in this README, which is a dated snapshot by construction.
📊 Everything else that snapshot measured
| Tier sizes | all 10,118 · heavy 8,409 · light 2,521 · verified 856 · fast 578 · secure 495 · top100 100 |
| Protocols | vless 3,655 · vmess 3,217 · shadowsocks 2,113 · trojan 978 · hysteria2 123 · shadowsocksr 28 · tuic 2 · socks 2 |
| Dedup | 4,093 duplicates removed; 10,118 configs collapse to 8,560 unique endpoints (15.0 % of L2 work saved) |
| Dropped at L0/L1 | 47 total — unparsable 18 · unroutable server 16 · invalid server 10 · invalid UUID 2 · invalid port 1 |
| DNS | 323 endpoints failed to resolve at L2; 6,237 hosts geolocated, 303 unknown |
| Converter drops | Clash 47 · sing-box 364 (319 of them simply not expressible in the sing-box schema) |
| Sources | 21 configured (7 light + 14 heavy) · 17 returned configs · 0 empty · 0 failed |
| Stage timings | L0/L1 0.33 s · L2 33.5 s · L3 178.8 s · total 213.0 s |
A single malformed entry makes a client reject the entire file — so "mostly
valid" output is worth nothing. Before anything is published, every generated
clash.yaml and singbox.json is parsed by the same binaries you run:
sing-box check -c <file> # sing-box 1.13.14
mihomo -t -f <file> # mihomo v1.19.29Both binaries are version-pinned and SHA256-verified at download time in the workflow. If any file fails validation, the run aborts and nothing is committed — the previous good release stays exactly where it is.
⚠️ Structural validity is not the same as working. Structurally broken entries (zero UUIDs,App not supported, unsupported ciphers, malformed REALITY keys) are dropped — but a syntactically perfect config can still be dead. That is a different question, and it is answered separately by the L3 cascade above.
Every remark is rewritten to {CC} {flag} | @Raydikalx | {id}, where {id} is
sha256(dedup-key)[:6] — derived from the config itself, not from its position in the
list. The same server therefore always gets the same tag, so your client's entry names
stay stable between updates instead of being reshuffled every 15 minutes.
One branch — main. Source code and published output live side by side on the
default branch, which is exactly what a visitor sees when they open the repository.
Machine-generated, refreshed every run (48 files):
verified/ configs.txt · configs_base64.txt · clash.yaml · singbox.json passed all 3 L3 rounds
fast/ configs.txt · configs_base64.txt · clash.yaml · singbox.json verified + median < 800ms
secure/ configs.txt · configs_base64.txt · clash.yaml · singbox.json verified + forward secrecy
all/ configs.txt · configs_base64.txt · clash.yaml · singbox.json light + heavy, deduplicated
heavy/ configs.txt · configs_base64.txt · clash.yaml · singbox.json 14 high-volume upstreams
light/ configs.txt · configs_base64.txt · clash.yaml · singbox.json 7 curated upstreams
protocols/ vless.txt · vmess.txt · trojan.txt · … (+ *_base64.txt) split out of all/
archive/ all_broken.txt · heavy_broken.txt (+ _base64) what was rejected
top100.txt the 100 lowest-latency verified configs
index.json counts · timestamps · protocol breakdown · every file URL
health.json per-source health · converter drops · geo · the full cascade report
state.json rolling per-source yield history and auto-disable decisions
Human-authored, with normal git history and blame:
scripts/ the pipeline — core · sources · filters · converters · geo · reachability
realtest · pipeline · aggregate · validate · state (+ test_pipeline.py)
.github/ the scheduled workflow · Dependabot config · issue templates
docs/ the live status dashboard (reads index.json / health.json in the browser)
README.md · README_FA.md · README_ZH.md · README_RU.md
SECURITY.md · CONTRIBUTING.md · LICENSE
Two rules that are easy to miss and matter a lot:
- Empty files are never published. A file in
protocols/orarchive/appears only when it has content. An empty file would be worse than a 404: a client subscribed to it would replace its working list with nothing, whereas a 404 makes clients keep what they already have. index.jsonadvertises exactly the files that exist — its URL list is never a promise the repository cannot keep.
Git never forgets a blob. Every scheduled run regenerates the same set of large files, and appending them to a branch the normal way adds a new permanent copy of each changed file to history — forever. Publishing then costs O(number of runs), with no upper bound. At ~96 runs a day that is not a theoretical concern: this repository's history had already grown to ≈ 3.6 GiB before the fix.
Move the output to an orphan branch, force-pushed as a single commit. Publishing cost did drop to O(1) — and the project quietly broke:
- Every previously copied subscription link returned HTTP 404. A user whose client
pointed at
…/main/all/configs.txtdid not get an error dialog; the subscription just silently went empty. - A visitor opening the repository saw no configs at all — only code. Most people looking for a config have no idea what a git branch is, let alone that they should switch to a second one and look again.
- Discoverability collapsed. GitHub search, the landing page and search engines all index the default branch.
- Not one successful repository in this space does it. Checked directly:
Epodonios/v2ray-configs,mahdibland/V2RayAggregator,Pawdroid/Free-servers— all publish on their default branch.
Cheap history is worth nothing if nobody can find the files.
Output is published to the default branch, but the branch is kept at source history + exactly one output commit:
- Find the newest commit not marked
[auto-output]— the anchor. - Build a tree = anchor's tree + this run's fresh output.
git commit-tree <tree> -p <anchor>and push with a lease.
The previous output commit becomes unreachable and is garbage-collected. You can read this straight off the log — it strictly alternates, one output commit per human commit, no matter how many runs happened in between:
94a939f23 bot chore: update configs — 07:42 UTC — 10116 configs ← the only live output
e5a0e7dbf human docs: rebuild the status dashboard …
a72b66717 bot chore: update configs — 22:12 UTC — 10146 configs
19b8d6cca human docs(security): document the branch and tag rulesets …
Publishing cost is O(1) — while every file stays exactly where users and crawlers already look for it.
Each safety property below is backed by an executable test:
--force-with-lease, never a bare--force. Publishing targets the same branch humans commit to, so a naive force-push would delete their work. Run as a negative control, a plain--forcedropped the owner's commit count on the remote to 0. With the lease, a genuinely contested push is rejected, the step re-anchors, and both the owner's commit and the new output survive.- Source-regression guard. Every path that differs between anchor and tip is classified; if anything outside the output set changed, the step refuses to publish rather than reverting someone's code.
- Shallow-checkout aware.
actions/checkoutfetches depth 1, so the only visible commit is normally an output commit and the anchor search would find nothing — permanently halting publishing. The step progressively deepens (2 → 4 → 8 → 32) until the anchor appears. (fetch-depth: 0was rejected: cloning gigabytes 96 times a day.) - Fail-closed everywhere. Missing output, a suspiciously small config file, or an empty tree aborts the publish and leaves the previous good release in place.
- No recursion. Pushes made with
GITHUB_TOKENdo not trigger new workflow runs, and thepushtrigger is additionally filtered toscripts/**, which the bot never writes.
Rolling squash bounds history; determinism keeps each round's diff genuinely small. Three sources of pointless churn were found by measurement and removed:
| Was | Now |
|---|---|
Country label taken from whichever upstream was fetched first — the same server flipped RU 🇷🇺 ⇄ US 🇺🇸 between runs |
Label locked to the endpoint; the first decisive detection wins and is frozen |
| Remark tag was a positional counter — inserting one config renamed every line after it | Tag is sha256(dedup-key)[:6], derived from content and immune to position |
| Line order followed network response order | Sorted by dedup key — the same set of configs produces the same file, byte for byte |
Determinism does not mean the files stop changing; it means they change only when the data changes — and the churn that used to happen without a data change is gone.
The ≈ 3.6 GiB already in history was not rewritten. Because GitHub shares objects across a fork network, a rewrite would reclaim close to nothing while breaking every existing clone and both forks. The bleeding is stopped going forward; the old scar is left alone deliberately.
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/index.json
Per-category counts (unique / duplicates / broken / active sources), the protocol
breakdown, the last-update timestamp, the next-update ETA, every file URL (raw
primary + CDN mirror), and a link_policy block stating which one to prefer and why.
The three always-present categories (all / heavy / light) live under categories.
The verification cascade is published separately under cascade_categories
(verified / fast / secure) plus a top-level top100 block, each carrying a
one-line machine-readable criterion next to its file URLs. They are a separate key on
purpose: the cascade runs after the main build and is allowed to be skipped, so anything
that iterates categories keeps working unchanged and never renders a link for a run
that produced no cascade.
If you are building anything on top of this repository, read index.json instead of
hardcoding paths — it is the contract, and it can never advertise a file that does not
exist.
https://raw.githubusercontent.com/0xRadikal/Free-v2ray-Configs/main/health.json
Regenerated every run. For each of the 21 sources it records status
(ok / empty / fail), HTTP code, attempt count, latency, the yielded config count and
the last error — so a dead or changed upstream is visible immediately instead of silently
shrinking the output.
The same file carries the cascade block: the numbers come from the machine that
produced the release, not from this README. This is the block from the snapshot above,
abridged:
Three details worth knowing:
exit_countryis the country the test ran from — the single most important caveat when reading any success rate. Onlylocandcoloare recorded; the runner's IP address is deliberately never published.droppednames the reason each config was rejected, so a source that starts emitting garbage becomes visible instead of just quietly shrinking the output.per_run_okvsstableshows flakiness directly.stablecounts only configs that passed every round — and that is whatverified/is built from.
https://0xradikal.github.io/Free-v2ray-Configs/
A single self-contained page that fetches index.json and health.json in your browser
and renders the cascade, the buckets, per-source health, the geo breakdown and the
converter drops. It makes zero external requests — no CDN, no tracker, no fonts —
and falls back to the jsDelivr mirror automatically if raw is unreachable.
- Fetch — 21 sources downloaded concurrently, with automatic base64/plain detection. Retries on transient errors, but fails fast on 4xx so a dead URL is reported, not silently retried forever.
- Clean — drop dummy and structurally broken entries (zero UUID,
App not supported, empty proxies, unroutable servers). - Dedup — a CDN-aware server-identity fingerprint, so a host behind rotating CDN IPs collapses to a single entry instead of appearing dozens of times.
- Brand — every remark rewritten to
{CC} {flag} | @Raydikalx | {id}with a content-derived{id}and an endpoint-locked country label. - Convert — per-client schema translation with strict field validation: cipher
whitelists, SS-2022 key lengths, uTLS for REALITY,
short-id/ public-key format checks, and full transport emission (ws/grpc/h2/http/httpupgrade/xhttp). Entries a client cannot express are dropped, not silently downgraded — a downgraded config looks valid and never connects. - Verify —
sing-box check+mihomo -ton every generated file. Any failure aborts the run. - Test — the L0→L3 cascade actually connects through the proxies, three times, and
builds
verified/,fast/,secure/andtop100.txt. - Publish — rolling-squash commit to
main, plus a jsDelivr purge.
GitHub's schedule: cron is best-effort and is frequently delayed or skipped during busy
periods. To hold a steady cadence anyway, this repository uses three layers:
- High-frequency cron (
*/5 * * * *) — more chances to actually fire. - Freshness gate — each tick exits immediately if
index.jsonwas updated less than 13 minutes ago, so the heavy work runs only about every 15 minutes: no wasted runs, no double updates. repository_dispatchfallback — an always-on bot sends anaggregate-nowevent every 15 minutes, guaranteeing a run even if cron is dropped entirely. Manualworkflow_dispatch(with an optionalforce) is supported too.
| 🐛 Found a broken source or a bad config? | Open an issue — the templates are in .github/ |
| 🔐 Security policy | SECURITY.md |
| 📐 Contribution guide | CONTRIBUTING.md |
| 📜 License | MIT |
Thanks to every upstream maintainer — mahdibland, peasoft, mahsanet, barry-far,
roosterkid, 4n0nymou3, ALIILAPRO, Epodonios, V2RAYCONFIGSPOOL, ShadowException,
w1770946466 and others. This repository only aggregates, deduplicates, validates and
tests publicly available configs. The full, current list with per-source health lives in
health.json.
For educational and research purposes. No uptime or quality guarantee — see the measured reality above, which is published precisely so that nothing here has to be taken on faith. Use responsibly and in accordance with your local laws.
There is no sign-up, no ad and no paywall here, and there never will be. The two things that actually keep it alive cost you nothing at all:
|
⭐ A star is how anyone finds this. GitHub ranks search and "related repositories" by stars, so one click genuinely decides whether the next person looking for a working config ever sees this page. |
📣 @Raydikalx is where an outage, a dead upstream or a changed link is announced before you notice your client went quiet. Questions and broken-config reports are welcome there too. |
Nothing on this page is behind a payment and nothing ever will be: every link above works exactly the same whether or not you read this section. But if the project saved you an evening of hunting for a config that actually connects, you can send a tip. Any amount is appreciated — a small one is completely fine.
TRC20 — Tron network
TYBumju6Mjd8JCn4RTq95Kk2HPsdcinuz5
EVM chains — Ethereum, BSC, Polygon, Arbitrum, Base, …
0x2F6ec47e416B42C623cF81a64266EE4910a698Cf
TON — The Open Network
UQBbZrE5aDsdGVi6enpf_vPuG022W4KjkJNzTDkjVEn4gmu6
Important
Send only on the network named above each address. Each QR encodes exactly the address printed under it and nothing else — no amount, no memo, no token contract — so the code and the text are two ways of reading the same thing. Scan it or copy it, whichever you trust more.
Channel: @Raydikalx · Bot: @RaydikalxBot · Dashboard: live status
Every number written in this README is a dated snapshot. The live numbers are always in
index.json and
health.json.