Extabilify

Now building, open source, Ghana

Every student in Ghana deserves to navigate the web on their own terms.

Extabilify is a free browser extension that reads the page aloud, takes voice commands, and repairs the structure of sites that were never built for a screen reader. It can also run a multiple choice test hands free.

Example: answering a test question by voice

Extabilify
Question 2 of 5. The Volta River is dammed at which town? A. Akosombo. B. Kpong. C. Bui. D. Yapei. Say the letter of your answer.
Student
"A"
Extabilify
A, Akosombo. Question 3 of 5. Which crop is Ghana the second largest producer of in the world? A. Coffee. B. Cocoa. C. Rubber.
Student
"B"

Why we are building this

Ghana's educational platforms were not built with everyone in mind.

Our team surveyed Ghana's major educational institution websites and spoke with students with disabilities, their teachers and their administrators about usability and accessibility. The pattern was the same across government portals, university enrolment systems, result checkers and school quiz platforms. Most showed no sign that WCAG or basic accessibility standards had shaped the build. Buttons carry no accessible name. Images have no description. Multiple-choice questions have no structural link to the options beneath them.

The problem, plainly: Ghana's educational institutions are adopting digital platforms without accessibility as a build requirement. Students with disabilities are being shut out of the same technology their classmates use without a second thought.

Mobility challenges are as much a part of this as visual impairment, and are often overlooked. Students who cannot reliably use a mouse or a keyboard are left out by assistive technology that is built almost entirely around sight. We are building Extabilify to close both gaps at once. Reading a page, answering a multiple-choice question, moving around a site: every one of those can already be done by voice alone, and we are actively working through the rest.

See everything it does.

What it does

Six tools, one keyboard shortcut away.

Turn on only what you need. Every setting is saved to the device and applied on each page you open.

Quiz mode Featured

Reads each question and its lettered options, then listens. The student says the letter, it selects the radio button, and moves to the next question. No mouse, no keyboard.

Voice guide

Narrates every button, link, field and heading as the student moves over it or tabs to it, and announces when the pointer leaves the page.

Voice commands

Control any page by speaking. Scroll down, dark mode, find my assignment, click submit, read this. Built around natural Ghanaian English phrasing.

Smart reading

On pages built without accessibility markup, it adds the missing labels, roles and structure so the voice guide and voice commands work anyway.

My voice profile

The student records their own voice saying the confirmation phrases. Extabilify plays those back instead of the synthetic voice, so it sounds like them.

Visual aids

High contrast rendering, text scaling to 200 percent, dyslexia friendly spacing, distraction removal, and an adjustable hover delay for students with hand tremors.

Quiz mode in detail

A test a student can sit without seeing the screen.

Extabilify recognises the shape of a multiple choice test: repeated groups of radio buttons, each with a block of question text above it. It numbers the questions, letters the options, and links every option to its question. That is the connection the page's author left out.

Say quiz mode, or press Alt Shift Q. Extabilify reads a question, reads the options, and opens the microphone. The student says a letter. It confirms, selects the answer, and reads the next question. Say submit when finished, and it checks for blank answers first.

It understands the letter said plainly, spelled out as bravo, said as a number, or inside a sentence such as "the answer is B". The keys Alt Shift 1 to 9 also work.

A quiz session

Extabilify
Quiz mode. 5 questions. After each question, just say the letter of your answer.
Extabilify
Question 1 of 5. What is the capital of the Upper West Region? A. Bolgatanga. B. Wa. C. Damongo.
Student
"Wa, B"
Extabilify
B, Wa. Question 2 of 5.
Student
"submit"
Extabilify
Question 4 is not answered yet. Say "go to question 4", or say submit again to send anyway.

Built on the record

Grounded in the accessibility standards.

Every label and role Extabilify adds to a page comes from a defined set of W3C specifications. It follows the first rule of ARIA, which is to never add semantics an element already has, and it only ever repairs what is missing.

WAI-ARIA 1.2

The role and aria vocabulary the extension is permitted to apply. A W3C Recommendation since 2023.

AccName 1.2

The algorithm for working out an element's spoken name, which is the basis of every description.

ARIA APG

The interaction patterns for radio groups and checkboxes that quiz mode follows.

WCAG 2.2

The success criteria the broken pages fail, including 1.3.1, 2.4.6, 3.3.2 and 4.1.2.

ARIA in HTML

Which ARIA is valid on which element, and every element's implicit role.

Not an overlay

