Accessibility Report for Kanopy


March 2023

This report was written with support from the Government of Canada’s Social Development Partnerships Program – Disability Component.

The opinions and interpretations in this publication are those of the author and do not necessarily reflect those of the Government of Canada.

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.


The National Network for Equitable Library Service (NNELS) is a digital public library of ebooks for Canadians with print disabilities, and an advocate for an accessible and equitable reading ecosystem for Canadians with print disabilities[1]. NNELS supports principles of openness, inclusion, and choice. NNELS is hosted by the BC Libraries Cooperative, a community service not-for-profit cooperative and a national leader in information and technology services.

Our team of Accessibility Testers has expert knowledge in the areas of accessibility testing, analysis, software development, and leadership. The team works to educate and advise publishers, technology vendors, and public libraries on best practices for accessibility. Our testers have lived experience with a range of print disabilities, including blindness, low vision, and learning disabilities.


Kanopy is a video streaming platform available as a mobile application and website that offers classic and contemporary movies, TV series, and documentaries. It includes a Kid’s section where only content suitable for children can be accessed.

Owned by the e-reading platform OverDrive, Kanopy is available exclusively to registered patrons of public and academic institutional libraries. Users can access a set number of titles (individual credits) each month, depending on library subscription terms. NNELS testers had access to anywhere from 5 to 8 credits per month for a loan period of 48 to 72 hours. For young audiences, Kanopy Kids provides an unlimited number of credits per month.

Unlike e-reader apps such as Libby or OverDrive which can be accessed using a library card and pin, Kanopy requires a separate account. The company recommends using a web browser for account setup, though the process can be done on the Kanopy app. Regardless of which device is used, tapping the “Get Started” button displays the first screen of the sign-up process, alerting the registrant of the four steps to follow.

  1. Confirm if they hold a public library card or are affiliated with a university as a student or professor.
  2. Identify their library (or university if selected) to confirm it is a Kanopy subscriber.
  3. Provide the library card number and login pin or password.
  4. Create a Kanopy account.

Once registered, future logins require the Kanopy ID and password, not the user’s library card number.

Our testers used screen-reading and magnification software to assess the usability of the apps and website across supported platforms. This includes the Kanopy TV App on Apple TV. This report’s Systems and Assistive Technology section contains a complete list of all the software and operating systems used in this assessment.

This assessment aims to determine the usability experience of readers with print disabilities and to what extent they can access content on Kanopy across supported platforms. However, this is not an in-depth review of the features or content available on Kanopy. As a result, some functionality may not be discussed at all or in-depth.

Accessibility Summary

The Kanopy web platform, app, and integration with Apple TV have significant accessibility barriers for persons with print disabilities. Kanopy lacks built-in accessibility features in both the app and web platform that would make it possible for screen readers to access and watch videos like properly labelled buttons and poorly organized content. There are some visual adjustments for persons with low vision, but they depend on the user’s operating system and their chosen browser’s magnification software.

Introduction to Assistive Technology

All mainstream operating systems include built-in screen readers (Narrator on Windows, VoiceOver on Apple devices, and TalkBack on Android) that read the contents of the screen out loud, allowing users with visual disabilities to browse apps and websites, send and receive texts and emails, and accomplish many other tasks with ease. Keyboard commands and custom touch gestures provide a flexible way for users to find and interact with the controls on-screen.

Windows also has alternative screen-reading software, most notably a commercial option called Job Access with Speech (JAWS) and a free and open-source option called Non-Visual Desktop Access (NVDA). The text spoken by a screen reader can be sent to a refreshable Braille device. Mainstream operating systems also have user interface magnification, large text options, and high contrast viewing mode to assist people with low vision.

To ensure usability and accessibility of an application by people with print disabilities, all functions and controls must be accessible using assistive technologies. The DAISY Consortium explains that the basic assumption of accessibility evaluations is that reading systems “should support reading with eyes, ears, and fingers.” (DAISY Consortium, 2017). It should be possible for users to read the content of the document by:

  • Reading the text with screen readers or self-voicing text to speech (TTS) applications
  • Adjusting the display, including font size, alignment, and colour contrast, or a combination of some or all these options
  • Reading the text with a refreshable braille display
  • Reading with assistive technologies designed for persons with dyslexia or other disabilities.
  • Reading with the app’s built-in read-aloud functions

Accessibility Performance and Recommendations

This section will dive deeper into the user experience and accessibility issues encountered while testing the Kanopy app and online platform. Below you will find the testing results and their related recommendations as they pertain to:

  • Registration and Signing In
  • Browsing and Searching for Content
  • Watching Movies
  • Visual Adjustments

Finally, the Development Recommendations sections contain suggestions for improving the interface on each platform. These suggestions will be relevant to any issues or observations noted above.

To accommodate the diversity of experiences detailed by testers, the Kanopy web platform and app are presented in separate sections, both of which will have a section for screen reader users and magnification users. The final section will be exclusively dedicated to the Kanopy TV App on Apple TV.

Kanopy Web Platform

The video watching experience for low vision testers was extremely positive with no accessibility barriers encountered.

MacOS and PC with Magnification

Registration and Login

Kanopy opens to an introduction screen with options to log in or sign up. For Kanopy account holders with credentials saved to their device, login was simply a click away. Those who had to enter account info or re-register due to lost passwords experienced some challenges.

While the PC tester did not report any issues getting started on Kanopy, the MacOS tester expressed frustration with the small typeface and insufficient contrast on these opening pages. The main headings are published in a large, bold black font which reads well against the white background. However, supplementary instructions, text entry fields, and dropdown menus for finding a library appear in a faint thin font. Increasing browser magnification to 175%, supplemented with MacOS Zoom, effectively increases text size but does not rectify contrast issues. The initial registration process would have been more challenging without Google’s high-contrast extension.

Layout and Navigation

The main menu is positioned as a static header which remains in view when scrolling through content.

