NVDA Math Formula Editing: The Complete 2026 Guide | MathVoice

NVDA Math Formula Editing: The Complete 2026 Guide

How blind and low-vision students can read, navigate, and edit equations with NVDA β€” including the new voice-command approach that makes editing possible without retyping the whole formula.

By MathVoice Β· April 11, 2026 Β· 10 min read Β· Updated for NVDA 2025.1 & MathCAT 0.7

1. Why math is uniquely hard for screen reader users

Text on a web page is easy for a screen reader. It's linear, it has semantic meaning, and NVDA can read it character-by-character, word-by-word, or sentence-by-sentence. Mathematical formulas are different. A fraction like -b/2a is two-dimensional β€” the numerator sits above the denominator. A power like xΒ² has its exponent floating in the upper right. A radical wraps across its radicand. None of this has a natural linear reading order.

For decades, the common workaround was LaTeX source code. NVDA would read \frac{-b}{2a} as a string of characters β€” including every backslash and brace. This is tolerable for short expressions, but by the time you reach \frac{-b \pm \sqrt{b^{2} - 4ac}}{2a}, even a fluent LaTeX reader loses track of the structure.

The modern solution is MathML β€” a semantic XML vocabulary that describes the structure of a formula, not its rendering.

2. How MathML makes formulas accessible

MathML represents the quadratic formula as a nested tree: a fraction (mfrac) containing a numerator (mrow) with a sum (mrow, mo, msqrt) and a denominator (mrow). NVDA can walk this tree β€” announcing "start fraction", reading the numerator, saying "over", reading the denominator, then "end fraction" β€” rather than reading a flat string.

The key requirement is that the formula must be rendered as MathML that the screen reader can access. There are two main ways this happens on the web today:

  • KaTeX with htmlAndMathml output β€” renders both a visual HTML element (for sighted users) and a hidden <math> element (for screen readers). The visual element has aria-hidden="true".
  • MathJax with accessibility extension β€” similar approach, slightly more configuration.

MathVoice uses KaTeX with htmlAndMathml mode. Every formula renders both visually and semantically in a single call.

3. Setting up NVDA for math: MathPlayer vs MathCAT

NVDA cannot read MathML by default. You need a math provider β€” an add-on that intercepts the <math> element and converts it to speech and Braille.

Option A: NVDA + MathCAT (Recommended in 2026)

MathCAT (Math Capable Assistive Technology) is a free, actively maintained NVDA add-on developed by Neil Soiffer. As of 2026 it is the recommended choice:

  1. Download the latest MathCAT add-on from the NVDA Community Add-ons Store (Tools β†’ Add-ons Store β†’ search "MathCAT").
  2. Install and restart NVDA.
  3. Navigate to any page with a KaTeX or MathJax formula. Press Enter on the formula to enter math navigation mode.
MathCAT keyboard shortcuts:
Enter math navigation: Enter
Move to next element: β†’
Move deeper (into fraction): ↓
Move to parent: ↑
Describe current node: Shift+↓
Exit math navigation: Escape

Option B: NVDA + MathPlayer

MathPlayer (Design Science) was the original NVDA math provider. It remains functional for NVDA on Windows 10/11 with Firefox. However, MathPlayer development has slowed and MathCAT is preferred for new setups.

Braille math

MathCAT supports Nemeth Code and UEB Math output on refreshable Braille displays. Go to NVDA Preferences β†’ MathCAT Settings β†’ Braille to select your preferred code.

Once you enter math navigation mode (press Enter on a formula), NVDA reads the formula in MathSpeak β€” a standardised spoken-math vocabulary developed by the MathSpeak Initiative:

"start fraction negative b plus or minus start square root b squared minus 4 a c end square root over 2a end fraction"

You can then drill into sub-expressions:

  1. Press ↓ to move deeper. On the quadratic formula, this takes you inside the fraction: "numerator: negative b plus or minus square root…"
  2. Press β†’ to move to the next sibling. On the numerator, this takes you to the denominator: "denominator: 2a"
  3. Press ↑ to go back to the parent: "fraction"
  4. Press Escape to exit math navigation and return to normal document reading.

This interactive navigation is exactly what makes MathML + MathCAT powerful for blind STEM students. A long expression can be explored structurally rather than read as a flat string.

5. The editing problem: why reading β‰  editing

NVDA with MathCAT solves the reading problem well. The editing problem is different, and it's where most existing tools break down.

