India groundwater levels

How this data was collected, prepared and checked

Every number on the map comes from public well readings published on India-WRIS. This page explains each step from raw readings to a coloured district, what was checked, and where the data is weak.

9.07 milliondaily readings downloaded
64,494monitoring wells on the map
650 of 724districts with at least one value
1985 to 2026pre- and post-monsoon

Source

The readings come from the India Water Resources Information System (India-WRIS), the national water data portal of the Ministry of Jal Shakti. Its Ground Water Level dataset holds measurements of the depth from the ground surface down to the water in a well, reported by the Central Ground Water Board (CGWB) and by state groundwater departments.

Two kinds of well report into it:

  • Manual wells: CGWB's national network of observation wells, measured by hand a few times a year. This is the network CGWB's own yearbooks are based on, and it goes back decades.
  • Telemetric wells (piezometers with automatic sensors): mostly added from about 2020 onwards, reporting daily or more often. They tend to tap deeper water than the older manual wells.

Depth is measured in metres below ground level (m bgl). A larger number means the water is further down: a deeper, and usually more stressed, water table.

Collection

India-WRIS publishes an open API for the dataset. The site's download script asked it for every state, district and reporting agency it lists (1,195 combinations after removing districts listed twice under different spellings), for every year from 1985 to 2026.

  • Only the two seasons the map shows were requested, following CGWB practice: pre-monsoon (March to May, the water table at its lowest) and post-monsoon (October to December, after the rains have recharged it).
  • The download was deliberately slow and polite: at most two requests a second, resumable, and retrying only failed windows. All 100,380 season windows were fetched; 19 that failed at first succeeded on a re-run.
  • Repeated readings of the same well on the same day were reduced to their median, giving 9.07 million well-days from 65,823 stations.
  • India-WRIS station names and village names were fetched separately so wells can be shown by name.

India-WRIS is only reachable from Indian networks, so the download ran on a machine in India rather than on GitHub's servers. The data is therefore refreshed by hand, not automatically.

Cleaning

Raw sensor and manual data has errors. Each fix below was prompted by a real problem found in the readings.

  1. Sign and impossible values. Some stations report depth as a negative number and some as positive, so the absolute value is used. Exact zeros (a common sensor artefact), the -1000 "no data" code, anything 200 m or deeper, and readings at or beyond the well's own depth (a dry well, or a sensor sitting at the bottom) are dropped.
  2. Daily spikes. For each well and season, a day far from that well's own median for the season is removed: more than five robust standard deviations away (median absolute deviation) and at least 2 m off. About 147,000 well-days were removed this way.
  3. One value per well per season. Each well is reduced to the median of its readings in that season, so a sensor reporting 90 days counts the same as a manual well read once.
  4. Season jumps. A well's season value is compared with the same well's values within five years either side. If it is far out of line (again five robust deviations, and at least 15 m) it is removed. Comparing only nearby years lets genuine long declines and recoveries through. 5,187 well-seasons were removed, for example a batch of unrelated Delhi wells that all read about 44 m in one season.

From wells to districts

Each well is placed in a district by its latitude and longitude (point in polygon). 1,255 wells fall outside every district boundary, mostly along coasts and borders, and are left out.

Why not just take the median of each district's wells?

Because the wells measured change from year to year. In 2024 only about 9% of measured wells were CGWB manual wells (median depth 5.3 m); the rest were newer telemetric and state wells tapping deeper water (median 13 m). A plain median made the typical district look about 2.5 m deeper between 2015 and 2024, yet the 5,541 wells measured in both years changed by only 0.2 m. Most of that apparent fall was a change in which wells were measured, not in the water.

What the map does instead

  1. Chain-linking. Each year is linked to the most recent earlier year (within five years) that shares at least three wells with it. The change between the two years is the median change of those shared wells. This gives a district's trend from like-for-like comparisons.
  2. Pinning the level. The linked series is then anchored to the median of CGWB's manual wells, in the year with the most of them. A year can anchor only if manual wells are at least three and at least half of its measured wells. A well counts as manual if it has CGWB's coordinate-style code and was read on three or fewer days that season.
  3. Estimated values. Where a run of years has no usable manual wells (typically a new sensor network after 2020), it continues from the previous run's last level if that ended within five years, otherwise from its own median. These values are marked "Estimated: no manual wells this year" in the district panel.
  4. No filling. A district with no readings in a year and season shows "No data". Nothing is interpolated.

With this method, the 2015 to 2024 pre-monsoon median change is 0.30 m in districts anchored to manual wells and 0.27 m in estimated ones, in line with the like-for-like well comparison.

