Government of Tamil Nadu spending on higher education department (Demand No. 20): what was spent, what is budgeted for 2026-27, and what the Budget announced. Every figure traces to a page of an official budget document.
For context: the 2026-27 Budget Speech announced ₹8,393 crore for the whole Higher Education Department. The department's budget is spread over several Demands for Grants: 20 Higher Education Department (this page).
Amount grew from ₹4,504 crore in 2018-19 to ₹8,393 crore in 2026-27
Total of all heads of this Demand, ₹ crore. Each year shows the latest stage available: Actual, then Revised Estimate (RE), then Revised Budget Estimate (RBE).
- Revenue
- Capital
- Loans
| 2018-19 | 4,504.1 |
|---|---|
| 2019-20 | 4,878.1 |
| 2020-21 | 4,756.0 |
| 2021-22 | 4,703.7 |
| 2022-23 | 5,471.4 |
| 2023-24 | 6,264.8 |
| 2024-25 | 6,086.2 |
| 2025-26 | 8,103.9 |
| 2026-27 | 8,393.2 |
Source: Demand No. 20 books and Annual Financial Statements, Government of Tamil Nadu. Values in ₹ crore.
Largest allocations
Top five minor heads, ₹ crore.
| Minor head | 2024-25 Actual | 2025-26 RE | 2026-27 RBE |
|---|---|---|---|
| 2202-03-104 Assistance to Non-Government Colleges and Institutes | 1,836.6 | 2,007.8 | 2,208.4 |
| 2202-03-103 Government Colleges and Institutes | 1,593.3 | 1,768.1 | 1,998.5 |
| 2202-03-102 Assistance to Universities | 681.1 | 1,049.7 | 1,284.1 |
| 2203-00-112 Engineering/Technical Colleges and Institutes | 524.1 | 603.7 | 691.7 |
| 2203-00-105 Polytechnics | 533.9 | 602.6 | 628.0 |
Detailed allocation
Loading the explorer…
Series show the latest stage available for each year (Actual > RE > RBE > IBE > BE). Head 2203 is compared with the Annual Financial Statements. Heads 2059, 2202, 2205, 2235, 2251, 3425, 3454, 4070, 4202, 7610 are shared with other Demands and are not compared. 12 related data issues
Known data issues
Known gaps and discrepancies in the source documents or between them. Each has a permanent ID. “Documented” means the document itself is wrong and we kept the printed figure; “open” means we have not found the cause.
12 issues
| ID | Status | What | Treatment |
|---|---|---|---|
DQ-D20-0001 | explained | latest-stage roll-up does not add up 2202-03-001-AA, 2022-23 Object values add to 252,484 thousand but the sub-head shows 252,490 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (0 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0002 | explained | latest-stage roll-up does not add up 2202-03-103-AA, 2022-23 Object values add to 9,256,365 thousand but the sub-head shows 9,256,371 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (2 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0003 | explained | latest-stage roll-up does not add up 2202-03-103-AC, 2022-23 Object values add to 139,274 thousand but the sub-head shows 139,281 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (0 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0004 | explained | latest-stage roll-up does not add up 2202-03-104-AA, 2022-23 Object values add to 16,737,452 thousand but the sub-head shows 16,733,952 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (2 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0005 | explained | latest-stage roll-up does not add up 2203-00-001-AB, 2019-20 Object values add to 221,019 thousand but the sub-head shows 217,519 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (2 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0006 | explained | latest-stage roll-up does not add up 2203-00-105-AA, 2019-20 Object values add to 1,187,934 thousand but the sub-head shows 1,187,877 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (2 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0007 | explained | latest-stage roll-up does not add up 2203-00-105-AA, 2022-23 Object values add to 2,173,940 thousand but the sub-head shows 2,173,946 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (6 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0008 | explained | latest-stage roll-up does not add up 2203-00-105-AB, 2022-23 Object values add to 176,838 thousand but the sub-head shows 176,845 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (2 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0009 | explained | latest-stage roll-up does not add up 2203-00-105-AC, 2022-23 Object values add to 95,099 thousand but the sub-head shows 95,105 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (3 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0010 | explained | latest-stage roll-up does not add up 2203-00-800-AK, 2022-23 Object values add to 1,952 thousand but the sub-head shows 316 The latest value per code is chosen separately, and for some codes under this sub-head the Actual column is blank, so an earlier-stage figure is used (14 codes here use a different stage from the sub-head). Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0011 | explained | latest-stage roll-up differs by rounding 25 sub-head/year pairs For 25 sub-head/year pairs the object values add to within Rs 5 thousand of the sub-head figure (largest difference 5 thousand = Rs 0.0005 crore) Each code shows its latest printed stage, and different codes under one sub-head can come from different books, where amounts are rounded separately. Within each demand book every total ties exactly. | Published as is; each code carries its own stage |
DQ-D20-0012 | explained | code printed in some books but not in between 32 code families 32 codes (with the codes below them) are printed in some books, absent from a book in between and printed again later. Examples: 2059-01-911 'Deduct – Recoveries of Overpayments' (absent from 2021-22 IBE, 2021-22 RBE, 2022-23 BE, 2023-24 BE, 2024-25 BE); 2202-03-001-AA-305-05 'Directorate of Collegiate Education' (absent from 2021-22 RBE); 2202-03-102-AA-309-02 'University of Madras' (absent from 2022-23 BE). The full list is in the master_codes file (columns books_present and books_list). Checked against the PDFs: for 56 of 56 family/book absences a text search of the book finds no line with that code. A line with nothing to show in a book seems to be left out of that book; this has not been confirmed with the department. | Each code kept once; presence per book recorded in books_list |
Downloads
Higher Education Department (Demand 20): budget by code
Every code in Demand 20 from major head down to detail, with full hierarchy and the latest-stage value per fiscal year in Rs crore.
- master_codes.csv CSV · 1,908 rows · 1.0 MB
- values_long.csv CSV · 14,090 rows · 2.9 MB
master_code is built only from printed codes. Voted and charged amounts are summed. Where the latest printed figure is nil the value is 0.
Column dictionary (27 columns)
| Column | Type | Meaning |
|---|---|---|
master_code | string | Unique alphanumeric code built from printed codes only, for example 2404-00-195-AB-309-03. |
level | string | Level of the code: major, minor, subhead, object or detail. |
major_code | string | Major head code. |
major_description | string | Major head description. |
minor_code | string | Minor head code with major and sub-major. |
minor_description | string | Minor head description. |
category | string | State's Expenditure, Central Sector Schemes, or Schemes Shared between State and Centre. |
subhead_code | string | Sub-head code. |
subhead_description | string | Sub-head description. |
object_code | string | Object code. |
object_description | string | Object description. |
detail_code | string | Detail code. |
detail_description | string | Detail description. |
full_path_description | string | Descriptions of all levels joined top to bottom. |
parent_code | string | master_code of the level above. |
alternate_labels | string | Older wording of the description, where it changed. |
hod | string | Head of department code printed in the demand book. |
first_book | string | First demand book that prints the code. |
last_book | string | Last demand book that prints the code. |
books_present | integer | Number of the six demand books that print the code. |
books_list | string | The demand books that print the code. |
status | string | Status of the item: for codes, in all books, new, discontinued or intermittent; for issues, documented, explained or open. |
fiscal_year | string | Financial year, April to March, written like 2025-26. |
stage | string | Budget stage of the figure: Actual (audited), RE (revised estimate), RBE (revised budget estimate), IBE (interim budget estimate) or BE (budget estimate). |
amount_crore | number | Amount in Rs crore (1 crore = 10 million rupees). |
amount_thousand | number | Amount in Rs thousand, as printed in the source document. |
source_edition | string | The budget document the figure was read from, for example 2026-27 RBE. |
AFS compared with the Higher Education Department demand book
Head 2203 as printed in each Annual Financial Statement and in the matching Demand 20 book: 36 of 36 comparisons agree to within Rs 5 thousand; every other difference is listed as a data issue (see data issues). Heads shared with other Demands are not compared.
- afs_vs_demand20.csv CSV · 36 rows · 3 KB
Column dictionary (11 columns)
| Column | Type | Meaning |
|---|---|---|
book | string | The edition of the budget document (AFS and demand book share the edition). |
head | integer | Major head: 2404 (revenue), 4404 (capital outlay) or 6404 (loans). |
fiscal_year | string | Financial year, April to March, written like 2025-26. |
estimate_type | string | Budget stage of the figure (Actual, RE, RBE, IBE, BE). |
afs_thousand | number | Amount printed in the AFS, Rs thousand. |
demand_thousand | integer | Amount printed in the demand book, Rs thousand. |
afs_crore | number | Amount printed in the Annual Financial Statement, Rs crore. |
demand_crore | number | Amount printed in the Dairy Development demand book, Rs crore. |
gap_thousand | number | AFS minus demand book, Rs thousand. |
gap_crore | number | AFS minus demand book, Rs crore. |
gap_pct_of_afs | number | Gap as a percentage of the AFS amount. |
Budget announcements
Everything the Budget speech and highlights announce (currently the 2026-27 Revised Budget Estimates): schemes, projects, programmes, reforms, subsidies and policies. One row per announcement per budget year, with the primary amount exactly as printed, its kind (allocation, project cost and so on), the speech paragraph and highlights bullet it comes from, and the Demand(s) for Grants it relates to.
- announcements.csv CSV · 178 rows · 66 KB
announcement_code is permanent: an announcement keeps its code in every budget year, and one that ends is marked is_current = no, never removed. related_demands links the announcement to the Demand(s) for Grants it relates to; blank means not yet linked. source_document names the budget document, and paragraph or bullet, each row was taken from. Some amounts are the current-year allocation, others the cost of a whole project: always read amount_kind.
Column dictionary (17 columns)
| Column | Type | Meaning |
|---|---|---|
announcement_code | string | Permanent ID of the announcement, SCH-2026-nnn. It never changes and is never reused. |
budget_year | string | Fiscal year of the budget document the row was taken from, for example 2026-27. |
name | string | Scheme, project, policy or announcement name as used on this site. |
department | string | Department heading under which the speech and highlights list the item. |
item_type | string | scheme, project, programme, policy, fund, subsidy, reform, platform, committee, announcement and so on. |
related_demands | string | Demand No(s). for Grants this announcement relates to, separated by semicolons (for example 08). Blank if not yet linked. |
amount_text | string | Primary amount exactly as printed, for example Rs.139 crore. |
amount_crore | number | Amount in Rs crore (1 crore = 10 million rupees). |
amount_kind | string | What the amount is: allocation, cost_stated, project_cost, valued_at, annual, multi_year_cost, capital_outlay, increase, viability_gap, credit_target, grant_sought or none. |
other_amounts | string | Other amounts printed with the item, each with what it is. |
source_document | string | Budget document, and the paragraph or bullet in it, that this row was taken from. |
highlights_bullet | integer | Bullet number in the highlights document. |
highlights_page | string | Printed page of that bullet in the highlights. |
speech_para | integer | Paragraph number in the budget speech. |
speech_page | string | Printed page of that paragraph in the speech. |
is_current | string | yes if the announcement is part of the current budget; no if it has ended or been withdrawn (the row and its code are kept). |
source_text | string | The highlights bullet text the entry is based on. |