Accepted answer

This has been added per the uservoice entry.


I used a little workaround to solve this problem. Basically I'm overlaying a div containing the message "No Data to Display".

.noChartData {
     display: hidden;         
     position: absolute;
     z-index: 99;
     font-family: Arial, Helvetica, sans-serif;
     font-size: 16px;
     font-weight: normal;
     color: #CCC;

<div class="noChartData">No Data to Display</div>

When the page loads I'm using JQuery to find the position of the chart then offsetting the "No Data" div and revealing it accordingly.

var chartPosition = $("#myChart").position();
$(".noChartData").css("left", chartPosition.left + 400);
$(".noChartData").css("top", + 150);

You'll need to vary the offsets accordingly depending on the size of your chart. I am using an AJAX call to pull in the series and category data so I know just before I bind the chart whether or not to reveal the floating "No Data" div.


A very simple example:

Highcharts.setOptions({lang: {noData: "Your custom message"}})
var chart = Highcharts.chart('container', {
    series: [{
        data: []
<script src=""></script>
<script src=""></script>

<div id="container" style="height: 250px"></div>

Hope this helps someone


It is now supported in Highcharts since v3.0.8

You need to load the no-data module and then, you can specify a custom message through the lang.noData option:

Highcharts.setOptions({lang: {noData: "Your custom message"}});

Related Query

More Query from same tag