{"id":17802,"date":"2019-03-29T14:20:49","date_gmt":"2019-03-29T14:20:49","guid":{"rendered":"http:\/\/www.highcharts.com\/blog\/?p=17802"},"modified":"2026-01-12T10:10:05","modified_gmt":"2026-01-12T10:10:05","slug":"best-chart-accessibility-practices","status":"publish","type":"post","link":"https:\/\/www.highcharts.com\/blog\/best-practices\/best-chart-accessibility-practices\/","title":{"rendered":"Chart accessibility best practices"},"content":{"rendered":"\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-355c4241 wp-block-group-is-layout-flex\">\n<p>In this article, I will share with you the best chart accessibility practices, and how you can practically create an effective accessibility friendly charts.<\/p>\n\n\n\n<p>In today\u2019s world, design concepts like responsiveness are reigning supreme: as the line between web experience on different devices is ever so blurry, we design our products to be as universal as possible. With the mass adoption of smartphones, we\u2019ve started to create interfaces with equality in mind \u2014 equality of desktop and mobile users, experience-wise. However, just like we bridge the gap between desktop and mobile paradigms, we should also focus on another important aspect \u2014 accessibility.<\/p>\n\n\n\n<p>The aim of web accessibility is to address the needs that include visual, motor\/mobility, auditory, cognitive\/intellectual needs and\/or seizures. Thanks to <a href=\"https:\/\/www.w3.org\/standards\/webdesign\/accessibility\">standards<\/a> developed by the World Wide Web Consortium, the Internet manages to fulfill its goal \u2014 unrestricted access to information, despite the user\u2019s (dis)ability. With charts and graphs relying heavily on colors and shapes as a way to convey the message, chart accessibility must be front and center for any web accessibility effort.<\/p>\n\n\n\n<p>As implementing additional features to support accessibility is \u201cadditional\u201d work, it may be tempting to brush it off as \u201cjust another gimmick\u201d. It is not. Consider this fact about accessibility and color blindness (just one of many visual impairments): Imagine that you are not reaching 4.25% (i.e. the number of people with color blindness) of your audience because you are not using a microphone. \u201cA picture is worth a thousand words\u201d \u2014 and a good visualization of just how many people may not be able to perceive your message is equally powerful.<\/p>\n\n\n\n<p>According to <a href=\"http:\/\/www.colourblindawareness.org\/\">Color Blind Awareness<\/a>, a non-profit dedicated to raising awareness of the needs of the color blind in the community, approximately 1 in 12 men (8%) and 1 in 200 women (0.5%) in the world are affected by color blindness. Interestingly enough, these statistics are region-dependent: <i>\u201cThese figures rise in areas where there is a greater number of white (Caucasian) people per head of population, so in Scandinavia, the figures increase to approximately 10-11% of men. By contrast in sub-Saharan Africa, there are few color blind people.\u201d<\/i><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-346627ba wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">Strategies to Enhance Accessibility<\/h2>\n\n\n\n<p>There are a number of best-practices which enable your charts to be more accessible and convey your message in a clearer way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\"><b>Use SVG pictures<\/b><\/h3>\n\n\n\n<p>One of the highlights is prioritizing formats that allow for better scaling across different display sizes (e.g. desktop vs mobile, etc): in this case, scalable solutions like tables and SVG will prove to be the most effective.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\"><b>Text description<\/b><\/h3>\n\n\n\n<p>A great practice to follow is providing your users with a text description of the chart. The description can also serve as the chart\u2019s summary \u2014 and this addresses a major caveat of data visualization: not only presenting the data in a beautiful way but helping the user draw a conclusion. Although the story the data tell may seem self-evident to the chart\u2019s creator, the viewer, on the other hand, may struggle to connect the dots: \u201cValue A has been on the rise throughout the last 4 years, but decreased significantly during the last quarter\u2026 why?\u201d<\/p>\n\n\n\n<p>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/ExyxyEm\">demo <\/a><br><iframe style=\"width: 100%;\" title=\"Sales of Apple Mac Computers\" src=\"https:\/\/codepen.io\/mushigh\/embed\/ExyxyEm?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"500\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><br \/>\n  See the Pen <a href=\"https:\/\/codepen.io\/mushigh\/pen\/ExyxyEm\">Sales of Apple Mac Computers<\/a> by mustapha mekhatria<br \/>\n  (<a href=\"https:\/\/codepen.io\/mushigh\">@mushigh<\/a>) on <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/><\/iframe><\/p>\n\n\n\n<p>We can take this chart as an example and add a description to it: \u201cThis chart shows global sales figures for Apple Mac computers during the last 5 years (2014-present). The numbers indicate that sales increase dramatically in every 4th quarter, remain high in the 1st quarter, then decline rapidly in the 2nd and 3rd quarters. This tendency can be explained by Apple holding its annual event (where it showcases new devices) during Q4 \u2014 users buy the newest Macs during Q4 and subsequent Q1, but prefer to wait for newer devices during time periods of Q2 and Q3.\u201d<\/p>\n\n\n\n<p>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/eYzYzrd\">demo<\/a><br><iframe style=\"width: 100%;\" title=\"Sales of Apple Mac Computers (with description)\" src=\"https:\/\/codepen.io\/mushigh\/embed\/eYzYzrd?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"620\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\">&lt;br \/><br>  See the Pen &lt;a href=&#8221;https:\/\/codepen.io\/mushigh\/pen\/eYzYzrd&#8221;>Sales of Apple Mac Computers (with description)&lt;\/a> by mustapha mekhatria&lt;br \/><br>  (&lt;a href=&#8221;https:\/\/codepen.io\/mushigh&#8221;>@mushigh&lt;\/a>) on &lt;a href=&#8221;https:\/\/codepen.io&#8221;>CodePen&lt;\/a>.&lt;br \/><\/iframe><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\"><b>Duplicate Data from Charts to Tables<\/b><\/h3>\n\n\n\n<p>Presenting raw numbers can be done via graphs and charts \u2014 but also via tables, especially when the difference is marginal (and precise numbers cannot fit into smaller parts of the chart).<br>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/mdEdELz\">demo<\/a><br><iframe style=\"width: 100%;\" title=\"mdEdELz\" src=\"https:\/\/codepen.io\/mushigh\/embed\/mdEdELz?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"890\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\">&lt;br \/><br>  See the Pen &lt;a href=&#8221;https:\/\/codepen.io\/mushigh\/pen\/mdEdELz&#8221;>mdEdELz&lt;\/a> by mustapha mekhatria&lt;br \/><br>  (&lt;a href=&#8221;https:\/\/codepen.io\/mushigh&#8221;>@mushigh&lt;\/a>) on &lt;a href=&#8221;https:\/\/codepen.io&#8221;>CodePen&lt;\/a>.&lt;br \/><\/iframe><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\">Shades<\/h3>\n\n\n\n<p>Using shades of the same color (instead of solid colors) allows for optimal accessibility:<\/p>\n\n\n\n<p>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/ZEOEORp\">demo<\/a><\/p>\n\n\n\n<div class=\"wp-block-highsoft-hs-iframe hs-iframe\" style=\"height:500px\"><div class=\"hs-iframe__container\"><iframe src=\"https:\/\/codepen.io\/mushigh\/embed\/ZEOEORp?height=500&amp;theme-id=light&amp;default-tab=result&amp;user=mushigh&amp;slug-hash=ZEOEORp&amp;pen-title=Browser%20market%20shares%20at%20a%20specific%20website%2C%202014&amp;name=cp_embed_1\" class=\"hs-iframe__main\" title=\"\" loading=\"lazy\" allowfullscreen scrolling=\"no\"><\/iframe><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\">Patterns<\/h3>\n\n\n\n<p>The same logic applies to use patterns which allow differentiating various groups of data from each other:<\/p>\n\n\n\n<p>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/xxOxONY\">demo<\/a><br><iframe style=\"width: 100%;\" title=\"Pattern fill plugin demo\" src=\"https:\/\/codepen.io\/mushigh\/embed\/xxOxONY?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"500\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><br \/>\n  See the Pen <a href=\"https:\/\/codepen.io\/mushigh\/pen\/xxOxONY\">Pattern fill plugin demo<\/a> by mustapha mekhatria<br \/>\n  (<a href=\"https:\/\/codepen.io\/mushigh\">@mushigh<\/a>) on <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/><\/iframe><\/p>\n\n\n\n<p>Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/qBNBNzY\">demo<\/a><br><iframe style=\"width: 100%;\" title=\"qBNBNzY\" src=\"https:\/\/codepen.io\/mushigh\/embed\/qBNBNzY?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"500\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><br \/>\n  See the Pen <a href=\"https:\/\/codepen.io\/mushigh\/pen\/qBNBNzY\">qBNBNzY<\/a> by mustapha mekhatria<br \/>\n  (<a href=\"https:\/\/codepen.io\/mushigh\">@mushigh<\/a>) on <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/><\/iframe><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\"><b>Highcharts Accessibility API<\/b><\/h3>\n\n\n\n<p>Creating accessible charts may seem like a lot of extra work; however, you can simply use the Accessibility Module that comes with Highcharts, Highstock and Highmaps. All you have to do is to insert the following line to your HTML page:<\/p>\n\n\n\n<div class=\"hs-code-outer-container\"><div class=\"hs-code-container attention-50-light neutral-800-dark\" tabindex=\"0\" role=\"region\" aria-label=\"Code block\">\n<pre class=\"wp-block-code\"><code><code>&lt;script src=\"http:\/\/code.highcharts.com\/modules\/accessibility.js\"&gt;&lt;\/script&gt;<\/code><\/code><\/pre>\n\n\n\n<div class=\"wp-block-highsoft-hs-button\"><button type=\"button\" class=\"hc-button hc-button--white hc-button--size-200\" aria-label=\"Copy\" data-copy-code=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 8V5.2c0-1.12 0-1.68.218-2.108a2 2 0 0 1 .874-.874C9.52 2 10.08 2 11.2 2h7.6c1.12 0 1.68 0 2.108.218a2 2 0 0 1 .874.874C22 3.52 22 4.08 22 5.2v7.6c0 1.12 0 1.68-.218 2.108a2 2 0 0 1-.874.874C20.48 16 19.92 16 18.8 16H16M5.2 22h7.6c1.12 0 1.68 0 2.108-.218a2 2 0 0 0 .874-.874C16 20.48 16 19.92 16 18.8v-7.6c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874C14.48 8 13.92 8 12.8 8H5.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C2 9.52 2 10.08 2 11.2v7.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C3.52 22 4.08 22 5.2 22\"><\/path><\/svg>Copy<\/button><\/div>\n<\/div><\/div>\n\n\n\n<p>Now, the charts created have keyboard navigation support, support for navigating and reading the charts with a screen reader, and also include a hidden HTML screen reader information section above the chart with details about the chart structure and content.<\/p>\n\n\n\n<p><iframe style=\"width: 100%; height: 650px;\" src=\"https:\/\/www.highcharts.com\/samples\/highcharts\/accessibility\/accessible-line\/\" frameborder=\"0\"><\/iframe><\/p>\n\n\n\n<p><iframe style=\"width: 100%; height: 670px;\" src=\"https:\/\/www.highcharts.com\/samples\/maps\/accessibility\/accessible-map\/\" frameborder=\"0\"><\/iframe><\/p>\n\n\n\n<p><iframe style=\"width: 100%; height: 500px;\" src=\"https:\/\/www.highcharts.com\/samples\/stock\/accessibility\/accessible-stock\/\" frameborder=\"0\"><\/iframe><\/p>\n\n\n\n<p>To allow for better visibility on greyscale prints, we can increase the contrast via:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Applying <a href=\"http:\/\/api.highcharts.com\/highcharts\/plotOptions.line.dashStyle\">dash styles<\/a> to line series. This will make lines distinguishable even on poor black\/white prints, as shown in this <a href=\"http:\/\/jsfiddle.net\/mushigh\/zYBYKOP\/\">live demo<\/a>.Link to the <a href=\"https:\/\/codepen.io\/mushigh\/pen\/zYBYKOP\">demo<\/a><br><iframe style=\"width: 100%;\" title=\"Applying dash styles to line series\" src=\"https:\/\/codepen.io\/mushigh\/embed\/zYBYKOP?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"500\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\">&lt;br \/><br>  See the Pen &lt;a href=&#8221;https:\/\/codepen.io\/mushigh\/pen\/zYBYKOP&#8221;>Applying dash styles to line series&lt;\/a> by mustapha mekhatria&lt;br \/><br>  (&lt;a href=&#8221;https:\/\/codepen.io\/mushigh&#8221;>@mushigh&lt;\/a>) on &lt;a href=&#8221;https:\/\/codepen.io&#8221;>CodePen&lt;\/a>.&lt;br \/><\/iframe><\/li>\n\n\n\n<li>Applying a pattern fill to areas, columns or plot bands. This can be accomplished through the featured <a href=\"https:\/\/www.highcharts.com\/plugin-registry\/single\/9\/Pattern-Fill\">pattern fill plugin<\/a>. Note, however, that using patterns can also be visually distracting and cause unnecessary cognitive load. Subtitle patterns are often recommended.<br><iframe style=\"width: 100%;\" title=\"Accessible pie chart\" src=\"https:\/\/codepen.io\/mushigh\/embed\/oNLNzNP?height=265&amp;theme-id=light&amp;default-tab=result\" height=\"610\" frameborder=\"no\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\">&lt;br \/><br>  See the Pen &lt;a href=&#8221;https:\/\/codepen.io\/mushigh\/pen\/oNLNzNP&#8221;>Accessible pie chart&lt;\/a> by mustapha mekhatria&lt;br \/><br>  (&lt;a href=&#8221;https:\/\/codepen.io\/mushigh&#8221;>@mushigh&lt;\/a>) on &lt;a href=&#8221;https:\/\/codepen.io&#8221;>CodePen&lt;\/a>.&lt;br \/><\/iframe><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-font-size-300-font-size\"><b>Conclusion<\/b><\/h3>\n\n\n\n<p>Today\u2019s technological progress has many features: virtual reality, artificial intelligence and many other technologies previously considered \u201csci-fi\u201d. While working with Highchart\u2019s accessibility API, I realized that accessibility is the true hallmark of this progress: all of a sudden, we as the developer community can help people with different visual impairments access information with ease. Accessibility is gaining in popularity and will surely be among the <a href=\"https:\/\/blog.soshace.com\/en\/2019\/03\/06\/hot-topics-in-web-development-12-hottest-trends-for-2019\/\">trends<\/a> like cloud computing and VR. I\u2019m really enjoying designing in this paradigm \u2014 and encourage you to add accessibility features to your product as well.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Learn the best chart accessibility practices to create a compelling interactive accessibility chart.<\/p>\n","protected":false},"author":238,"featured_media":17836,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"meta_title":"","meta_description":"","hc_selected_options":[],"footnotes":""},"categories":[1104],"tags":[789,1063],"coauthors":[768],"class_list":["post-17802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices","tag-accessibility","tag-data-visualization"],"_links":{"self":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/17802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/comments?post=17802"}],"version-history":[{"count":2,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/17802\/revisions"}],"predecessor-version":[{"id":28694,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/17802\/revisions\/28694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/media\/17836"}],"wp:attachment":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/media?parent=17802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/categories?post=17802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/tags?post=17802"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/coauthors?post=17802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}