Extabilify is installed by the student for their own session and makes no compliance claim. It is a personal access aid.

Read the full standards reference in the documentation.

Install

Five minutes, no administrator rights.

Works in Chrome and Edge on Windows, macOS, ChromeOS and Linux, including the low cost machines in a school computer lab. Firefox exposes speech recognition only behind a flag, so voice commands and quiz mode will not work there.

Download the extension

Get extabilify-v0.3.2.zip and unzip it into a folder you will keep.

Open the extensions page

Go to chrome://extensions or edge://extensions, and turn on Developer mode using the toggle at the top right.

Load it

Click Load unpacked and choose the folder you unzipped. The Extabilify icon appears in the toolbar.

Set it up

Click the icon, turn on Voice guide and any other tools, then open Change my settings to pick a voice, speed and text size. Your choices are saved on the device.

After installation it works offline. The only feature that needs a connection is the browser speech recognition engine used for voice commands. Nothing is sent to Extabilify, because there is no Extabilify server.

Documentation

Extabilify reference

Everything the extension does, how it decides, and how to make it behave. Current version 0.3.2.

Overview

A survey of Ghana's major educational institution websites, together with conversations with students with disabilities, teachers and administrators, found little evidence that WCAG and basic accessibility standards had shaped how those platforms were built. Extabilify is being built to close that gap from inside the browser, with particular attention to students with mobility challenges, who are often left out by assistive technology built almost entirely around sight. See the roadmap for the work in progress beyond the extension itself.

Extabilify is a Manifest V3 browser extension written in plain HTML, CSS and JavaScript, with no build step, no framework and no external dependency. One content script, content.js, runs on every page and does the work. A small service worker handles the right click menu. A popup and an options page hold the controls.

State lives in chrome.storage.local and is applied to every page you open. Nothing is transmitted anywhere. There is no account and no Extabilify server.

The three features you will use most are Voice guide, the screen reader; Voice commands, spoken control of the page; and Smart reading, which repairs pages that were not built for a screen reader and powers quiz mode.

Privacy and offline

  • No server, no account, no analytics. Settings and voice profile recordings are stored only in the browser's local extension storage on that device.
  • Voice profile recordings never leave the device. They are made by the student in the options page and played back locally.
  • Speech recognition is the one exception. The browser SpeechRecognition engine sends audio to the browser vendor's servers in its current default. Chrome version 139 and later can run it on the device, and adopting that is the top roadmap item.
  • Text to speech is local. The voice guide and read aloud use the operating system's built in voices.

Voice guide

When it is on, moving the pointer over an element, or tabbing to it, speaks a description built the way the accessible name algorithm prescribes: aria-label first, then an associated label element, then alt or title, then the element's own text. Role and state come after the name, for example "Submit, button, disabled".

Hover delay

A student with a hand tremor whose pointer drifts across several elements hears a cascade of names. Set the hover delay, from 100 to 2000 milliseconds, in the options page, so the guide only speaks once the pointer settles.

Browser zone announcements

When the pointer leaves the page, the guide estimates which part of the browser chrome it entered, such as the address bar, the back button, the tab bar or the window controls.

Voice commands

Turn on Voice commands, then press Alt Shift M, or use the microphone button in the popup, to start listening. It does not stop after one command: it keeps listening, ready for the next one, until you say stop listening or press Alt Shift M again. Every unrecognised command is answered with "I did not understand, say help for a list", never with silence.

SayEffect
scroll down, scroll upScroll the page by a screenful.
go to top, go to bottomJump to the start or end of the page.
go back, go forward, refreshBrowser history and reload.
read, read pageRead the selection, or the main content if nothing is selected.
read mainFind and read the densest block of text on the page.
stopStop reading.
bigger, smaller, zoom in, zoom outAdjust text size in steps of 10 percent, from 80 to 200.
dark mode, high contrastToggle the high contrast theme.
focus mode, reading modeHide adverts, navigation and sidebars.
reading spaceToggle dyslexia friendly spacing.
voice guide, smart readingToggle the screen reader, or the page repair engine.
find then some textHighlight and jump to the first match on the page.
click then a nameActivate the button or link whose name contains that text.
quiz modeStart hands free quiz mode.
where am i, open settings, reset, helpAnnounce the page, open the options page, restore defaults, list commands.
stop listening, pause listeningTurn the microphone off. It was left on continuously, so this is the only way it stops on its own.

Smart reading