From left to right, the menu has seven options:

  • Kanopy “Home” button is inactive on the main page but serves as a link back to the homepage when selected from any other page on the site.
  • The “Browse” menu option expands when selected to display a large list of categories and genres.
  • The “My Lists” has content a user has begun watching and has marked as being of interest by adding it to their watchlist or a playlist.
  • The “Search” link opens the search page.
  • The “Kids” or “Exit Kids” button will switch to or exit the section of the site for young audiences.
  • “Available Credits” displays as a single digit which indicates the total available (e.g., 5) or a fraction to indicate remaining credits (e.g., 3/5). If selected, it expands information about watching videos and how credits work.
  • The “Subscriber Name” button displays a list of account options, including the button to log out when selected.

On the homepage, the library or university associated with the user’s account is displayed just below the header, followed by a carousel of current features and collection highlights—the carousel scrolls automatically or by selecting arrows on the left and right side of the page.

The footer of each Kanopy page has links to corporate information, librarians, careers, media, contact information, and links to help pages and social media.

The main attraction on Kanopy is between the header and footer, where the “Title cards” of films are displayed in rows or shelves (both terms from the Kanopy “Support” pages), which resemble movie posters. This layout is shared by the web and mobile app layout and will be familiar to anyone with experience in streaming services such as Netflix or Crave.

Each row has a category heading for specific genres, collections, and curated lists. An arrow on the right side of each row will advance to show more titles in that category. Selecting the category title “Newly Added Documentaries” will link to a page of relevant selections. Like the main page, the “Newly Added Documentaries” will be in category rows such as “Arts,” “Social Sciences,” “Media and Culture,” etc.

When the cursor hovers over a “Title Card,” it enlarges to display additional details about the production (rating, two-line synopsis, etc.). The “Title Card” pop-up is a button for adding the film to a “Watch List” of saved titles. Selecting “See More” on the pop-up card opens a “Details” page specific to that film, including a full synopsis.

When scrolling down through the Kanopy homepage, the footer appears but is quickly replaced by more category rows, giving the impression of an endless library of content. One tester who works with a combination of screen reader and magnification found this unending list of options somewhat disorientating and suggested that this be divided into individual pages or contain a “Load More” button, allowing users to continue surveying categories.

Low vision testers report that browsing content on Kanopy is much easier than the registration and login process, partly because the contrast provided by the white font on a black background is easy to read.

The desktop site responds cohesively to magnification enlargement within Chrome settings. For the most part, text in menus, category rows, and “Title Cards” increases in size without overwhelming the page. However, it was noted that when the Chrome browser size is increased beyond 150%, the column located furthest to the right in the browse menu is pushed offscreen. A user would only be aware of this if they happen to scroll further in that direction.

Had they not had MacOS accessibility tools, a tester said that searching and browsing Kanopy content would be far more cumbersome. They report that Kanopy benefits from having fewer bells and whistles on the “Home” and “Browsing” pages than other streaming services. The scrolling carousel on the homepage is an economical size which users of magnification appreciate because it provides more room for content to be displayed as the page is enlarged.

Moving to the category rows, it was noted that the hover-triggered “Title Cards” open too easily, which interferes with page navigation. Testers describe the need to be aware that the pointer must remain in the page’s black areas and between rows to avoid inadvertently expanding a card. A tester who works with a large onscreen pointer found this particularly frustrating. They need to move the point out of the way to read an expanded “Title Card.” If it moved too far, the current card would close, but a neighbouring card above or beside it would open instead.

They suggest the cards should expand when selected rather than automatically. Adding a high-contrast border or frame on individual “Title Cards” when the pointer is in range would keep users orientated on the page.

While most “Title Cards” have enough colour to present as a clearly defined rectangle on the black page background, cards with sparse text and graphics surrounded by dark colours tend to blend into the background in an unclear form. A tester noted that this may be why they occasionally lose the view of the pointer. Using a Google High Contrast Extension to change the background colour, a shadow box appears with expanded “Title Cards.” However, it is virtually imperceptible to their eye against the black page background.

Another tester found that some “Title Card” graphics’ dense graphics, low contrast, or smaller text size can be challenging to read. They recommend that the names of productions be included in plain text with each title card in the plain type below each title card.

One area of Kanopy which low-vision users report as challenging is the “Help” and “Support” pages. Whether selected from the app or website, the “Help Centre” opens to in the user’s default browser. It is a difficult resource to navigate due to poor contrast and font selection. The thin grey typeface on a white background is described by one tester as almost invisible to their eye. Increasing magnification resulted in larger font with weaker resolution.

PC with a Screen Reader

Registration and Login

For JAWS users, editing library card info is described as a tricky process that requires selecting the “•••” button (“Show More” button) after the library’s name, which opens a menu containing the “Edit” button. However, using standard keyboard input, JAWS cannot press the “Edit” button. Attempting to do so will close the menu. One tester needed to use the JAWS cursor to simulate a left mouse click on the edit button to get it to work. The “Edit” button appears to be the only button in the menu, so this could easily be fixed by not requiring the button to be expanded.

In addition, a tester could find no means of removing a library card. If available, it is completely inaccessible as JAWS did not recognize any controls, labelled or otherwise, which would enable them to do that.

Regardless of how a library is selected, the screen will display its name, address, and accessible buttons for confirming the selection or returning to the search results to select another location.

The lone tester using NVDA reports an easier login experience on a PC. Though there are more items on the “Login/Sign Up” screen. Using heading, link and button navigation is possible, but the top is the “Login” button and no heading above this.

Layout and Navigation

Screen reader users found significant issues in navigating the Kanopy web platform. Overall, the website does not make use of many common navigational elements. Menus are not contained within lists or navigation regions, the main content is not contained within a main region, and while header and footer content is contained within regions, they are not identified well.

Though not accessibility guideline failures, testers feel that the Kanopy web platform misses out on some benefits to its predictability and ease of use.

The main menu options in the header have buttons which expand to display submenus. Unfortunately, this is not communicated to screen readers, nor does it announce whether the menu is expanded or collapsed.

Pressing enter on each button expands and collapses the menu. But a screen reader user will only know the current state of the menu after navigating past the button and encountering either the submenu links or the next main navigation item.

