Open-source project
shuaidaoya/FreeNodes avatar
shuaidaoya/FreeNodes

FreeNodes: an auto-updating list of free proxy nodes scraped from a pool

Project updates paused for 1-2 months for adjustments, returning as scheduled - thanks for your patience. The transitional subscription link below is updated; auto-refreshes every 4 hours, supports V2ray, Clash and other proxy software, scraping free node shares from the node pool using SubsCheck-Win-GUI.

2,308 stars356 forksUnknownNOASSERTION

At a glance

What is it?
A repository of periodically refreshed proxy node lists, generated by running a subscription checker against public sources and republished in several client formats.
Who is it for?
FreeNodes is a distribution mechanism rather than a technology, and understanding that shapes every reasonable expectation you can have of it. The repository holds no server and no client code: a scheduled job tests candidate nodes with a third party checker and rewrites four text files, which you then pull into a proxy client as a subscription URL.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 68 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • shuaidaoya/FreeNodes2,308 ★ · -3
Star history
Repository2026-10-072026-10-22
shuaidaoya/FreeNodes2.3k2.3k

-3 Stars in the last 15 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What the repository actually contains

The tree is short: a README, a LICENSE, `.gitattributes`, `.gitignore`, `.github/`, and a `nodes/` directory. There is no source code, no build system, and no server. Whatever produces this list runs somewhere else.

The README states the arrangement directly. Nodes are gathered and verified with SubsCheck-Win-GUI, and the README credits that project along with three other tools it names: CM's SubsCheck-Win-GUI fork, beck-8's subs-check, and BestSub. The processing is scheduled rather than manual, which is why the repository can sit idle and still have fresh content.

Output arrives as four differently shaped files:

- `all.yaml` - the complete YAML format configuration file - `base64.txt` - a Base64 encoded list of nodes - `history.yaml` - a historical record of nodes - `mihomo.yaml` - a configuration for the Mihomo client

The four subscriptions are hosted on a GitHub Gist rather than in the repository itself, so the repository is the documentation and the Gist is the live feed.

Two different update intervals are described, and they disagree

This is the most substantive inconsistency in the README, and it is worth catching before you build a habit around a refresh schedule.

The project description says nodes are updated every four hours and attributes the automation to SubsCheck-Win-GUI. The statistics section and the feature list both say every thirty minutes. The changelog table resolves it in favour of the longer interval in practice: across ten recorded entries the timestamps run roughly twelve hours apart, alternating around 04:20 to 04:50 and 16:36 to 16:53 Beijing time. The subscription links section repeats the twelve-hour cadence explicitly, describing the feeds as updating twice a day at 4am and 4pm.

So the four-hour and thirty-minute figures describe the checking process, while the published subscription settles at roughly twice daily. The practical consequence is small but real: if you are waiting for a node you just found dead to be replaced, expect the replacement list on the next twelve-hour cycle rather than within the hour.

The changelog heading also states it keeps only the ten most recent entries, and the paired counts make the churn visible. Node totals swing from 7 in one run to 37 in another, then back down to 10. A feed with that much variance is a sampling artifact of what was reachable, not a stable capacity.

Reading the live statistics block as a health signal

The README embeds a generated block between AUTO_STATS markers that reports the last update time and the surviving node count, and it carries a specific instruction: test the speed first, since the stated floor is 1 MB per second measured against GitHub, and remove what does not work before relying on anything.

At the last recorded run the counts were ten YAML nodes and ten Base64 nodes, with the sync status field reporting that the primary sync is the authoritative one. Ten usable nodes from a pool is a thin yield, and the README explains why in a note above the table: the nodes are produced from Quanzhou broadcast or mobile network connections, so carriers in other regions may find some of them unusable, and Quanzhou is operating under a whitelist pilot scheme that heavily restricts networking, which the README says limits how many nodes can be produced at all.

That is a candid disclosure and also the single most useful thing in the document for anyone evaluating the feed. It tells you the list is geographically skewed toward one operator's network in one Chinese city, so poor results from your own network are expected rather than a sign the feed is broken.

The node names encode the same information. A typical entry is a country flag with a superscript count, a measured throughput, a loss percentage, then flags for service availability such as GPT, YouTube and Netflix, and finally a bracketed classification of residential versus datacenter and broadcast versus business broadband.

Client compatibility is listed per subscription, and the choice matters

The README gives each subscription URL a named audience, which is more useful than four identical-looking links:

bash
https://gist.githubusercontent.com/shuaidaoya/9e5cf2749c0ce79932dd9229d9b4162b/raw/all.yaml

That one is the Clash Meta feed, described as working with Clash Meta, Clash, Clash for Windows and Shadowrocket. The `base64.txt` feed is the general purpose option and the README recommends it if you are unsure which protocol to pick. A separate `mihomo.yaml` feed is provided specifically for Mihomo, and `history.yaml` is described as a reserve of historical nodes.

The README also recommends particular clients by platform: Clash Party, V2RayN or Clash for Windows on Windows; ClashX or V2RayU on macOS; NekoBox, V2RayNG or Clash for Android on Android; and Shadowrocket or Quantumult X on iOS. Several of those recommendations, including Clash for Windows, are for software that has since been discontinued upstream, so treat the list as a starting point rather than as current advice.

The usage flow is four steps: copy a link, import it as a subscription, let the client refresh it, then pick a node. The README's advice throughout is to test latency and choose something fast and low latency, which is reasonable given how quickly these entries expire.

The license covers the code, and the disclaimer covers everything else

Two separate documents sit behind the README. The first is a liability disclaimer that states plainly that the project only shares nodes and provides no technical support, that the nodes are free with no commercial transaction involved, and that they exist for network connectivity testing and study. It says no guarantee is made about continued availability, stability, or security.

The second is the licensing position, and it is narrower than the license name suggests. GitHub reports no license identifier for this repository, while the README states MIT and links a LICENSE file that exists in the tree. The README's own summary of the MIT terms adds a restriction that MIT does not contain: commercial use is permitted for the code only, explicitly excluding the nodes.

That distinction is the most sensible thing about the whole project, and it is worth holding onto. The MIT grant covers the repository as an open source work. It says nothing about the third party servers the list points at, which the disclaimer identifies as originating from public internet resources rather than infrastructure the project operates. A license cannot grant rights over someone else's server, and the README is careful not to pretend otherwise.

For privacy, the README advises against transmitting sensitive personal information through the nodes, notes that node providers may log access, and states plainly that data in transit is not guaranteed to be secure. Given that the feed is a rotating list of hosts you did not choose, that is the correct posture. A free node operator sees your traffic, and the README is honest that this is a risk you accept rather than a problem it solves.

Editorial conclusion

FreeNodes is a distribution mechanism rather than a technology, and understanding that shapes every reasonable expectation you can have of it. The repository holds no server and no client code: a scheduled job tests candidate nodes with a third party checker and rewrites four text files, which you then pull into a proxy client as a subscription URL. That design means you inherit the judgment of the checker and the reach of whatever network the maintainer's box sits on, and the README is candid that nodes originate from public internet resources rather than from infrastructure the project operates. The project paused updates for one to two months while restructuring, and the statistics block in the README shows only ten surviving nodes at the last recorded run. If you subscribe, treat every node as untrusted, keep the feed for testing and connectivity work, and assume any individual entry will be gone within days.

Frequently asked questions

What is FreeNodes?

A repository that republishes lists of free proxy nodes. A scheduled job tests candidate nodes with a third party subscription checker and rewrites four output files, which are then served as subscription URLs from a GitHub Gist. The repository itself holds documentation and a nodes directory, not a server.

How often are the FreeNodes subscriptions updated?

The README describes several intervals that do not agree. The project description says every four hours and the feature list says every thirty minutes, but the changelog timestamps and the subscription section both indicate roughly twice daily, at around 4am and 4pm Beijing time. Treat twelve hours as the practical cadence for published feeds.

Which subscription format should I use in FreeNodes?

The base64.txt feed is the general purpose option and the README recommends it when you are unsure which protocol to choose. all.yaml is described as the Clash Meta feed working with Clash Meta, Clash, Clash for Windows and Shadowrocket, mihomo.yaml is for Mihomo specifically, and history.yaml holds reserve nodes from earlier runs.

Is it safe to use nodes from FreeNodes?

Treat every node as untrusted. The README itself states that no guarantee is made about stability or security, that nodes originate from public internet resources rather than infrastructure the project runs, that providers may log access, and that data in transit is not guaranteed secure. It advises against sending sensitive personal information through them.

Official sources

  1. Issues
  2. Project website
  3. README
  4. shuaidaoya/FreeNodes on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/shuaidaoya-freenodes.svg)](https://hysenlabs.com/projects/shuaidaoya-freenodes)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/shuaidaoya-freenodes.svg)](https://hysenlabs.com/projects/shuaidaoya-freenodes)

Was this useful?