When Smart reading is on, Extabilify watches the page as it loads and adds the accessibility information the author left out. Following the first rule of ARIA, it only ever fills gaps, and it marks each element it has touched so a later pass cannot fight it.

On the pageWhat it adds
header, nav, main, aside, footer with no roleThe matching landmark role, plus a label from the nearest heading.
A clickable div or span with an onclick, a button like class, or role="button"role="button", tabindex="0", and an aria-label from its visible text.
An img with no altAlt text from a wrapping link, from title, or from a cleaned up file name. Decorative svg icons are hidden.
An input, select or textarea with no labelAn aria-label from the placeholder, a short preceding label, or the name attribute.
Text styled large and bold but not marked up as a headingrole="heading" with an aria-level inferred from its size.
Grouped radio buttons or checkboxesA question model. See how pages are understood, below.

Quiz mode

Start with quiz mode or Alt Shift Q. Extabilify reads the current question and its options, then opens the microphone and keeps it open. You never press anything between questions. After a single answer question it moves on automatically. Multi select questions wait for the word next.

Answering

FormExamples
The letter, plainlyB, the answer is B, choose B
Spelled out, NATO or homophonebravo, bee
As a numbertwo, 2, which both mean option B
KeyboardAlt Shift 1 to 9

Moving and finishing

SayEffect
next, backNext or previous question.
repeat, read optionsHear the question again, or just the options.
go to question 3Jump to a numbered question.
progressReports how many are answered and which are still open.
submitNames any blank questions, then say submit again to send anyway.
exit quizLeave quiz mode.

Selection works on plain HTML radio buttons, on CSS styled controls where the real input is hidden, on framework controlled inputs such as React and Vue, and on ARIA role="radio" widgets.

Voice profile

In the options page, record your own voice saying each of the seven confirmation phrases, such as "Voice guide is on" and "Done reading". Extabilify stores them locally and plays your recording instead of the synthetic voice whenever it announces a state change. It is a phrase bank, not full speech synthesis, but it is the hook that the future personalised voice work plugs into.

Visual aids and settings

  • Sharper screen. High contrast dark rendering that holds up against the high specificity stylesheets on portals such as GES and WAEC.
  • Bigger letters. Scales relative unit text from 80 to 200 percent without collapsing fixed layouts.
  • Reading space. Line height 1.75, letter spacing 0.02em, word spacing 0.08em, in line with WCAG 1.4.12.
  • Clear the page. Hides adverts, navigation, cookie banners and sidebars by structure, so it works on any site, offline.
  • Reading voice. Choose the voice, speed and pitch in the options page.
  • Highlight colour. Set the hover outline colour, for students with colour vision differences.

Keyboard shortcuts

ShortcutAction
Alt Shift DDescribe the focused element
Alt Shift RToggle the voice guide
Alt Shift MSpeak a command
Alt Shift QStart or stop quiz mode
Alt Shift N or PNext or previous question, in quiz mode
Alt Shift 1 to 9Select that option, in quiz mode

How pages are understood

To recognise a quiz, Extabilify tries the most reliable signal first and then falls back.

LayerSignalStatus
Declared dataSchema.org Quiz and Question in JSON-LDPlanned
Assessment standard1EdTech QTI 3.0 markup, such as qti-choice-interactionPlanned
Native HTMLA fieldset and legend, or an ARIA radiogroupImplemented
ConventionRepeated radio buttons that share a name, with a text block aboveImplemented
StructureRepeating sibling blocks that each contain a choice controlImplemented

Once a group is found, the question stem is taken from a legend, from an element with a question class, or from the nearest block of text above the options. Options are lettered A, B, C and so on, and each is linked to its question with an aria-label that the voice guide and quiz mode both read.

Standards

The full normative basis ships with the source as docs/STANDARDS.md. In brief:

SpecificationGoverns
WAI-ARIA 1.2The role, state and property vocabulary applied to elements.
ARIA in HTMLValid ARIA per element, implicit roles, and the first rule of ARIA.
AccName 1.2The accessible name computation the descriptions follow.
ARIA APGRadio group and checkbox interaction patterns for quiz mode.
WCAG 2.2The success criteria the repairs target, including 1.1.1, 1.3.1, 2.4.6, 3.3.2 and 4.1.2.
Web Speech APIVoice recognition and synthesis. MDN is the working reference.
Schema.org Quiz, 1EdTech QTI 3.0Assessment structure, for the planned detectors.