Kanopy does not include a “Skip to Content” link at the very start of the page, which would enable keyboard and screen reader users to jump to the start of the main content quickly. While not every website needs this specific action, one must be provided; a link to bypass the main menu, a main region containing the page content, or a heading at the start of the main content of every page would be beneficial. Kanopy does not meet any of those criteria.

As mentioned previously, the main content is not contained within a region. Some pages’ main content does not begin with a heading, which makes it harder for screen reader users to quickly jump to the start of the content of these pages.

Headings do not follow best practices with their assigned heading levels, they should follow the order of hierarchy. Each page should have a level 1 heading outlining the topic or purpose of the page. Level 2 headings should be used to mark page sections, level 3 headings to mark subsections within each section, etc.

Another issue flagged by screen reader users is the inconsistent use of image descriptions in “Title Cards” and graphics. The information ranged from being detailed to nothing more than “Banner background 4” as a description. A tester suggested this could be because the Kanopy collection constantly changes, and access will differ from one subscription to another, meaning some entries will be more clearly labelled and described than others.

JAWS read items at the top of the homepage as “Banner Background 4,” “Banner Background 5,” and “Banner Background 6.” When selected, the user is taken to various sections of the site, such as “Conflict in Ukraine.” However, these descriptions are insufficient. The labels need to indicate the title of each section rather than requiring a user to go to the page of each item to learn what it is.

The category row titles are presented as buttons instead of links. Selecting a button titled “Coming of Age Stories” links to a separate page dedicated to that theme. The rest of the buttons contain the title of a film or series, and pressing the button opens the “Details” page for that title.

The category rows are read differently depending on whether you navigate with the tab or arrow keys. Using the “Tab” button, they are read, starting with the first item, as “Clickable, [Title], button link.” It takes two tabs per item. Tabbing a second time, nothing is read, and there is no sound. The tester found that this additional non-functioning tab adds confusion to navigating content.

When using arrow keys, NVDA reads the first item, “Clickable, Link, button, [Title].” The rest of the items don’t have “Clickable,” meaning only a single keystroke is needed. Overall, the NVDA user found browsing category rows complicated due to the illogical heading structure.

Kanopy would benefit from using HTML lists. This would enable screen reader users to navigate between rows and provide quick information about how many movies are listed within a specific category.

Selecting “My Lists” from either the header or category row on the main page, links to a page displaying Kanopy selections a user may be watching, items marked for future viewing, and custom playlists. The buttons are well-labelled, but screen readers will not read what is currently selected. Making this information accessible using HTML tabs and other appropriate markup would improve the user experience in this section.

In “Custom Playlist,” users can create and title their own curated collection from the Kanopy library. It includes options for users to copy and arrange clips into a highlight reel to share with other Kanopy subscribers. For example, a teacher could gather clips on a specific theme in a single playlist which can be shared via a link provided by Kanopy.

While an interesting feature, it poses significant barriers for JAWS users. Opening a playlist requires selecting enter on the text showing the playlist’s running time. This is located before the playlist’s name but is not reported as a link and cannot be tabbed to. Pressing enter on the playlist’s name does not work, which is unintuitive behaviour.

Following the playlist name, a button unhelpfully reads “•••.” When selected, it expands a menu with options to “Edit” or “Delete” the playlist. JAWS does not recognize the edit or delete buttons as separate buttons. Selecting it does nothing but collapse the menu. To “Edit” or “Delete” a playlist, the JAWS cursor must be used to simulate moving the mouse to and clicking these buttons. While the forms for editing and deleting playlists are accessible, the process for getting to them must be accessible as well.

Selecting “Create New Playlist” expands a form with an edit field to enter a title or cancel. The form field and buttons are labelled properly. While the button to expand or collapse this form does communicate its current state to screen readers, the text announcing the state contains underscores and hasn’t been implemented properly. Nevertheless, it works, and the words present are technically correct.

The “Custom Playlist” screen shows its name, total running time, clips that have been added, the currently selected clip, and a “Playback” button. Clicking the running time will show the “Clips” and “Share” buttons. These should be labelled as tabs. There are options for editing and removing clips, but the buttons to expand those options have the same accessibility problems as those for editing or deleting playlists. As noted above, while the forms for editing and removing clips are accessible, getting to them must be accessible as well.

Selecting “Share” opens a screen with a unique URL which links to the playlist. The URL can be copied and sent via email, text, and social media. A JAWS tester could not find an accessible way to select a clip to play. Attempting to press enter or even simulate mouse clicks on any of the clips in a not switch from the currently selected clip.

The “Search” page contains a text field where a title or keyword can be entered. There is no submit button. Instead, results will immediately begin to populate as the user types. If nothing has been entered into the search field, a list of the most popular videos will be displayed instead of search results.

The search results can be filtered under four main categories: “Genre,” “Language,” “Availability of Captions,” and “Availability of PPR” (public performance rights). Pressing one of these buttons expands that filter’s list of choices, but as with the main navigation, screen readers will not report that the button is expandable and will not announce whether it is expanded or collapsed.

Screen readers also do not read which filters are selected, if any, while in the list. To find that information, one must navigate past the filter and sort options, where they will find each set filter with an unlabeled “btn_close” button before each one, which will cancel that filter.

Setting a “Sort-By” option works similarly to a filter, except the button, which expands the list, does announce the sorting method that is currently active. There may also be a list of suggested matches, links to pages listing videos of a genre or topic related to the search terms. These will appear before the filter and sort options.

The “Search Results” list is presented just as on the “Home” and “Browse” pages, with a list of button after button containing only the film’s or series’ name but no “Title Cards.” While this is simple and uncluttered, screen reader users need to click on each button to learn more about a title, while sighted users are able to use mouse hover text to learn more.

Selecting “Kids” in the main menu opens a new page with movies and TV programs specifically for young audiences. “Kanopy Kids” mirrors the main site in layout and functionality. Under the account holder’s name, a “Parental Controls” option limits access to content rated for more mature audiences by setting a four-digit pin. A JAWS tester detailed the process for setting a pin, noting that the focus is automatically moved to the next field after entering a digit. Once four digits have been entered. The “Turn On” button will set the pin. There is a button to request an email to reset a pin, but it only has a label if parental controls are enabled. Admittedly, there is no reason to press it if there is no pin set, but it must be labelled so all users know what it does.