Consider a student working through an algebra problem. They've typed the quadratic formula and now need to change the 4ac term to 4bc. Their options with existing tools:

  • Edit the LaTeX source directly β€” navigate to the correct position in a string like b^{2} - 4ac, delete "a", type "b". Works, but requires fluent LaTeX knowledge and careful character-level navigation.
  • Use a GUI math editor β€” navigate with the mouse or arrow keys to the correct node and modify it. Difficult or impossible without vision.
  • Retype the whole expression β€” delete the formula and dictate it again from scratch. This is what most students actually do, and it erases all previous work.

None of these approaches are good. The root cause is that all existing tools treat the formula as a string β€” either LaTeX source or a linear dictation buffer. Editing a string means navigating characters. The formula's structure is discarded.

6. The AST approach: surgical voice edits

MathVoice solves the editing problem by storing formulas as Abstract Syntax Trees β€” the same data structure compilers use to represent code. The quadratic formula becomes a tree:

FRACTION
  numerator: SUM
    - NEG(b)
    - OP(Β±)
    - SQRT
        radicand: SUM
          - POWER(b, 2)
          - OP(-)
          - PRODUCT(4, a, c)
  denominator: PRODUCT(2, a)

When a student says "change the denominator to 2b", MathVoice parses that command, identifies the denominator node, and replaces only that node. The rest of the tree is unchanged. The LaTeX output is regenerated from the modified tree.

This means:

  • No character-level navigation
  • No LaTeX knowledge required
  • No risk of accidentally corrupting other parts of the formula
  • Every edit is logged as a structured diff: {op:"REPLACE_VALUE", role:"denominator", before:"2a", after:"2b"}
  • Undo is per-node, not per-keystroke

The NLU pipeline uses a three-tier approach: fast regex for common commands (under 1ms), LLM for complex edge cases (~500ms), and UNKNOWN for graceful failure. The regex tier handles over 85% of real-world commands with no API call at all.

Supported voice commands (sample):
"change the denominator to n+1" β†’ REPLACE_VALUE on denominator node
"delete the exponent" β†’ DELETE_NODE on exponent node
"negate the numerator" β†’ NEGATE_NODE β€” adds/removes leading minus
"wrap the radicand in a fraction" β†’ WRAP_NODE with FRACTION wrapper
"subtract 2x from both sides" β†’ APPLY_INVERSE (ALGEBRA mode)
"move the 2a term to the other side" β†’ TRANSPOSE_TERM (ALGEBRA mode)

7. Practical workflow: NVDA + MathVoice

Here's a recommended workflow for a blind student working on an algebra assignment using NVDA and MathVoice:

  1. Open MathVoice Studio at mathvoice.app/studio in Chrome or Edge (full Web Speech API support).
  2. Dictate or type the initial formula. Type the LaTeX in the source panel or dictate it using the microphone button.
  3. Read the formula aloud using the Read button. NVDA's MathCAT will provide interactive navigation. Press Enter on the formula to explore it structurally.
  4. Make edits by voice. Press Spacebar to activate the microphone and say your command. The formula updates immediately. An aria-live="polite" region announces the change: "Formula updated: start fraction x over n plus 1 end fraction."
  5. Review the diff log β€” every mutation is listed with before/after values. Use the Undo button to reverse any step.
  6. Copy the LaTeX or export the MathML for submission.
Safari and Firefox note: Web Speech API support is limited on Safari iOS and absent on Firefox. If you use these browsers, enable the Whisper ASR backend (requires your institution to deploy the API server). Contact your disability services office for setup assistance.

8. Browser and platform notes

Browser / PlatformASRMathML renderingNVDA + MathCAT
Chrome (Windows)βœ… Web Speechβœ… KaTeX htmlAndMathmlβœ… Full support
Edge (Windows)βœ… Web Speechβœ…βœ… Full support
Firefox (Windows)⚠️ No Web Speechβœ…βœ… Full support
Safari (macOS 15+)⚠️ Partial (~60s)βœ…N/A (use VoiceOver)
Safari iOS❌ No Web Speechβœ…N/A (use VoiceOver)

Firefox and Safari users: set ASR Provider to "Whisper" in the sidebar panel. This requires the /api/transcribe proxy to be deployed on your institution's server.

Try MathVoice Studio β€” Free

No account required. Works in Chrome and Edge on Windows. Full NVDA + MathCAT support.

Open Studio β†’

For institutional deployment, disability services setup, or a signed VPAT and DPA, contact [email protected].