Extabilify is deliberately not an accessibility overlay. Overlays are installed by the site owner, affect every visitor, and are marketed as compliance products, an approach rejected by the Overlay Fact Sheet and, in the case of one vendor, by the United States Federal Trade Commission. Extabilify is installed by the student, affects only their own session, defers to existing semantics, and makes no compliance claim.

Troubleshooting

Quiz mode read the question but did not select the answer

This was fixed in version 0.3.1. Earlier versions missed CSS styled radio buttons and closed the microphone after one command. Update, and make sure you granted microphone permission when the browser asked.

The microphone stops listening after each command

Also fixed in 0.3.1. Quiz mode now re-opens the microphone automatically as soon as each spoken prompt finishes.

Nothing is read on this page

Turn on Voice guide, and turn on Smart reading for pages without proper markup. Extensions cannot run on browser pages that begin with chrome://, on the Chrome Web Store, or in the PDF viewer.

Voice commands are not supported

You need Chrome or Edge. Firefox keeps speech recognition behind a flag.

It reads too fast, or reads too much

Lower the speech rate in the options page, and raise the hover delay so the guide waits for the pointer to settle.

For developers

Plain JavaScript, no build step. Clone, load unpacked, edit, reload.

FileResponsibility
content.jsThe engine. Voice guide, voice commands, smart reading annotation, and quiz mode.
background.jsService worker. Right click menu and cross tab messaging.
popup.*The toolbar popup. Feature toggles, microphone button, and start quiz.
options.*The settings page. Voice, hover delay, highlight colour, and voice profile recording.
docs/STANDARDS.mdThe full specification basis, mapped to functions.
tests/The jsdom test scripts, run against the real content.js.
test-pages/Manual test pages to open in a real browser with the extension loaded.

Tests run the real content.js in jsdom against fixture quiz pages, covering clean markup, bare markup, and CSS hidden or ARIA controls.

cd tests
npm install jsdom
node test_smart.js           # annotation and structured quiz
node test_voice.js           # quiz-mode continuous listening and auto advance
node test_hidden.js          # styled, hidden and ARIA controls
node test_continuous.js      # general voice commands listening continuously
node test_nonsemantic_page.js # the manual test page below, run headlessly

test-pages/non-semantic-quiz.html is a manual test fixture: a page with no landmarks, no ARIA and five different quiz-markup patterns, for trying smart reading and quiz mode against a page that gives the extension nothing to work with. It documents, in its own comments, which patterns are currently detected and which are not.

Contributions that help students in Ghana and across Africa are welcome.

Changelog

Version 0.3.2

  • Voice commands now listen continuously outside quiz mode too. Press Alt Shift M once and it keeps listening for one command after another, with no timer and no need to press it again.
  • New command: stop listening (or pause listening) turns the microphone off on request.
  • Leaving quiz mode now drops back to continuous general listening, instead of going silent, when voice commands are still turned on.

Version 0.3.1

  • Reliable selection of radio buttons and checkboxes, including CSS hidden, framework controlled, and ARIA role="radio" controls.
  • Quiz mode keeps the microphone open continuously.
  • Forgiving answer parsing. A plain letter, a NATO word, a homophone, a digit, or a full sentence.
  • Automatic advance after a single answer question.

Version 0.3.0

  • Smart reading engine, with live DOM annotation.
  • Quiz mode, with multiple choice detection and hands free answering.

Version 0.2.0

  • Voice command navigation engine.
  • Personal voice profile recording.
  • Configurable hover delay and highlight colour. Text scaling raised to 200 percent.

Version 0.1

  • Voice guide, read aloud, high contrast, spacing, focus mode, and browser zone tracking.

All documents

These ship with the source code.

README

Project overview, the mission, the feature list, and how to install.

README.md

Standards and reference basis

Every specification Extabilify is built on, mapped to the code.

docs/STANDARDS.md

Research proposal

The formal study design. Objectives, questions, methodology, ethics, timeline, budget.

RESEARCH_PROPOSAL.md

Research paper

The peer review draft. Abstract, related work, system design, evaluation, roadmap.

RESEARCH_PAPER.md

Where this is going

Beyond the browser extension.

The extension is where we started. Two larger pieces of work are already in progress, alongside the language work. We do not think this is solvable by one extension or one team, and we would like NGOs, disability advocacy organisations and education stakeholders across Ghana to get involved.

In progress

The Extabilify Assist API