When a film or series has been selected, the “Details” page for the content will open. The “Play” button is conveniently located at the start of the main content, just after the title. For a TV series, the button’s label will announce the number of the episode that will be played.

An “Add to Watchlist” button is next to the “Play” button. The button’s label will include a plus sign (+) or a minus sign (-), depending on whether the current film is already in the user’s watchlist. If so, the minus sign can be used to remove it. Ideally, this button’s label would use text instead of symbols, as screen reader users who choose to read minimal punctuation may not hear the symbols spoken.

This page also includes running time, year of production, story synopsis, etc. A screen reader user can’t know exactly what is on screen because the info is presented in a mix of text, images or logos, not all of which have alt text.

The “Read More” button for expanding the synopsis needs a better label. If a screen reader user tabs or navigates through the page from button to button, there is no indication of what to “read more” about unless they explore the surrounding content.

Below “Read More” are two buttons labelled “Details” and “Share.” These toggle between content tabs containing additional information and sharing options. Screen readers do not announce which is currently active, nor is there any alert spoken when tabs change. Using proper HTML tab elements would make this more accessible.

The “Details” tab includes a citation tool to present citation information in various formats. Again, screen readers do not indicate which button is currently selected, but pressing enter on them does activate them.

Some “Details” pages include a “Playlists” button next to “Details” and “Share,” which enables users to add the current selection to a playlist, as described above. The screen which pops up also allows for editing playlists. Curiously, the controls for editing these are significantly more accessible than those found on the dedicated playlists page. Buttons are correctly labelled, and there are no inaccessible menus.

Watching Movies

Screen reader users found the Kanopy web viewing experience enjoyable. They report easy access to the video player and well-labelled controls. The arrow keys can control the buttons to “Skip Forward” and “Backward,” as well as the “Playback Speed” and “Volume Sliders.”

However, the “Unlabeled 9” and “Picture-in-Picture” buttons could offer more features. Also, just before the film’s synopsis is played, there is an unlabeled graphic. If this image is not decorative, it should contain alt text. If it is decorative, the alt text should still be defined as an empty string (alt=””) so screen readers will skip over the image.

Following the text that announces the current playback rate, there is a button which opens a menu with “Rate” options. Unlike other menu buttons on Kanopy, screen readers announce that the menu is open, collapsed, and expanded. Screen readers also read the progress bar slider and users are able to manipulate this slider as expected using a keyboard. After the slider is text displaying the time remaining in the video.

Next is an un-labelled button that appears to do nothing when pressed. This button needs a label. Screen readers do not announce the “Captions” status when selecting the on/off button.

Kanopy supports closed captions and transcripts. Kanopy does not offer any content with an audio description. When performing a search, a filter can be set only to show videos with captions, but no such filter is available for transcripts or audio description. The “Details” page for a video either does not state that the video has captions or is shown in a way that screen reader users cannot detect.

The same may be true of transcripts, but since filtering for videos with transcripts is impossible, the tester who pointed this out suggests they may not have found any videos that offer them. They were also not able to enable to engage closed captions or transcripts during playback in JAWS. Again, they note that the screen reader did not announce transcripts if they were displayed.

While most of what one might think of as its core functionality is accessible, the Kanopy website has several accessibility barriers that would hinder screen reader users’ ability to use the site’s features fully. Most notably, editing and browsing custom playlists range from inconvenient to completely inaccessible.

The lack of audio description also makes Kanopy less appealing for blind users. Most of the website’s accessibility barriers could be fixed relatively easily. Acquiring and implementing audio description is less trivial, but not all blind users desire or require it, so improving the site’s accessibility would still widen Kanopy’s potential audience.

Developer Recommendations

  • Ensure that the font typeface is large enough and the colour contrast sufficient for persons with low vision to view and magnify them, including the “Help” and “Support” pages.
  • Ensure that the web platform reflows correctly when magnified.
  • Incorporate accessibility features (such as being able to change the font type and size) so that users do not have to rely on their browser/operating system accessibility tools.
  • “Title Cards” should expand when selected rather than automatically and add a high-contrast border or frame around them.

Kanopy App

iOS and Android with Magnification

Registration and Sign-in

The most glaring problem with the Kanopy app in iOS is that it does not apply accessibility settings which testers found a significant contribution to challenges in first-time registration and log-in.

As noted on the desktop site, text fields use a thin font in a hue between charcoal grey-black and a white background that does not provide enough contrast. The focus indicator appears as a thin black box around the current item which is difficult to see. Neither the “Smart” nor “Classic” iOS settings for inverted colours provided any improvement. A tester noted that without the availability of Zoom magnification in iOS, accessing Kanopy would have been nearly impossible.

Password reset was particularly challenging for a tester who uses a combination of VoiceOver and magnification. While VoiceOver does a good job recognizing edit fields and buttons, the small font size combined with poor contrast in text fields was too difficult to see. They eventually gave up and reset their password on a PC desktop computer.

As is standard practice on many registrations, Kanopy allows opening an account using Google, Facebook, or Apple login credentials. This still requires verification of a library account but eliminates the need to set up an additional account with Kanopy.

The Facebook, Google, and Apple icons are individually positioned in the centre of a large button which spans the width of the mobile device screen. A tester noted that the border of each button is hard to see, which increases the potential that a low vision may inadvertently register for Kanopy with a social media username and password that is saved to a device and auto-populates into these text fields. As there are considerable access and privacy considerations with using these alternative registration methods, the tester recommends that the buttons be clearly defined onscreen in a high-contrast frame or border. It should also be noted that for VoiceOver users, the logos are unlabelled and read only as a single block of text before the three buttons.

Layout and Navigation

All testers who rely on magnification found the Kanopy app challenging because the text size in row titles, menus, film synopsis, and “Support” pages is too small. The app does not apply key IOS accessibility settings such as Dynamic Type. And as previously noted, Kanopy offers no built-in accessibility features.  While the white font on the black background is noted as delivering good contrast on the desktop site, it is rendered less effective on the app because the font is too small, and there is no way to adjust it.

