Skip to content

ESMValTool: A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP


Notifications You must be signed in to change notification settings


Repository files navigation

Maintenance made-with-python Documentation Status DOI Chat on Matrix CircleCI Test in Full Development Mode Codacy Badge Docker Build Status Anaconda-Server Badge stand with Ukraine



ESMValTool is a community-developed climate model diagnostics and evaluation software package, driven both by computational performance and scientific accuracy and reproducibility. ESMValTool is open to both users and developers, encouraging open exchange of diagnostic source code and evaluation results from the Coupled Model Intercomparison Project CMIP ensemble. For a comprehensive introduction to ESMValTool please visit our documentation page.

Running esmvaltool

Diagnostics from ESMValTool are run using recipe files that contain pointers to the requested data types, directives for the preprocessing steps that data will be subject to, and directives for the actual diagnostics that will be run with the now preprocessed data. Data preprocessing is done via the ESMValCore package, a pure Python, highly-optimized scientific library, developed by the ESMValTool core developers, and that performs a number of common analysis tasks such as regridding, masking, levels extraction etc. Diagnostics are written in a variety of programming languages (Python, NCL, R, Julia) and are developed by the wider scientific community, and included after a scientific and technical review process.

Input data

ESMValTool can run with the following types of data as input:

Getting started

Please see getting started on our instance of Read the Docs as well as ESMValTool tutorial. The tutorial is a set of lessons that together teach skills needed to work with ESMValTool in climate-related domains.

Getting help

The easiest way to get help, if you cannot find the answer in the documentation in our docs, is to open an issue on GitHub.


If you would like to contribute a new diagnostic or feature, please have a look at our contribution guidelines.