A public API a page can integrate to describe its own structure for assistive technology, meant for the many sites that will never be rebuilt to meet WCAG. When developers do not implement the guidelines, the page, a maintainer, or a community can publish a small machine readable description: what each control is, which text is a question, which options belong to it. Extensions like Extabilify, and any screen reader that chooses to, read that description and act on it. It is data, not a widget. Nothing rewrites the page or claims compliance.

In progress

A mobile platform for schools

Schools sign up, add their students, and give each one a phone or tablet application that reads learning material and school portals aloud, and takes voice and switch input. It is built for students who cannot use a mouse or keyboard reliably, including those with mobility impairments. Teachers get a simple view of which tools each student uses, and can send reading material to a class. Schools that sign up now will be included as this rolls out further across Ghana and, later, Africa.

The language work

A screen reader that speaks the language a student thinks in.

Students learn better when they hear instructions in a language they grew up with. This is future work, and nothing here has started yet. At a later stage, we plan to reach out to organisations that work on African language technology, such as GhanaNLP and Masakhane, to ask whether they would be able to help with translation and language modelling. Neither is currently involved with Extabilify.

1
Now, next release

On device speech recognition

Chrome 139 shipped an offline Web Speech API. Adopting it means voice commands stop sending audio to Google's servers.

2
Stage one, not started

Twi text to speech, online

Send selected text to a Twi text to speech service and play the audio back, once a suitable service is found. A deliberate single server dependency, accepted only for language synthesis.

3
Stage two

Compressed models, on the device

As small neural models for low resource languages become deployable as WebAssembly, the screen reader can speak Twi, Ga, Ewe and Dagbani with no connection.

4
Stage three

The student's own voice, everywhere

Neural voice conversion would let the screen reader speak in the student's own voice across all narration.

All current directions

WorkWhat it isStatus
On device speech recognitionUse the offline Web Speech API in Chrome 139 and later, so voice input no longer leaves the device.Next release
Ghanaian language text to speechTwi first, then Ga, Ewe and Dagbani. Depends on reaching out to language technology projects; nothing is built yet.Future goal, not started
The Extabilify Assist APIA public API a page can integrate to publish a machine readable description of its accessibility structure.In progress
Mobile platform for schoolsA phone and tablet application that schools provision for students, with voice and switch input.In progress
Schema.org and QTI quiz detectionRecognise declared quiz structure before falling back to the current heuristics.Planned

The team

Who is building Extabilify.

A small team working with special needs schools in Accra.

Project overview

The team explains the whole project.

A short video walking through the problem, how Extabilify works, and where it is going.

The project overview video will appear here once it is added.

Read the transcript

The transcript of the project overview video will appear here once the video is added. A full text transcript is provided so the video is usable without sound or vision.

Team members

Ellen Boakye

Ellen Boakye

Research assistant, developer and accessibility engineer

On the projectThe developer and accessibility lead for the extension, including the smart reading and quiz engine, and a research assistant on the study.

Outside the projectA rehabilitation specialist and web developer.

Prof. Wisdom Kwadwo Mprah

Prof. Wisdom Kwadwo Mprah

Academic advisor, disability and rehabilitation

On the projectAdvises on disability and rehabilitation research design for the study.

Outside the projectAssociate Professor and Head of the Centre for Disability and Rehabilitation Studies, KNUST School of Public Health. Known in the space with a lot of impact and more than 40 published papers on disability, education and inclusion.

Contact

For information and collaboration.

Get in touch about a school pilot or a partnership.

Ellen Boakye

Research assistant, developer and accessibility engineer

Phone+233 24 739 0102

Websitewww.ellenboakye.online

You can also join the pilot waitlist to be contacted when Extabilify reaches your area.

Join the pilot

Bring Extabilify to your school.

We are preparing classrooms for the first formal evaluation. We would like to hear from teachers, SEND coordinators, school administrators, researchers, parents, NGOs and disability advocacy organisations. Add your details and we will be in touch when the pilot reaches your area.

We will only use this to contact you about the pilot.

Submitting opens your email application with a message to hello@extabilify.org. If you would rather not, use Copy my details, or contact Ellen Boakye directly on +233 24 739 0102.

You are on the list.

Thank you. We will look out for your message to hello@extabilify.org, and reach back to you when the pilot opens near you.

Open source

Built to be read, changed and kept.

Extabilify is plain HTML, CSS and JavaScript. There is no build step, no framework and no server. A developer in Ghana on a slow connection can read the whole codebase and change it. That is a deliberate decision about the code, not only about the product.

The most useful contribution is real use. Try it in a school, and when a page reads badly, open an issue with the address and what was said against what should have been said.