Open-source project
KyleBing/english-vocabulary avatar
KyleBing/english-vocabulary

KyleBing english-vocabulary: seven word lists for Chinese exam preparation

English vocabulary word lists for CET-4, CET-6, postgraduate entrance exams and the SAT, provided as txt and json files.

2,053 stars344 forksUnknownBSD-3-Clause

At a glance

What is it?
KyleBing/english-vocabulary is a BSD-3-Clause data repository providing 54,356 English words in four formats across seven Chinese standardised test levels. Every definition and translation is in Chinese, which determines who can use the data directly.
Who is it for?
This repository is a practical data source for developers building Chinese-market vocabulary apps or flashcard tools targeting CET-4, CET-6, TOEFL or SAT. It is not appropriate for applications serving English-speaking learners, because every definition is in Chinese.
Can I use it commercially?
Yes. BSD-3-Clause 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 12 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 11, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Seven levels covering 54,356 entries, with TOEFL the largest at 13,477 words

The repository distributes English vocabulary across seven standardised test levels: middle school (初中), high school (高中), CET-4, CET-6, the Chinese graduate entrance exam (考研), TOEFL, and SAT. Combined, all seven sets total 54,356 entries, with individual counts of 3,223 for middle school, 6,008 for high school, 7,508 for CET-4, 5,651 for CET-6, 9,602 for the graduate exam, 13,477 for TOEFL and 8,887 for SAT.

TOEFL at 13,477 entries is the largest level, sitting above the graduate exam's 9,602. SAT at 8,887 entries is smaller than both, which may not match a learner's intuition about difficulty order, since TOEFL and SAT target different skills and are often studied in a different sequence outside China. Level ordering here reflects the scope of each Chinese standardised test rather than a universal difficulty ranking.

These counts apply to the ordered (正序) files only. The README notes that the shuffled (乱序) variants carry a different word count, without giving those numbers anywhere in the documentation, and this discrepancy appears only in a note below the main entry-count table rather than in the table itself. Seven separate shuffled txt files exist at the top level of the repository, named from "1 初中-乱序.txt" through "7 SAT-乱序.txt", confirming the shuffled versions are an independent set. Any pipeline that treats ordered and shuffled files as interchangeable would produce a wrong entry count when loading a shuffled file.

txt, json, jsonl and tsv carry progressively richer fields

Four formats hold the same underlying vocabulary sets, each offering a different level of per-entry detail. txt files carry word and definition only, formatted as one tab-separated line per entry, with a single definition string covering multiple senses and inflected forms for complex words. Moving to json adds an array of phrases for each headword: a json entry for "ability" includes 20 compound expressions alongside the base definition, pairing phrases such as "innovation ability" and "learning ability" with their Chinese translations.

jsonl and tsv extend the json structure further by adding synonyms (近义词) and example sentences (例句). File sizes across the full seven-level set reflect the cumulative cost: the txt set totals 2.42 MB, the json set totals 29.37 MB and the full JSONL tier totals 97.50 MB. For a lightweight lookup table that needs only definitions, txt at 2.42 MB is the smallest option. For an application that must surface example sentences, jsonl or tsv is the only route because neither txt nor json carries that field.

json/ and full_line_jsonl/ serve different processing patterns, and the README labels one 'formal'

Two directories hold JSON-encoded data: json/ and full_line_jsonl/. These are not duplicates of each other. json/ provides one array-per-level file, structured so that loading a level requires reading the entire file at once before any record is accessible. full_line_jsonl/ stores one object per line, and the README calls those files the "正式 JSON" (formal JSON), a label that marks the json/ directory as secondary, even though both exist in parallel and the README does not say the json/ directory is deprecated.

That label is one of the details a skim of the README would miss. A reader who scans only the table of contents sees two JSON directories with no explanation of which to prefer for a given use case. Streaming parsers, line-by-line readers and tools that expect JSONL input can consume full_line_jsonl/ directly without holding the entire level in memory first, while json/ requires loading the whole array up front.

Per-word structure is the same in both. The README's example for "ability" shows what a json/ entry looks like:

json
{
  "word": "ability",
  "translations": [
    {
      "translation": "能力,能耐;才能",
      "type": "n"
    }
  ],
  "phrases": [
    {"phrase": "innovation ability", "translation": "创新能力"},
    {"phrase": "ability for", "translation": "在…的能力"}
  ]
}

Each translation object pairs a Chinese definition string with a part-of-speech type code. Phrase objects pair an English compound with a Chinese translation. Both json/ and full_line_jsonl/ use this same object structure, with the JSONL format wrapping each entry as a single line.

JSONL comes in three tiers and the full tier adds exam question data

Within full_line_jsonl/, three subdirectories hold progressively richer versions of the same word sets. simple carries word, definition and phrases. sentence adds pronunciation (音标) and example sentences on top of simple's fields. full holds the original library's complete structure, which includes synonyms (近义词), cognates (同根词) and exam question data (真题).

