Test V2Ray/Xray subscription and config links. Finds working nodes and saves only them — a clean list with no dead or slow configs.
English: v2ray, xray, v2ray checker, xray checker, vmess, vless, trojan, subscription checker, config checker, proxy tester, node tester, v2ray subscription, xray subscription, base64 subscription, working nodes, dead node filter, clean config, config filter, vpn node checker, v2ray test, xray test, REALITY, TLS, WebSocket, gRPC, v2ray GUI, xray GUI, Windows exe, v2ray tool, xray tool, subscription validator, link checker, vmess checker, vless checker, trojan checker, Iran, bypass, proxy list, node list.
فارسی: وی۲ری، اکسری، چکر وی۲ری، چکر اکسری، ویمس، ویلس، تروجان، چکر اشتراک، تست نود، تست پروکسی، تست ساب، اشتراک وی۲ری، نود سالم، فیلتر نود مرده، کانفیگ تمیز، چکر ویپیان، تست وی۲ری، رئالیتی، وی۲ری ویندوز، ابزار وی۲ری، اعتبارسنجی اشتراک، چکر لینک، فیلترشکن، پروکسی، لیست نود، ساب تمیز، نود کارکرده.
V2Ray Checker is a tool that:
- Takes your V2Ray/Xray subscription (a URL or a block of base64/text) or a single config link.
- Tests each node by actually running Xray and sending a request through that node. So you see which ones really work on your network.
- Saves only the working nodes into simple files: a list of links and a base64 subscription. You can paste that into your VPN app and use only good nodes.
You don’t have to manually try each server. Paste once, run the checker, and use the clean output.
- Python 3.9 or newer (to run the scripts).
- Xray — the core that runs the proxy.
- Download: XTLS/Xray-core (releases).
- On Windows: put xray.exe in the same folder as the script, or add Xray’s folder to your system PATH.
- On Linux/macOS: install Xray (e.g. from your package manager) or place the
xraybinary in a directory that is on your PATH.
Install Python dependencies:
pip install -r requirements.txt- Open a terminal in the project folder and run:
python v2ray_checker_gui.py
- In the Subscription or link box, paste one of:
- A subscription URL (e.g.
https://example.com/sub?token=xxx) - A base64 subscription string (the long encoded text some providers give you)
- A single config link (starts with
vmess://,vless://, ortrojan://) - Or select a default list from the dropdown and click Load to load a preset URL.
- A subscription URL (e.g.
- (Optional) Set Timeout (e.g. 10 s for slow networks), Parallel (e.g. 4), and Max ping (e.g. 2000 ms to drop slow nodes).
- Click Check configs. The log will show each node as OK or FAIL and a ping time.
- When it finishes, use Open output folder to see the result files, or Copy clean subscription (base64) to paste into your VPN app. You can also use QR code for mobile if you have
qrcodeand Pillow installed.
Run the checker with a single argument: subscription URL, base64 string, or one link.
Subscription URL:
python v2ray_checker.py "https://example.com/sub?token=xxx"Raw base64 subscription:
python v2ray_checker.py "dm1lc3M6Ly8..."Single config link:
python v2ray_checker.py "vless://uuid@host:443?security=tls#MyServer"
python v2ray_checker.py "vmess://eyJhZGQiOi..."
python v2ray_checker.py "trojan://password@host:443?sni=example.com#Trojan"The script prints progress and a summary. Output files are created in the current directory.
-
Decode input
- If you gave a URL, it fetches the page and then decodes base64 or reads plain text (one link per line).
- If you gave base64, it decodes and splits into links.
- If you gave a single link, it uses that as the only node.
- If the content is JSON (array of Xray configs), it uses that and will also produce
clean_configs.json.
-
Parse links
Each vmess/vless/trojan link is converted into an Xray outbound config. Nodes with the same server address and port are treated as duplicates and skipped. -
Test each node
For each node the program:- Writes a small Xray config: local SOCKS proxy + this node as outbound.
- Runs Xray with that config.
- Sends a test request (e.g. to
https://www.google.com/generate_204) through the SOCKS proxy. - Marks the node as OK (with response time in ms) or FAIL (timeout, connection error, etc.).
You can run several nodes in parallel (GUI: Parallel 1–5; default 4).
-
Save only working nodes
Only nodes that passed the test (and, if you set Max ping, are under that limit) are written to the output files. For large lists, the program saves progress every 10 nodes so you don’t lose results.
Input formats:
- Subscription URL (http/https) — the page can be base64-encoded or plain text (one link per line).
- Raw base64 — one or more links after decoding, separated by newlines.
- Single link — one
vmess://,vless://, ortrojan://link. - JSON subscription — a JSON array of full Xray configs (each with a vless/vmess/trojan outbound). In this case the program also writes clean_configs.json (full configs of working nodes only).
Protocols: VMess, VLESS, Trojan. (Shadowsocks links are skipped.)
Transports: TCP, WebSocket, gRPC, HTTP/2.
Security: TLS, REALITY (when the link has pbk, sid, etc.).
| Option | Meaning |
|---|---|
| Timeout | Max seconds to wait for each node (5 / 10 / 15 / 20). Use 10–20 on slow or unstable networks. |
| Parallel | How many nodes to test at the same time (1–5). Higher = faster, but more CPU/network load. |
| Max ping | If you set e.g. 2000 ms, nodes with ping above this are considered failed and are not included in the clean list. |
| Default lists | Preset subscription URLs (e.g. Epodonios, Barry-far). Choose one, click Load, then Check configs. |
| Open output folder | Opens the folder where clean_links.txt and clean_subscription_base64.txt were saved. |
| Copy clean subscription (base64) | Copies the base64 content so you can paste it as a subscription in your VPN client. |
| QR code for mobile | Shows a QR code of the clean subscription (or one per node if too long) so you can scan and add it on your phone. Needs qrcode and Pillow (in requirements). |
All are created in the same folder as the script (or next to the exe if you use the Windows build).
| File | Description |
|---|---|
| clean_links.txt | Working nodes as share links, one per line (vless://, vmess://, trojan://). Use in clients that accept multiple links. |
| clean_subscription_base64.txt | The same links as a single base64 line. Paste this as the subscription content in VPN apps that accept base64 subscription. |
| clean_configs.json | Only when the input was a JSON subscription. Full Xray configs of working nodes only; for apps that accept full config. |
A pre-built V2Ray-Checker.exe is available in Releases. It includes Xray inside, so you don’t need to install Python or Xray. Download, run it, and the output files are created in the same folder as the exe.
============================================================
V2Ray/Xray Config Checker
============================================================
Xray: C:\...\xray.exe
Found 5 node(s). Testing each (timeout 5s, parallel: 4)...
[OK] result: 204 | ping: 312 ms | US-01
[FAIL] result: timeout | ping: -1 | DE-02
[OK] result: 204 | ping: 289 ms | NL-03
...
============================================================
Working: 2 | Failed: 2 | Skipped: 1
============================================================
Clean configs saved (2 working only):
- clean_links.txt
- clean_subscription_base64.txt (paste as subscription in your client)
Working nodes:
- US-01
- NL-03
Ping is the response time in milliseconds; -1 means no connection (timeout or error).
- Xray must be found: either on PATH or
xray.exein the script folder (or bundled in the exe). If not found, the program will show a message and the Xray download link. - REALITY works when the link contains the usual parameters (
pbk,sid, etc.). - Output files are written to the current directory when you run the Python scripts, and next to the exe when you use the Windows release.
V2Ray Checker ابزاری است که:
- ورودی میگیرد: لینک اشتراک (ساب) V2Ray/Xray (یک آدرس اینترنتی یا یک بلوک base64/متن) یا یک لینک تکنود.
- هر نود را تست میکند با اجرای واقعی Xray و فرستادن درخواست از طریق آن نود؛ پس مشخص میشود کدام نودها روی شبکه شما واقعاً کار میکنند.
- فقط نودهای سالم را در فایلهای ساده ذخیره میکند: لیست لینکها و یک ساب base64. میتوانید همین را در اپ VPN خود بچسبانید و فقط نودهای خوب را استفاده کنید.
نیازی نیست دستی هر سرور را امتحان کنید. یک بار لینک/ساب را بچسبانید، چکر را اجرا کنید و از خروجی تمیز استفاده کنید.
- پایتون ۳.۹ یا بالاتر (برای اجرای اسکریپتها).
- Xray — هستهای که پروکسی را اجرا میکند.
- دانلود: XTLS/Xray-core (releases).
- در ویندوز: فایل xray.exe را در همان پوشهٔ اسکریپت قرار دهید، یا پوشه Xray را به PATH سیستم اضافه کنید.
- در لینوکس/مک: Xray را نصب کنید (مثلاً از package manager) یا باینری
xrayرا در مسیری که در PATH است بگذارید.
وابستگیهای پایتون را نصب کنید:
pip install -r requirements.txt- ترمینال را در پوشهٔ پروژه باز کنید و اجرا کنید:
python v2ray_checker_gui.py
- در کادر Subscription or link یکی از اینها را بچسبانید:
- آدرس اشتراک (URL) مثلاً
https://example.com/sub?token=xxx - رشته base64 اشتراک (همان متن طولانی رمزشدهای که بعضی ارائهدهندهها میدهند)
- یک لینک تکنود (که با
vmess://یاvless://یاtrojan://شروع شود) - یا از منوی Default lists یک لیست از پیشتعریفشده انتخاب کنید و Load بزنید تا آدرس لود شود.
- آدرس اشتراک (URL) مثلاً
- (اختیاری) Timeout (مثلاً ۱۰ ثانیه برای شبکههای کند)، Parallel (مثلاً ۴)، و Max ping (مثلاً ۲۰۰۰ ms برای حذف نودهای کند) را تنظیم کنید.
- Check configs را بزنید. در لاگ هر نود به صورت OK یا FAIL و زمان پینگ نمایش داده میشود.
- بعد از اتمام، Open output folder را بزنید تا پوشهٔ خروجی باز شود، یا Copy clean subscription (base64) تا محتوای base64 در کلیپبورد کپی شود و در اپ VPN بچسبانید. در صورت نصب
qrcodeو Pillow میتوانید QR code for mobile را هم برای اسکن با موبایل استفاده کنید.
چکر را با یک آرگومان اجرا کنید: آدرس اشتراک، رشته base64، یا یک لینک.
آدرس اشتراک:
python v2ray_checker.py "https://example.com/sub?token=xxx"رشته base64 اشتراک:
python v2ray_checker.py "dm1lc3M6Ly8..."یک لینک تکنود:
python v2ray_checker.py "vless://uuid@host:443?security=tls#MyServer"
python v2ray_checker.py "vmess://eyJhZGQiOi..."
python v2ray_checker.py "trojan://password@host:443?sni=example.com#Trojan"اسکریپت پیشرفت و خلاصه را چاپ میکند. فایلهای خروجی در همان دایرکتوری جاری ساخته میشوند.
-
رمزگشایی ورودی
- اگر URL دادید، صفحه را دریافت میکند و سپس base64 را رمزگشایی یا متن ساده (یک لینک در هر خط) را میخواند.
- اگر base64 دادید، رمزگشایی میکند و به لینکها تقسیم میکند.
- اگر یک لینک دادید، فقط همان یک نود استفاده میشود.
- اگر محتوا JSON (آرایهٔ کانفیگهای کامل Xray) باشد، از آن استفاده میکند و علاوه بر بقیه، clean_configs.json هم تولید میشود.
-
تفسیر لینکها
هر لینک vmess/vless/trojan به کانفیگ outbound اکسری تبدیل میشود. نودهایی با همان آدرس و پورت سرور تکراری محسوب شده و رد میشوند. -
تست هر نود
برای هر نود برنامه:- یک کانفیگ کوچک اکسری مینویسد: پروکسی SOCKS محلی + این نود به عنوان outbound.
- اکسری را با آن کانفیگ اجرا میکند.
- یک درخواست تست (مثلاً به
https://www.google.com/generate_204) از طریق پروکسی SOCKS میفرستد. - نود را OK (با زمان پاسخ به ms) یا FAIL (تایماوت، خطای اتصال و غیره) علامت میزند.
میتوانید چند نود را به صورت موازی اجرا کنید (در GUI: Parallel ۱ تا ۵؛ پیشفرض ۴).
-
ذخیره فقط نودهای سالم
فقط نودهایی که تست را passed کردهاند (و در صورت تنظیم Max ping زیر آن حد هستند) در فایلهای خروجی نوشته میشوند. برای لیستهای بزرگ، هر ۱۰ نود یک بار ذخیره میشود تا نتیجه از دست نرود.
فرمتهای ورودی:
- آدرس اشتراک (http/https) — محتوای صفحه میتواند base64 یا متن ساده (یک لینک در هر خط) باشد.
- base64 خام — یک یا چند لینک بعد از رمزگشایی، با خط جدید جدا شده.
- یک لینک — یک لینک
vmess://یاvless://یاtrojan://. - اشتراک JSON — آرایهٔ JSON از کانفیگهای کامل اکسری (هر کدام با یک outbound از نوع vless/vmess/trojan). در این حالت clean_configs.json هم نوشته میشود (فقط کانفیگهای کامل نودهای سالم).
پروتکلها: VMess، VLESS، Trojan. (لینکهای Shadowsocks نادیده گرفته میشوند.)
ترانسپورتها: TCP، WebSocket، gRPC، HTTP/2.
امنیت: TLS، REALITY (وقتی لینک شامل pbk، sid و غیره باشد).
| گزینه | معنی |
|---|---|
| Timeout | حداکثر ثانیه انتظار برای هر نود (۵ / ۱۰ / ۱۵ / ۲۰). در شبکههای کند یا ناپایدار ۱۰–۲۰ بگذارید. |
| Parallel | چند نود همزمان تست شوند (۱–۵). بیشتر = سریعتر، ولی بار بیشتر روی CPU/شبکه. |
| Max ping | اگر مثلاً ۲۰۰۰ ms بگذارید، نودهایی با پینگ بالاتر از این شکست خورده حساب شده و در لیست تمیز نمیآیند. |
| Default lists | آدرسهای اشتراک از پیشتعریفشده (مثلاً Epodonios، Barry-far). یکی را انتخاب کنید، Load و بعد Check configs بزنید. |
| Open output folder | پوشهای که clean_links.txt و clean_subscription_base64.txt در آن ساخته شدهاند را باز میکند. |
| Copy clean subscription (base64) | محتوای base64 را کپی میکند تا در کلاینت VPN به عنوان اشتراک بچسبانید. |
| QR code for mobile | QR کد اشتراک تمیز (یا در صورت طولانی بودن، یکی به ازای هر نود) را نشان میدهد تا با موبایل اسکن کنید. نیاز به qrcode و Pillow دارد (در requirements). |
همه در همان پوشهٔ اسکریپت (یا کنار exe در صورت استفاده از نسخه ویندوز) ساخته میشوند.
| فایل | توضیح |
|---|---|
| clean_links.txt | نودهای سالم به صورت لینک اشتراک، هر خط یک لینک (vless://، vmess://، trojan://). برای کلاینتهایی که چند لینک میپذیرند. |
| clean_subscription_base64.txt | همان لینکها در یک خط base64. این را به عنوان محتوای اشتراک در اپهای VPN که base64 میپذیرند بچسبانید. |
| clean_configs.json | فقط وقتی ورودی اشتراک JSON بوده. کانفیگهای کامل اکسری فقط نودهای سالم؛ برای اپهایی که کانفیگ کامل میپذیرند. |
یک V2Ray-Checker.exe از قبل ساختهشده در Releases موجود است. Xray داخل آن است؛ نیازی به نصب پایتون یا Xray نیست. دانلود کنید، اجرا کنید؛ فایلهای خروجی در همان پوشهٔ exe ساخته میشوند.
============================================================
V2Ray/Xray Config Checker
============================================================
Xray: C:\...\xray.exe
Found 5 node(s). Testing each (timeout 5s, parallel: 4)...
[OK] result: 204 | ping: 312 ms | US-01
[FAIL] result: timeout | ping: -1 | DE-02
[OK] result: 204 | ping: 289 ms | NL-03
...
============================================================
Working: 2 | Failed: 2 | Skipped: 1
============================================================
Clean configs saved (2 working only):
- clean_links.txt
- clean_subscription_base64.txt (paste as subscription in your client)
Working nodes:
- US-01
- NL-03
Ping زمان پاسخ به میلیثانیه است؛ -1 یعنی اتصال برقرار نشد (تایماوت یا خطا).
- Xray باید پیدا شود: یا در PATH یا
xray.exeدر پوشهٔ اسکریپت (یا داخل exe در نسخهٔ ویندوز). اگر پیدا نشود، برنامه پیام و لینک دانلود Xray را نشان میدهد. - REALITY وقتی کار میکند که لینک پارامترهای معمول (
pbk,sidو غیره) را داشته باشد. - فایلهای خروجی وقتی اسکریپت پایتون را اجرا میکنید در دایرکتوری جاری، و وقتی از نسخهٔ ویندوز استفاده میکنید کنار exe نوشته میشوند.