After tapping the “Available Credits” button in the header, a message appears onscreen for a few seconds, then vanishes. The font is so small, and the message disappears so quickly that a tester used a hand-held magnifier to read, “This is your remaining play credits for this month.”

Testers found that the icons in the tabbed interface at the bottom of the screen are particularly difficult to see due to low contrast. These icons need to be bigger and brighter. Adding a frame or solid background colour to highlight the current tab would be especially helpful.

While iOS Zoom is invaluable for reading small text, the tap and slide gestures required to magnify in and out often lead to inadvertently opening an unwanted “Title Card” or menu option. This is a reality of using most apps that do not apply accessibility settings, but it is a more significant issue in Kanopy because there is so much live content on the screen, making the potential for inadvertently tapping an unwanted selection likely.

Clicking a “Title Card” on the desktop site will open a “Details” page for the film. A tester found the story synopses, cast listing, production information, etc., almost impossible to read on iPad. Using Zoom in iOS is incredibly cumbersome to navigate these pages, requiring moving back and forth across the screen to follow the text. The experience is not different than reading a document on an iPad that does not reflow with browser magnification.

Another tester found that when viewing the “Details” screen on a Galaxy tablet in landscape orientation, the graphic image for the film will fill the entire screen. In turn, options to add the movie to a Watchlist,” “Share,” and see a list of “Related Selections” are pushed to the bottom of the screen and out of view.

One component of the Kanopy app that responds to iOS accessibility settings is the search field for finding content. A large space is provided to enter search criteria, and the font is large and bold. However, this bright spot is short-lived as the list of predicted results is displayed in the same small font with poor contrast as other areas of the app.

Watching Movies

Selecting the “Play” button in the centre of the “Details” screen will start playback. Magnification users reported no accessibility issues with watching content. However, one tester felt the platform does not provide content at a high enough resolution. After testing on numerous mobile devices, laptops, and desktop computers, they found that video quality was consistently poor regardless of genre or age of production. In some cases, closed captions could not be read due to poor image quality.

A “Closed Caption” icon is in the screen’s upper right corner. The robust captioning options offered on the web platform, such as text size, colour, choice of window frame and background colour, are not offered on the Kanopy app. Unfortunately, watching subtitled films on iPad can be a significant accessibility challenge for even fully sighted viewers.

Kanopy connected effortlessly to a desktop Mac by selecting an “Airplay” icon in the upper right corner of the app screen. In this configuration, Kanopy provides additional playback controls and enables the use of a keyboard which is incredibly handy (though by no means unique to Kanopy), especially when watching films with subtitles which often require additional stops and restarts to catch the onscreen text that passes too quickly to read.

iOS and Android with Screen Reader

Registration and Login

On Android using TalkBack, testers described significant performance issues with the onscreen keyboard. Talkback inconsistently read aloud individual letters entered using the onscreen keyboard, resulting in having to re-enter their info multiple times until they were finally given access.

Once the text is entered in a field, the onscreen keyboard’s “Enter” key advances to the next field, which is not intuitive. It is recommended that an onscreen “Next” button be added.

A tester using VoiceOver on iOS detailed how the “Get Started” page opens with a button improperly labelled “nav bar Kanopy logo.” If selected, it returns the user to the first screen. This button should be given a proper label which describes its purpose. The page also has an improperly labelled “Back” button with redundant use of the word “button” as part of the label. It also does not work with the VoiceOver two-finger scrub gesture.

Selecting the “Find Your Library” button from the “Opening” page will bring up a search screen. If the app is granted permission to access location services, a “Find Your Public Library” drop-down will display a list of nearby libraries. If not, a library can be found by entering its name, city, or postal code in a search field, and a list will appear.

The locations are also displayed on a Google Maps page. This creates considerable clutter for VoiceOver users, and there is no option to hide it on the page. Some found that the library locations could not be selected when they tapped on the map.

From here, a registrant must provide their library card number and pin. An iOS VoiceOver tester reported that the text field for entering it is accessible and includes a placeholder making it clear where to type. The remainder of the registration and login process presented no accessibility barriers.

The “Registration” page also includes a button for obtaining a library card if one doesn’t already have one. Though labelled adequately for screen readers, a tester noted that when selected, they were brought to a screen where the only VoiceOver accessible control was a “Cancel” button which returned them to the library card number screen. It’s difficult to say whether this issue is related to Kanopy or the specific library, as another NNELS team member reported that the button linked directly to a web application on their library’s administration page.

Layout and Navigation

The first thing users of screen readers note upon opening the Kanopy app is that the logo and available credits indicator in the header are unlabelled. The “Kanopy” button reads similarly to the “Logo” button from the sign-up/login process, which returns the user to the launch screen but is inactive on the app. In addition, the “Available Credits” button has no readable text. As noted by testers using magnification, a dialogue box expands to provide information about play credits, but it’s too hard to locate on the screen and seems to disappear quickly, making it difficult to read.

Swiping right from this button, VoiceOver will read the number of available credits. Testers noted that this is likely to be associated with the button, but more text is required for it to have a satisfactory description, even if the label was associated correctly. Inexperienced users may not understand what this number means.

When browsing other pages, the Kanopy logo in the header is replaced with a “Back” button which is improperly labelled with “button” read as part of the label. In addition, the “Back” button does not respond to VoiceOver’s two-finger scrub gesture.

The “Home” screen displays content categories, with “See More” buttons accompanying each one, which, as previously detailed, opens a screen listing videos relevant to that category. One tester noted that VoiceOver seemed to lose focus each time they attempted to activate the “See More” button. Despite the word “more” suggesting that some content within the category can be explored on the “Home” screen, VoiceOver does not recognize that it is there unless screen recognition mode is used.

VoiceOver also cannot swipe properly through the contents of this screen; once a category and its “See More” button is encountered, continued swiping past the button will return the VoiceOver focus to the same category, then to its button again, then back to the category, and so on until the end of time.