Verification

Against CGWB's Ground Water Year Book

CGWB's Ground Water Year Book 2023-24 gives, for each state, the share of its manual-network wells in each depth band. The same shares were computed from this site's cleaned data for pre-monsoon 2023, over the 25 states with data on both sides (15,565 wells in the yearbook, 13,088 here).

Share of wells by depth band, pre-monsoon 2023
Depth bandCGWB yearbookThis site
0 to 2 m6.6%6.0%
2 to 5 m33.5%31.1%
5 to 10 m40.7%40.0%
10 to 20 m14.8%16.8%
20 to 40 m2.8%4.2%
40 m and deeper1.7%1.8%

The most common band matches in 22 of the 25 states, and large states agree within 1 to 5 percentage points (Kerala 0.8, Odisha 1.1, Madhya Pradesh 1.7, Karnataka 2.0, Chhattisgarh 2.5, Maharashtra 3.9, Rajasthan 4.6).

What the comparison found

  • The gaps are in what India-WRIS publishes rather than in the processing: it has no CGWB manual readings for Haryana, Punjab, Delhi or Himachal Pradesh in pre-monsoon 2023, and post-monsoon manual data from 2023 onwards is thin (about 4,400 manual wells in November 2023 against roughly 15,000 in 2021 and 2022).
  • The check caught a real bug: "manual" had first been decided by station code alone, but some telemetric wells use the same codes. The rule now also requires few reading days per season, which moved 848 of 47,173 district values by more than 5 m.

Other checks

  • Hand checks of individual districts and wells against the raw readings (for example Delhi's pre-monsoon level: 4.3 m in 1985, 6.0 m in 1995, 8.3 m in 2005, 10.0 m in 2015).
  • Automated tests for the download parser, the outlier rules, chain-linking and district name matching (pipeline/tests/).

Presentation

Districts are coloured in six depth bands, the same bands CGWB uses in its yearbooks, from pale blue (shallow) to deep rust (deep). Grey means no data for that season and year.

  • under 2 m
  • 2 to 5 m
  • 5 to 10 m
  • 10 to 20 m
  • 20 to 40 m
  • 40 m and deeper
  • no data

The district page summarises each district with these figures:

  • Long-term trend: the least-squares slope through all the district's values for the season, in metres per year. "Deeper" means the water table is falling. Needs at least three years.
  • Last 10 years: the same slope over the ten years up to the selected year.
  • Change over 10 years: the selected year against the year ten years earlier (or nine or eleven, if that year has no data).
  • Monsoon recharge: the typical rise from pre- to post-monsoon in the same year, as the median over the ten years up to the selected year.
  • Rank in state: where the district stands among its state's districts for the selected season and year, 1st being the deepest.
  • Deepest and shallowest: the extreme years in the district's record for the season.

Well values on the district page are each well's own cleaned seasonal value, not chain-linked.

Boundaries and names

  • District boundaries come from the open india-maps-data project: Census 2011 districts plus later splits, 724 districts, simplified for the web. They are a mixed-vintage set, so the newest districts are mapped to their parent district.
  • The national outline was checked against India's official map by reference points (for example Gilgit, Aksai Chin and Siachen fall in Ladakh, Muzaffarabad in Jammu and Kashmir, Tawang in Arunachal Pradesh, Sir Creek in Kutch). The internal divisions in those areas are simplified, and this is not Survey of India's own boundary data.
  • Well names are India-WRIS station names, cleaned up for display (89% of wells). The rest are labelled by the nearest populated place from GeoNames (CC BY 4.0).

Limitations

This is an independent, unofficial visualisation of public data. For official figures, use CGWB's publications.

  • A district value summarises the wells measured in it, which may not represent every aquifer or every part of the district. A few wells can carry a district in early years.
  • Coverage varies: before about 1995 many districts have only a handful of wells; post-monsoon from 2023 is thin; some states lack manual readings in some years, so their values are estimated.
  • Pre-monsoon 2020 has very few readings (the COVID-19 lockdown).
  • Outlier removal is automatic and can occasionally drop a genuine but unusual reading, or keep a bad one.
  • The 2026 post-monsoon season was downloaded while still in progress.

Reproduce it

All code is open in the GitHub repository. From a machine in India, with Python 3:

pip install -r pipeline/requirements.txt
python pipeline/fetch.py        # download readings from India-WRIS (many hours, resumable)
python pipeline/fetch_names.py  # station names
python pipeline/place_names.py  # GeoNames places
python pipeline/aggregate.py    # clean and build public/data/

Each district's series can also be downloaded as CSV from its panel on the map.

Open the map