File sizes for the TOEFL level show the cost of each additional tier: 5.84 MB for simple, 9.36 MB for sentence and 21.10 MB for full. A flashcard application that only needs definitions and common phrases can use the simple tier without the overhead of the sentence and full tiers. Exam-specific question data requires the full tier and has no smaller substitute.

Comparing the simple tier to the json/ directory clarifies their overlap. simple jsonl totals 29.58 MB across all levels while the json/ set totals 29.37 MB, because both carry the same three fields: word, definition and phrases. That close match confirms that additional size in the sentence and full tiers comes from added fields, not from format overhead.

TSV is generated from JSONL by a script, not stored as an independent source

tsv/ mirrors the three tiers of full_line_jsonl/ in tab-separated form, but TSV is derived data rather than a source. The generation command given in the README is:

bash
python3 scripts/json_to_line.py

Running that script reads from JSONL and writes TSV, which means modifying a TSV file directly and then running the script again would overwrite the modification. Any correction or addition belongs in the JSONL files first, with a TSV regeneration step following. The README gives no parameters for json_to_line.py, no indication of whether it processes all levels at once or accepts a specific target, and no description of how it handles partial runs. A pipeline built around TSV should verify the script's behaviour before depending on incremental updates rather than full regeneration.

All translations are in Chinese, which rules out non-Chinese applications

Every definition, phrase translation and example sentence in the repository is written in Chinese. txt holds a Chinese definition string per word. json phrase arrays pair English compound expressions with Chinese translations, and the JSONL sentence tier includes Chinese translations alongside English example sentences.

This constraint is not stated as a limitation in the README, but it appears in every example the README gives. A dictionary application for English-speaking learners, a language tool without a Chinese user interface, or any pipeline requiring English-language definitions has no usable definition field in this data as it stands. Adding English definitions would require sourcing and aligning them against the existing entries as a separate step, with no tooling for that process in this repository.

The repository's stated motivation confirms who the intended audience is. The author created it because freely accessible English word lists in China required paid membership on content platforms, and the goal was to share a study resource for learners preparing for Chinese standardised exams.

Two derivative projects and the fork lineage that produced this word data

This repository is a simplified fork of KyleBing/dict, which was itself forked from kajweb/dict, as described in the README. That lineage means the underlying word sources predate this repository by at least two project generations, and questions about those original sources sit upstream. The last push to this repository was on 2026-09-30, the licence is BSD-3-Clause, and there are no GitHub releases; recording a specific commit hash is the only way to pin a reproducible snapshot.

Two derivative projects built on this word data are listed in the README: Word Wind by heygsc and 蚕食 by KyleBing. Word Wind is a separately maintained repository; 蚕食 is another KyleBing project that hosts a vocabulary study application. Both are independent of this data repository and neither is bundled with it. Documentation for how either derivative handles upstream changes when word counts or field structures are updated does not exist in the README, so developers building on them would need to track changes manually.

Editorial conclusion

This repository is a practical data source for developers building Chinese-market vocabulary apps or flashcard tools targeting CET-4, CET-6, TOEFL or SAT. It is not appropriate for applications serving English-speaking learners, because every definition is in Chinese. Before integrating it, check the word count in the shuffled files, since the README's table shows ordered-file totals only and the shuffled files carry different counts that are not documented. The only command the repository provides is the TSV generation script, so TSV users need to plan for regeneration when the JSONL source changes.

Frequently asked questions

What exam levels does KyleBing english-vocabulary cover?

The repository covers seven levels: middle school (初中), high school (高中), CET-4, CET-6, the Chinese graduate entrance exam (考研), TOEFL and SAT, with a combined total of 54,356 entries.

What formats does the KyleBing english-vocabulary repository provide?

Four formats are available: txt (word and definition), json (word, definition and phrases), jsonl (three tiers with progressively richer fields) and tsv (same fields as jsonl, tab-separated). TSV is generated from JSONL using python3 scripts/json_to_line.py.

Are the definitions in KyleBing english-vocabulary in English or Chinese?

All definitions, phrase translations and example sentence translations are in Chinese. There is no English-language definition field in any format.

What is the difference between the simple, sentence and full JSONL tiers?

The simple tier carries word, definition and phrases. The sentence tier adds pronunciation and example sentences. The full tier adds synonyms, cognates and exam question data from the original library.

How do I get a stable version of the KyleBing english-vocabulary data?

The repository has no GitHub releases and no version tags. Recording a specific commit hash at integration time is the only way to pin a reproducible snapshot.

Official sources

  1. Issues
  2. KyleBing/english-vocabulary on GitHub
  3. License: BSD-3-Clause
  4. Project website
  5. README
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/kylebing-english-vocabulary.svg)](https://hysenlabs.com/projects/kylebing-english-vocabulary)