To find a specific category or genre, a VoiceOver user must explore the entire screen, relying on the vertical scroll bar or three-finger swipes up and down to survey options. Once a category is chosen, a swipe right will place focus on its “See More” button, which can be double-tapped to activate. Selecting a category will then open a new screen of relevant titles.

As detailed above, the Kanopy app’s main menu is a tabbed interface or bar at the bottom of the screen. The first tab, “Browse,” has fewer options than Kanopy on the web. VoiceOver can swipe through these without issue. Tapping a selection opens a page with rows of “Title Cards” in the same layout and functionality as the “Home” screen, with the same accessibility barriers.

The “Search” tab contains a text field for inputting keywords, which immediately receives VoiceOver focus and expands the keyboard. A tester notes that this temporarily obstructs access to the tab bar. The “Cancel” button must be double-tapped to dismiss the keyboard and restore access to it. There are buttons to allow searching for “Videos,” “Subjects,” “People,” or “Companies.” VoiceOver does not read which is currently selected, but double-tapping one does properly switch the search criteria. If “Videos” are selected, a list of the most popular titles will be shown, but for some reason, VoiceOver reads each one as if there is a space before the last letter, even though reading it letter by letter proves that there is not.

After performing a search or selecting a suggested result, the next screen to be displayed varies depending on what kind of search was performed. If a “Video” search, matching results will be displayed in a list, with the same odd VoiceOver behaviour regarding the final letter of each title that was present in the most popular list. If a “Subject” search, a screen showing that subject’s subcategories will be loaded, complete with the accessibility barriers found on the “Home” tab and other subcategory listings. However, if it is a “Person” or “Company” search, a list of titles involving the person or company will be displayed with no noticeable accessibility issues. Double-tapping a video’s title will load its “Details” screen.

Options in the “My Lists” tab are limited to “Continue Watching” and “My Watchlist.” VoiceOver does not announce which button is currently active, and there is no heading or label clarifying which list is being shown. Under “Continue Watching,” testers note that the “Play” button is poorly labelled. “My Watchlist” also has a poorly labelled “More” button which expands a menu with options to “Remove” the title from the watchlist and a “Cancel” option to close the menu. The menu remains visible to VoiceOver after the remove from the watchlist option is activated. Attempting to tap on menu items once this happens can lead to unpredictable results.

Tapping on the user’s name and institution when in the “More” tab opens the profile screen, which shows the user’s email address and institution(s) they are registered with. Tapping on an institution returns the user to the “Home” tab. There are also two labels or elements that have no text for VoiceOver to read. If any profile information can be changed on this screen, it is not accessible to do so.

The “Add a Library” button opens a search form for locating a library, college, or university. Text can be typed into the search field on that screen, but none of the search results have text readable text. Therefore, adding an institution would be difficult, if not impossible, for a VoiceOver user.

Also under the “Profile” menu is a “Memberships” option that opens a screen identical to the one displayed when tapping the user’s name. This is redundant and should be removed because it is potentially confusing.

The “Settings” option lets users specify whether they want the app to stream using cellular data, set their preferred video quality, and enable or disable closed captions. These settings can be accessibly set, although the labels are not associated with the switch buttons, and if a switch button is touched, the setting being modified is not read unless the user swipes left to the label. Ideally, the label should be part of the switch button to reduce the number of swipes and add clarity when toggling these settings.

Watching Movies

Double-tapping on a film or series’ title opens its “Details” screen. If viewing a series, the title of the series and the number and title of the currently selected episode will be shown. A poorly labelled progress bar will show the current video position as a percentage of the video that has been partially watched.

Next is a “Play” button with the redundant word “button” in its label, but it is otherwise distinguishable and tappable. It will begin playing the content from the most recent position or the beginning if it has not been watched.

A “Rate” function is also displayed, sometimes with text reading “rate_view,” where users can enter their rating of a particular video. However, there is no indication to a VoiceOver user of what kind of rating they gave the video; they are simply thanked for the rating. At other times, there are five icons, each for rating the video on a scale from 1 to 5. These are poorly labelled, but at least contain the rating number given.

The next section of the screen contains the “Synopsis” and “Details” tabs. There are also buttons for adding or removing the video to the user’s watchlist and sharing a link to the video. The labels for these buttons are not part of the buttons themselves and are read separately, leaving the actual buttons unlabeled. A VoiceOver user needs to remember the order of the labels to know which button is which.

Furthermore, double-tapping the “Watchlist” button does not announce whether the title was added or removed from the watchlist.

A selection of related videos is also presented. The titles are contained within one label, according to VoiceOver. Tapping on the label opens the “Details” screen for the first video in the list.

Selecting the “See More” button opens the list of related videos in a more accessible format, where each can be read and tapped on separately. If swiping right through the contents of the “Details” screen, VoiceOver will get stuck at the “See More” button and return to the related videos list, making it impossible to swipe to the end of the screen. The only things that could be swiped to after it is the tabs along the bottom, but this is still not proper behaviour.

Once the controls are expanded, the following will be on the screen:

  • A button labelled with the video’s title exits the video player and returns to the details screen for the video.
  • A “Streaming Icon” button brings up iOS’s playback destination screen, which contains options such as “AirPlay.”
  • A “CC Icon” button brings up the “Closed Caption” options screen, where users can select whether they want captions and, if available, which language they will be in. VoiceOver will announce which option is currently selected. Double-tapping the “White Close Icon” can dismiss the “Captions” screen.
  • A “Pause Icon” button will pause the video and be replaced by a “Mini Play Icon” button that resumes playback.
  • A “30-Second Icon” button rewinds the video by 30 seconds. The label is unclear about the fact that it is rewinding and not fast-forwarding. There does not appear to be a fast-forward button, or if there is, it is not accessible.
  • A label showing the remaining time of the video does not explicitly state that it is remaining time as opposed to elapsed time; the only clue to this is observing the amount of time decreasing.
  • A slider which shows the current progress through the video as a percentage. VoiceOver says it is adjustable, but attempting to swipe up and down does not rewind or fast forward the video, even though the percentage value being read will sometimes change.

In summary, the video player has poor accessibility with VoiceOver, with almost none of the controls being appropriately labelled, the slider not working at all, the controls randomly disappearing and the method of expanding them not being obvious.

