v2ray/domain-list-community stopped taking pull requests but kept its data directory
Community managed domain list. Move To Domain list community This project manages a list of domains, to be used as geosites for routing purpose in Project V.
At a glance
- What is it?
- This repository used to be where the community domain lists were edited. It now publishes the compiled dlc.dat and sends every issue and pull request to v2fly/domain-list-community, while data/ and main.go stay put.
- Who is it for?
- Treat v2ray/domain-list-community as a published artifact rather than a project you contribute to. If you need routing categories, take dlc.dat from the release branch, check it against the sha256sum sidecar, and send any data change, issue or pull request to v2fly/domain-list-community, where the review capacity the announcement describes is meant to live.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- v2ray/domain-list-community2,687 ★ · +32
| Repository | 2026-07-29 | 2026-11-14 |
|---|---|---|
| v2ray/domain-list-community | 2.7k | 2.7k |
32 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The repository that ships only dlc.dat still holds data and main.go
The first line of the file is a move notice pointing at github.com/v2fly/domain-list-community, and the announcement underneath gives the reason without softening it: there is a lack of members capable of code review. It adds that more contributors can have manager access to the new repository after a few successful pull requests, which it says will make the project healthier and more active. From now on, this repository is used only to release `dlc.dat`, and issues and pull requests are handled at the new one. The move reaches even into the repository's own one line description, which still ends with the same notice rather than with what the project now does.
The root listing tells a more mixed story than that. `.github/`, `LICENSE`, `README.md`, `data/` and `main.go` are all still here, so the generator and the domain lists it compiles sit in the repository that says it will only publish the compiled output. The project description keeps the older framing too, calling it a community managed list of domains to be used as geosites for routing in Project V. Anyone who lands here first has to work out which half of the split they are looking at before filing anything.
Tags are bare timestamps and the download is a raw path
Releases carry no version numbers. The three most recent tags are `20261002050024`, `20260929143633` and `20260925234224`, each a 14 digit number that reads as a date and a clock time. The newest one has a release page dated 3 October 2026, so the stamp inside the tag name and the date printed beside it are not the same reading of the clock. Older ones behave the same way: `20260925234224` was published on 26 September and `20260929143633` on 30 September. The gaps between those three tags are three and four days, which is the pace the list is being rebuilt at.
The file offers two download links, both under the raw path of this repository's release branch: one for `dlc.dat` and one for `dlc.dat.sha256sum`. The sidecar is what lets you check a fetched artifact against what was published, which matters for a file that routing configurations load. Neither link names a tag, so the bytes behind them change as new tags land, and pinning a build to one artifact means keeping your own copy.
The manual build still runs through go get and GOPATH
Generating the file by hand is a short recipe: install `golang` and `git`, fetch the code, then run the binary that the fetch step leaves in your GOPATH bin directory.
go get -u -v --insecure github.com/v2ray/domain-list-community
$(go env GOPATH)/bin/domain-list-community
$(go env GOPATH)/bin/domain-list-community --datapath=/path/to/your/custom/data/directoryWithout the `--datapath` option the generator uses the `data` directory of this repository inside your GOPATH. With it, you point it at your own copy of the data instead.
What the prerequisites leave out is as telling as what they name. No version of Go is pinned anywhere in the file, and the recipe depends on `go get` placing an executable under `$(go env GOPATH)/bin` rather than adding a dependency to a module file, which is the older shape of that command.
Each data file becomes one section of a single geosite file
The whole `data` directory is compiled into one external `geosite` file for Project V, and every file in that directory becomes a section of it. Building a section runs seven steps. Comments are removed. `include:` lines are replaced with the actual content of the file they name. Empty lines are omitted. Then each of the four domain line types becomes a routing rule, and each of those four points at a specific line of the V2Ray router configuration schema: `domain:` produces a sub-domain rule at line 21, `keyword:` a plain domain rule at line 17, `regex:` a regex domain rule at line 19, and `full:` a full domain rule at line 23.
Because comments are stripped before includes are expanded, a comment inside an included file disappears the same way one in the including file does. Because includes are resolved before rules are generated, the order of the original file does not survive into the compiled output.
Configurations reference the result by file name with `geosite:filename`, so a data file called `google` is addressed as `geosite:google`. That mapping is the whole contract between the text files and the client: file names are the routing vocabulary.
Four line prefixes, and the domain prefix may be omitted
A data file is a flat text list, and the format section gives the pieces directly:
include:another-file
domain:google.com @attr1 @attr2
keyword:google
regex:www\.google\.com
full:www.google.comA comment begins with `#` and may begin anywhere in a line; whatever follows it on that line is ignored in production. `include:` is followed by the file name of an existing file in the same directory, which is what keeps a section from reaching across the data tree. `domain:` takes a valid domain name, and its prefix may be left off entirely, so a bare domain line and a prefixed one mean the same thing. `keyword:` takes a string, `regex:` takes a valid regular expression per Golang's standard, and `full:` takes a complete and valid domain name. All four domain forms can carry one or more attributes, each beginning with `@`.
Nothing in the format description sets a limit on include depth or says what a cycle between two files should produce, so those cases are left to the generator rather than to the rules.
Attributes let one file feed several routing targets
The guidance on organising domains splits into file naming and attributes. On names, the file says any string works as long as it is a valid file name, but that it prefers names for a determinic group of domains, usually the owner, giving `google` and `netflix` as the model, and it calls names of unclear scope such as `evil` or `local` unrecommended. That preference matters mechanically: the name is not cosmetic, because it is the token a configuration has to spell after `geosite:`.
Attributes exist for sub-groups and for filtering. The worked case is a `google` list that also holds domains serving ads: those get marked `@ads`, and a routing config can then ask for `geosite:google@ads` and receive only that slice. The attribute therefore travels through the build into the compiled file and back out through a routing rule. This is the practical argument for one file per owner rather than one file per rule. The attribute does the splitting that separate files would otherwise have to duplicate.
The routing example ends in the middle of its third rule
The usage example is the only configuration shown, and it does not run to the end of its own block:
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"outboundTag": "Reject",
"domain": [
"geosite:category-ads-all",
"geosite:category-porn"
]
},
{
"type": "field",
"outboundTag": "Direct",
"domain": [
"domain:icloud.com",
"domain:icloud-content.com",
"domain:cdn-apple.com",
"geosite:cn"
]
},
{
"type": "field",
"outboundTag": "Proxy-1",
"domain": [
"geosite:category-anticensorship",
"geosite:category-media",So the file demonstrates `geosite:filename`, shows a `Reject` outbound taking two categories, a `Direct` outbound mixing `domain:` entries with `geosite:cn`, and a `Proxy-1` outbound beginning with two more categories, and then the example stops. Reading it means supplying the closing brackets yourself.
The contribution rules still point at the repository that retired them
Two parts of the file disagree about where work happens. The announcement sends issues and pull requests to the new repository, and gives the shortage of reviewers as the reason. The contribution guideline at the bottom still says to begin with small pull requests, of a modification in a single file, that a pull request must be reviewed and approved by another member, and that after a few successful pull requests you may apply for manager access of this repository. Read together, the second passage describes a review culture that the first says no longer exists here, and the review requirement it names is exactly the resource the announcement reports running out.
The same file also states that the project is not opinionated, that it does not endorse, claim or imply that a domain should be blocked or proxied, and that it can be used to generate routing rules on demand. Its own example names `category-ads-all` and `category-porn`. The disclaimer and the category names lean in opposite directions.
Editorial conclusion
Treat v2ray/domain-list-community as a published artifact rather than a project you contribute to. If you need routing categories, take dlc.dat from the release branch, check it against the sha256sum sidecar, and send any data change, issue or pull request to v2fly/domain-list-community, where the review capacity the announcement describes is meant to live. Verify which of the two repositories your own tooling points at, because a config that references geosite entries keeps working against the compiled file no matter where the edits happen. And keep the project's own framing in view: these are routing inputs, not a verdict about any domain.
Frequently asked questions
Where do I download dlc.dat for the v2ray domain list community?
Two links are given, both under the raw path of this repository's release branch: one for dlc.dat and one for dlc.dat.sha256sum, so a fetched artifact can be checked against the published one. Neither link is tied to a tag, which means the bytes change as new timestamp tags land.
Which line types can a domain-list-community data file use?
A comment starts with # and may appear anywhere in a line, include: names another file in the same directory, and four domain forms are recognised: domain: with the prefix optional, keyword:, regex: per Golang's standard, and full:. Any of the four domain forms can carry attributes beginning with @.
Can I still send a pull request to v2ray/domain-list-community?
No. The announcement states that, due to a lack of members capable of code review, the project moved to v2fly/domain-list-community, that this repository will only be used to release dlc.dat, and that issues and pull requests are handled at the new repository.
How do I build dlc.dat myself instead of downloading it?
Install golang and git, fetch the code with go get -u -v --insecure github.com/v2ray/domain-list-community, then run $(go env GOPATH)/bin/domain-list-community. Adding --datapath=/path/to/your/custom/data/directory makes it build from your own data directory instead of the repository's.
Official sources
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.
[](https://hysenlabs.com/projects/v2ray-domain-list-community)Star history chart for your README
[](https://hysenlabs.com/projects/v2ray-domain-list-community)Was this useful?