Change Windy parameters

Main Windy parameters like overlay, level, and forecast model are identified by a string identifier, for example overlay can be rainAccu, or level can be 850h.

The state of the Windy map is then stored in the key-value store which can be used via Use methods .get(key) or .set(key,value) to read or modify values.

Handy method .getAllowed(key) will return an array of allowed values for a given key.

Windy parameters can be changed at start-up (using start-up options object) which can lead to a faster loading time.

Parameters can also be changed during runtime. is also an Event Emitter so observe changes of parameters with methods .on(), .off(), or .once().

Main items stored in


Color weather overlay.


Level used for actual displayed overlay or isolines. To get a list of available levels for the current combination of overlay and data provider, use store.get('availLevels')


List of levels that are available for the current combination of product and overlay.


Accumulated time.


Timestamp of actual weather moments. Use freely and without hesitation.


Isolines displayed over the map.


Product is a set of weather data that have the same resolution, boundaries, time range, and so on. For simplification, you can think of product as a weather model.


Animation of wind/waves particles over the map. Set the value to on, or off if you want to hide or show them.


Display the graticule over the map. Set it to true or false.


Display lat/lon values on the weather picker. Set it to true or false.


Show English map labels instead of localized labels. Set it to true or false.


Desired language for Windy. By default, the language is determined by the user's browser settings and set to auto.


Time format, Set it to 12h or 24h.


Display directions in Weather picker as a number or string (for example NW). Set it to true or false..


List of overlays that are displayed in the overlays menu. Always create a new array when you want to modify this list (.store is primitive and can't compare arrays)

Source code


            content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
        <script src=""></script>
        <script src=""></script>
            #windy {
                width: 100%;
                height: 300px;
        <div id="windy"></div>
        <script src="script.js"></script>


const options = {
    key: 'PsLAtXpsPTZexBwUkO7Mx5I', // REPLACE WITH YOUR KEY !!!

    // Changing Windy parameters at start-up time
    // (recommended for faster start-up)
    lat: 50.4,
    lon: 14.3,
    zoom: 5,

    timestamp: + 3 * 24 * 60 * 60 * 1000,

    hourFormat: '12h',

    // ...etc

windyInit(options, windyAPI => {
    const { store } = windyAPI;
    // All the params are stored in

    const levels = store.getAllowed('availLevels');
    // levels = ['surface', '850h', ... ]
    // Getting all available values for given key

    let i = 0;
    setInterval(() => {
        i = i === levels.length - 1 ? 0 : i + 1;

        // Changing Windy params at runtime
        store.set('level', levels[i]);
    }, 500);

    // Observing change of .store value
    store.on('level', level => {
        console.log(`Level was changed: ${level}`);