If the user navigates from the Kanopy app, the video will stop playing, but they can access playback controls on the lock screen. These include “Play,” “Pause,” “Rewind,” and “Fast-Forward 15-second” buttons. These are more accessible and easier to use than the app’s video player controls.

Developer Recommendations

  • Ensure that the controls are clickable by screen readers using standard input controls.
  • Expandable buttons should announce whether they are expanded or collapsed.
  • All links and buttons should have descriptive labels informing users what they do and/or where they will take them.
  • The app should use common navigation elements such as headings, skip links, and navigation/main landmarks.
  • Ensure that all pages follow a proper heading hierarchy, so that screen reader users can quickly jump to the start of the content.
  • Ensure that the “Title Cards” and graphics have descriptive alt text.
  • Ensure that screen reader users can open playlists in the “Custom Playlist” section.
  • Provide content with audio descriptions.
  • The font and colour contrast should be adequate for people with low vision to read. This includes when the font is magnified.
  • Ensure the keyboard works properly using TalkBack, announcing all the letters entered aloud.
  • Popups and dialogue boxes should not have time constraints. Users should be provided the time they need to read any text.
  • Ensure that VoiceOver does not lose focus when the “See More” buttons are selected in the “Home” screen.
  • Ensure that the video player works with VoiceOver, including buttons properly labelled, a working slider, and that the controls don’t randomly disappear.

Kanopy App on Apple TV

The Kanopy App on Apple TV is an overall positive experience for users with low vision who use magnification. The only significant issue they found is that Kanopy does not integrate Apple TV’s built-in magnification options, and the app’s failure to work with Siri or Voice Control.

However, the Kanopy App on Apple TV is far less accommodating for screen reader users. Their experience is the focus of the following assessment.

Registration and Login

When the app is launched for the first time, users can sign up using the same steps detailed for Kanopy web and mobile.

Alternatively, the TV app displays a code onscreen with instructions for navigating to the Kanopy website on another device to enter this code, which VoiceOver will read a few seconds after the screen is displayed. Following these instructions is supposed to log the Apple TV in without typing an email address and password.

Unfortunately, VoiceOver only reads five characters of the code, whereas the web page to input the code requires six characters. If a consistent issue, this prevents VoiceOver users from being able to log in this way and requires them to log in by typing their email and password. While that option is accessible with VoiceOver and works as expected, it is far more inconvenient.


Once logged in, the main interface of the Kanopy app consists of six tabs which can be switched between by moving left to right on the top row of the screen.

To VoiceOver, these tabs appear as buttons with no readable text or label. VoiceOver will only read the word “Button” for each one. Sometimes after focusing on a tab, VoiceOver will read a long text segment which includes what should be identified as the tab label. However, the behaviour is inconsistent and not limited to reading the tab the user is currently on. To identify tabs, VoiceOver users must navigate downward and explore each individually. From left to right, the tabs are “Search,” “Home,” “Browse,” “My Lists,” “Settings,” and “Kids.” Although VoiceOver announces them as buttons, tabs do not need to be clicked to switch to them; moving left or right will switch tabs. Pressing or swiping down will then navigate to the tab’s content.


Testers expressed frustration at Kanopy’s use of an alphabetic keyboard rather than the standard, perfectly accessible, QWERTY onscreen keyboard, which has already been coded by Apple. While it undoubtedly took longer for the app developers to supply and code their buttons for search term entry, testers point out that they likely saved time by not labelling any buttons. As a result, performing a search is next to impossible for VoiceOver users because they won’t know which letter they are pressing to insert. And if the wrong letter is entered, the “Delete” or “Backspace” button isn’t labelled either, which is a significant barrier for searching.

Another criticism is Kanopy’s failure to integrate with Siri or Apple Voice Control. Both magnification and VoiceOver users note this, but it is particularly frustrating for the latter because they have no alternative means of searching.


The “Home” tab is divided into sub-tabs, each dedicated to a content category. Testers found that not all titles in these lists are read by VoiceOver. If focused on an unannounced movie, a user must bring up its “Details” screen and wait for VoiceOver to read the title.


The “Browse” tab functions similarly to “Home” but employs somewhat different criteria to sort content. Buttons labelled with various categories are arranged in a list which can be explored by navigating up and down. Clicking one brings up a screen displaying videos belonging to that category. These are organized into subcategories that can be switched between by moving left and right through the selections at the top of the screen. These options function similarly to the “Home” tab. Also, like on the “Home” tab, many titles are not spoken by VoiceOver when focused on, making it difficult to know which titles are available.

My Lists

As on the Kanopy mobile app, the “My Lists” tab contains the “Watchlist” and “Continue Watching” sections. Testers did not encounter any titles which VoiceOver refused to read while in “My Lists.” A tester notes that titles, which VoiceOver would not read while on the “Home” and “Browse” tabs, are read when manually added to the tester’s watchlist.


The “Settings” tab contains options for “Switching Libraries,” “Parental Controls,” “Support,” and a button to “Log Out.” Only libraries already linked to an account can be switched between; adding or removing a library card must be done on the website or mobile app. The “Parental Controls” and “Support” options similarly instruct users to go to the website to access those features. Clicking the “Log Out” button will log the user out, returning them to the “Welcome” screen and its broken access codes.

Kanopy Kids

The Kids tab contains exactly one button: “Enter Kanopy Kids.” Once in this area, the “Kids” tab will switch to “Exit Kids.” As detailed in previous sections of this report, Kanopy can set a parental control pin. If engaged, a screen will be displayed asking for it to be entered before a user can access the main Kanopy site. As was the issue described with the “Search” function, Kanopy developers saw fit to implement their own buttons for entering digits rather than using Apple’s native options. They once again failed to label these buttons. The result is that parental controls are also sighted people controls because a blind VoiceOver user cannot accessibly enter a pin to disable them.

Navigating Content

Clicking on the title of a selection will display its “Details” screen. VoiceOver’s focus is automatically placed on the “Play” button. Though improperly labelled, testers note that this one is at least identifiable, unlike many other buttons in the Kanopy app.

