Highcharts plugin to add dynamic annotations to charts.

Usage no npm install needed!

<script type="module">
  import highchartsAnnotations from 'https://cdn.skypack.dev/highcharts-annotations';


#f03c15"> Annotations are a part of Highstock 6+ and Highcharts 6+ as a module. This plugin was build for older versions of Highstock.

Annotations module

If you're interested in adding new features or modifying existing ones, please contact us: start@blacklabel.pl
You may also want to check our other demo here: http://demo.blacklabel.pl.


Like any other Highcharts module (e.g. exporting), add <script> tag pointing to annotations.js below Highcharts script tag.

For NPM users:

var Highcharts = require('highcharts'),
    HighchartsAnnotations = require('annotations')(Highcharts);

For BOWER users:

bower install highcharts-annotations

Sample code

new Highcharts.Chart({
  chart: {
    renderTo: container
  series: [{
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0]
  annotations: [{
    xValue: 4,
    yValue: 125,
    title: {
        text: "Annotated chart!"
    events: {
        click: function(e) { console.log("Annotation clicked:", this); }

Available options

Chart options

Option Description
chart.annotations Array containing annotation configuration objects
chart.annotationsOptions Default options for annotations (like buttons' list)

Annotation configuration object

Option Description
Annotation position defined in pixels
Annotation position defined using axis values
Path only. Instead of defining path, set these values to make annotation scalable
Axis index, default to 0
Defines annotation anchor point, available values:
anchorX: "left"/"center"/"right"

anchorY: "top"/"middle"/"bottom"
Allow user to drag and drop an annotation. Horizontal and vertical.
linkedTo Link annotation to point or series using it's id
title Title configuration object
title.text Title text
Title position in pixels, relative to annotation position
title.style Additional CSS styles for title
title.style.color Title text color
title.style.fontSize Title font size
shape Shape configuration object
shape.type Shape type, available types are "path", "circle" and "rect"
shape.units Defines whether shape uses pixels or axis values
shape.params Shape parameters (parameters are passed to renderer method like rect, circle or path)
events Object of events, supported are: mouseover, mouseout, mousedown, mouseup, click, dblclick. this in a callback refers to the annotation object.
selectionMarker Styles for a selected annotation, defaults to: { 'stroke-width': 1, stroke: 'black', fill: 'transparent', dashstyle: 'ShortDash', 'shape-rendering': 'crispEdges' }

Available shape parameters

Option Description Limited to
Shape position relative to the annotation position rect
Rectangle width and height (only for "rect" type) rect
shape.params.d Path definition (only for "path" type) path
shape.params.r Circle radius circle
shape.params.fill Fill color, default: "transparent" -
shape.params.stroke Stroke color, default: "black" -
shape.params.strokeWidth Stroke width (and line width for path), default: 2 -


Property Description
chart.addAnnotation(options) Add one annotation with given options
chart.redrawAnnotations() Redraw all annotations
chart.annotations.allItems Array containing all annotations

Annotation object

Property Description
annotation.update(options) Update an annotation with given options
annotation.destroy() Destroy an annotation
annotation.show() Show an annotation - only for non-linked annotations
annotation.hide() Hide an annotation - only for non-linked annotations
annotation.select() Select an annotation by adding selection box
annotation.deselect() Deselect an annotation by removing selection box


Property Description
enabledButtons Enable or disable buttons for drawing annotations.
Selected button prevents from zooming and panning to draw annotation.
buttonsOffsets Offsets for the buttons in array: [x-offset, y-offset]. Useful when placing annotations next to the exporting module, etc. Defaults to [0, 0].
buttons Array of buttons. For example:
    annotationEvents: {
        step: callback, // to be called during mouse drag for new annotation
        stop: callback  // to be called after mouse up / release
    annotation: { // standard annotation options, used for new annotation
        anchorX: 'left',
        anchorY: 'top',
        xAxis: 0,
        yAxis: 0,
        shape: {
            type: 'path',
            params: {
                d: ['M', 0, 0, 'L', 100, 100 ]
    symbol: { // button symbol options
        shape: 'rect', // shape, taken from Highcharts.symbols
        size: 12,
        style: {
            'stroke-width':  2,
            'stroke': 'black',
            fill: 'red',
            zIndex: 121
    style: { // buton style itself
        fill: 'black',
        stroke: 'blue',
        strokeWidth: 2,
    size: 12, // buton size
    states: { // states for button
        selected: {
            fill: '#9BD'
        hover: {
            fill: '#9BD'

Advanced demo

Go to project page to see this module in action: http://blacklabel.github.io/annotations/