Vietnam Grade Average & Rating Calculator (Circular 22)

Subject averages, semester and year ratings Tốt / Khá / Đạt / Chưa đạt, promotion, re-tests and awards for grades 6–12 under Thông tư 22/2021/TT-BGDĐT.

Free tool: 20 requests per minute.

Result

Press “Run” to see the result.

Applies the assessment rules of Thông tư 22/2021/TT-BGDĐT (lower and upper secondary, grades 6–12): the semester average of each scored subject (ΣĐĐGtx + 2 × mid-term + 3 × final) / (number of regular scores + 5), the year average (semester I + 2 × semester II) / 3, rounded to one decimal, and Đạt / Chưa đạt for comment-assessed subjects. Send the component scores or the averages you already have.

The learning result of each semester and of the year is rated Tốt, Khá, Đạt or Chưa đạt with the thresholds of Điều 9 (6.5 / 8.0 for at least six subjects, 5.0 / 6.5, 3.5…), including the rule that raises a result lowered by two or more levels because of a single subject. With the conduct rating and absences, the API decides promotion, summer conduct training or re-tests (and lists the subjects to re-test) and the Học sinh Giỏi / Xuất sắc awards. The number of regular scores is checked against the periods per year.

Formulas and thresholds are unchanged by TT 89/2026/TT-BGDĐT (from 1/12/2026), which changes test organisation and re-test timing. Primary school (TT 27/2020) is not covered.

Use this in your code

curl -X POST "https://apibox.io.vn/v1/vn-school-grade" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subjects":[{"name":"Toán","periods":140,"hk1":{"regular":[8,9,7,8],"mid":8,"final":9},"hk2":9.1},{"name":"Ngữ văn","hk1":7.5,"hk2":8.2},{"name":"Tiếng Anh","hk1":9,"hk2":9.1},{"name":"GDCD","hk1":8.5,"hk2":9},{"name":"KHTN","hk1":8,"hk2":8.4},{"name":"Lịch sử và Địa lý","hk1":7.8,"hk2":8.6},{"name":"Thể dục","type":"comment","hk1":"Đ","hk2":"Đ"}],"conduct":"Tốt","absences":2}'

API documentation → Get a free API key

FAQ

How many regular scores per subject?

Per semester: 2 for subjects with 35 periods a year, 3 for 36–70, 4 above 70; comment subjects have 2. A warning shows when the count differs.

Is there still an overall average of all subjects?

No. TT 22 rates the learning result from the subject averages only; the API does not compute a global average.

What does adjusted_from mean?

The result was lowered by two or more levels by one subject only, so it was raised one level as Điều 9 requires.