A few seconds after the “Details” screen is loaded (and if no further functions are selected), VoiceOver will begin reading information that appears on the screen but which cannot receive focus. If details for a movie are displayed, VoiceOver will read its title, release year, duration, and summary. However, if it is a TV series, this information is not accessible. Instead, VoiceOver will repeatedly read the word “label.”

Exploring more of the “Details” screen, testers note several buttons that range from poorly labelled to completely unlabelled. They encountered poorly labelled buttons to “Add” or “Remove” titles on the “Watchlist,” as well as a similarly incorrectly labelled button for showing “More Information.” A screen displaying the title’s summary, supplier, filmmaker, cast, and available languages is displayed when selected. However, VoiceOver cannot explore the contents of this screen and will only read all of it at once when the screen is loaded. If a VoiceOver user wants to hear any of the information again, they use the “Back” button to exit the screen and then reselect the “More Information” button.

Pressing or swiping right while focused on any of these buttons will move VoiceOver’s focus to an unlabelled button which displays a screen for rating the film or series. There is a button for each of the five stars. However, these are not announced when selected, so there is no means for VoiceOver users to verify how many stars they may be giving a film.

If viewing details for a TV series, pressing or swiping right from the unlabelled “Rate” button will move focus to the list of episodes in the series or season. These can be navigated by pressing or swiping up or down. The number of each episode is read, but there is no accessible way to hear other details such as the episode’s title, summary, or duration. Clicking an episode will queue it up to be played if the “Play” button is pressed. Confusingly, after an episode is selected this way, the list of episodes will relocate to the left of the buttons instead of the right. Pressing the “Back” button on the remote will return to the previous layout, where they are on the right.

Watching Movies

Pressing a play button or clicking a title in the “Continue Watching” section will start playback. The focus will be placed on a poorly labelled but identifiable “Pause” button.

To the left of the “Play/Pause” button is a “Rewind” button which is poorly labelled and, when clicked, fails to tell VoiceOver how much time has been rewound. To the left of the “Rewind” button is yet another poorly labelled button that will start the video from the beginning.

To the right of the “Play/Pause” button is a control or content that VoiceOver does not read. Attempting to click it does nothing.

Navigating up from the player controls, the focus will be placed on a “Subtitles” button. Here again, the button is poorly labelled but at least provides enough information to be identified. When selected, options to turn subtitles on (or off) and choice of language are displayed. However, VoiceOver does not announce which option is currently selected.

To the left of the “Subtitles” button is a “Back” button which closes the video player and returns to the previous screen. Testers described the labels as recognizable but not clear. Pressing the “Back” button on the remote will exit playback and return to the previous screen.

There are no other accessible controls on the video playback screen. VoiceOver users cannot “Fast Forward,” and while VoiceOver will sometimes randomly announce the elapsed and remaining video time, there is no reliable way to check this information.

In many video streaming apps for Apple TV, pressing or swiping left and right will rewind or fast forward the video. Most apps also allow users to ask Siri to rewind or fast forward. Neither of these is the case with Kanopy. Navigating left or right will only move between player controls, and Siri will inform the user that it cannot perform the action.

Regarding video accessibility, Kanopy supports closed captions and transcripts for its content. While search results can be filtered only to show videos with captions when using the website, searching using the Apple TV app is so inaccessible that the tester reports they could not confirm if the feature is available. If it is, they feel it would be as inaccessible as the rest of the search process.

Getting Help

“Help” and “Support” using the Kanopy app are unavailable directly on the Apple TV. Users must go to the website on another device if they need assistance.

Development Recommendations

  • Integrate Apple TV’s built-in magnification options, which can be accessed on the TV remote.
  • Enable Kanopy to be controlled using Siri and or Apple Voice Control.
  • VoiceOver users require full access to registration and login using the onscreen code feature. In the current configuration, only five of six numbers can be read by VoiceOver.
  • Address accessibility issues with the search screen. For example, allow the search screen to access Apple’s onscreen QWERTY keyboard rather than force using Kanopy’s alphabetic version.
  • From the “Home” screen to browsing content and playback, testers using VoiceOver found that almost all controls are either not labelled or poorly labelled.


Kanopy lacks built-in accessibility features in both the app and web platform and contains major accessibility barriers. This includes poor heading structure, unlabelled or improperly labelled buttons, controls that do not announce their state (expanded or collapsed) or cannot be accessed, and much more. This results in significant barriers for screen reader users on both mobile and desktop. The visual adjustments available for persons with low vision depend on the operating system and the browser’s magnification they use, meaning that the experience can vary from person to person. In the Kanopy Apple TV app, core functionality–such as browsing and playing videos–is difficult, and searching is essentially impossible. Overall, these issues resulted in a poor user experience for the testers.

Systems and Assistive Technology

  • Operating Systems
    • Windows 10 (2021)
    • MacOS 12.3.1
    • iOS 15.4.1, 15.5
    • Android 11
    • tvOS 15.5
  • Mobile Applications
    • Kanopy 5.1.2, 5.1.5, (iOS)
    • Kanopy 5.0.3 (Android)
  • TV Application
    • Kanopy 4.0.4, 4.9.3
  • Browsers
    • Chrome 10
    • Safari 14.1
  • Screen-readers
  • NVDA 2020.1 (Windows)
    • JAWS 2021, 22 (Windows)
    • VoiceOver (macOS)
    • VoiceOver 15.5 (iOS)
    • TalkBack (Android)
  • Magnification
    • ZoomText 2020 (Windows)
    • Zoom (iOS)


The following testers and editors contributed to this report:

  • Patrick Bouchard
  • Tobe Duggan (lead writer)
  • Maryse Glaude-Beaulieu
  • Simon Jaeger
  • David Kopman
  • Riane Lapaire
  • Laetitia Mfamobani
  • Deanna Ng
  • Megan Sellmer

Published by the National Network for Equitable Library Service (NNELS), Vancouver, BC, 2023

[1] Print disabilities are defined by Canada’s Copyright Act and include visual, mobility, or comprehension impairments such as dyslexia.