> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/nvaccess/nvda/llms.txt
> Use this file to discover all available pages before exploring further.

# Browse Mode

> Document navigation and virtual buffer system for web content and documents

Browse Mode is NVDA's powerful document navigation system that provides efficient access to web pages, PDF documents, and other structured content. It presents documents in a flat, navigable format optimized for screen reader users.

## Overview

When browsing the web or reading documents, NVDA automatically enters Browse Mode to provide a virtualized view of the content. This allows you to navigate using cursor keys and quick navigation commands, rather than tabbing through every element.

<Note>
  Browse Mode is also known as "Virtual Buffer" or "Virtual Cursor" mode. It creates a text representation of a document that can be navigated like a text file.
</Note>

## Browse Mode vs Focus Mode

NVDA switches between two modes when interacting with documents:

<CardGroup cols={2}>
  <Card title="Browse Mode" icon="book-open">
    Navigate documents using cursor keys and quick navigation. Single letter commands jump to elements. Best for reading web pages and documents.
  </Card>

  <Card title="Focus Mode" icon="keyboard">
    Direct interaction with form controls. All keys pass through to the application. Best for filling out forms and text editing.
  </Card>
</CardGroup>

### Automatic Mode Switching

NVDA intelligently switches between modes:

* **Entering Focus Mode**: When you focus on editable text fields, combo boxes, or other interactive controls
* **Entering Browse Mode**: When leaving form controls to navigate document content
* **Audio Indication**: Plays different sounds (or speaks "Focus mode" / "Browse mode") when switching

### Manual Mode Switching

* Press `NVDA+Space` to manually toggle between Browse and Focus mode
* Useful when automatic switching doesn't behave as expected
* Some controls require manual switching to access all features

<Accordion title="When Focus Mode Activates Automatically">
  Focus mode automatically activates for:

  * Editable text fields (input, textarea)
  * Combo boxes and select controls
  * Menu items and menu bars
  * Tree views and expandable elements
  * Embedded applications and applets
  * Toolbars and tool palettes
  * Any element with `contenteditable` or `EDITABLE` state
  * ARIA widgets like grids, treegrids, and sliders
  * Certain focusable list items in interactive lists
</Accordion>

## Quick Navigation

Browse Mode's most powerful feature is single-letter navigation, allowing instant jumping to element types.

### Single Letter Navigation

<Note type="info">
  Press a single letter to jump to the next element of that type. Add `Shift` to jump backward.
</Note>

| Key   | Element Type    | Description                       |
| ----- | --------------- | --------------------------------- |
| `H`   | Heading         | Jump to next heading (any level)  |
| `1-6` | Heading Level   | Jump to heading of specific level |
| `L`   | List            | Jump to next list                 |
| `I`   | List Item       | Jump to next list item            |
| `T`   | Table           | Jump to next table                |
| `K`   | Link            | Jump to next link                 |
| `V`   | Visited Link    | Jump to links you've visited      |
| `U`   | Unvisited Link  | Jump to links not yet visited     |
| `F`   | Form Field      | Jump to form input, button, etc.  |
| `E`   | Edit Field      | Jump to text input fields         |
| `B`   | Button          | Jump to buttons                   |
| `X`   | Checkbox        | Jump to checkboxes                |
| `C`   | Combo Box       | Jump to dropdown menus            |
| `R`   | Radio Button    | Jump to radio buttons             |
| `Q`   | Block Quote     | Jump to quoted text               |
| `D`   | Landmark        | Jump to ARIA landmarks            |
| `M`   | Frame           | Jump to iframes                   |
| `G`   | Graphic         | Jump to images                    |
| `A`   | Annotation      | Jump to comments/annotations      |
| `O`   | Embedded Object | Jump to embedded objects          |
| `S`   | Separator       | Jump to horizontal separators     |
| `N`   | Non-linked Text | Skip blocks of links              |

### Disabling Single Letter Navigation

Press `NVDA+Shift+Space` to toggle single letter navigation on/off. When off, letter keys pass through to the application (useful for web apps with keyboard shortcuts).

## Elements List

The Elements List provides a searchable, filterable view of document elements.

### Opening Elements List

Press `NVDA+F7` to open the Elements List dialog.

### Available Element Types

<Accordion title="Links Tab">
  Lists all links in the document:

  * Filter by link text
  * See visited vs unvisited links
  * Activate links without moving cursor
</Accordion>

<Accordion title="Headings Tab">
  Shows document structure:

  * Hierarchical heading tree
  * Filter by heading text
  * Jump to any heading instantly
  * Great for understanding page structure
</Accordion>

<Accordion title="Form Fields Tab">
  Lists all interactive elements:

  * Input fields
  * Buttons
  * Checkboxes and radio buttons
  * Combo boxes
  * Quickly navigate to any form control
</Accordion>

<Accordion title="Landmarks Tab">
  Shows ARIA landmarks:

  * Navigation regions
  * Main content areas
  * Search regions
  * Complementary sections
  * Filter by landmark type
</Accordion>

### Using Elements List

1. Type to filter elements by name
2. Use arrow keys to navigate the list
3. Press `Enter` to jump to selected element
4. Press `Space` to activate links/buttons
5. Press `Escape` to close without moving

<Note>
  The Elements List is particularly useful on long, complex pages where visual scanning would normally be used to find specific elements.
</Note>

## Document Navigation

### Cursor Movement

In Browse Mode, cursor keys navigate through the virtual representation:

* **Arrow Keys**: Move by character, line, word (with Ctrl)
* **Page Up/Down**: Move by screenful
* **Home/End**: Jump to start/end of line
* **Ctrl+Home/End**: Jump to start/end of document

### Reading Commands

| Command           | Action                               |
| ----------------- | ------------------------------------ |
| `NVDA+Down Arrow` | Say all (read from current position) |
| `NVDA+Up Arrow`   | Read current line                    |
| `NVDA+Numpad5`    | Read current character               |
| `NVDA+Tab`        | Read next focusable item             |
| `NVDA+Shift+Tab`  | Read previous focusable item         |

### Navigation by Element Type

Beyond single-letter navigation, you can use:

* `T` / `Shift+T`: Next/previous table
* `K` / `Shift+K`: Next/previous link
* `N` / `Shift+N`: Skip/go back to non-linked text blocks
* `F` / `Shift+F`: Next/previous form field
* `H` / `Shift+H`: Next/previous heading

## Table Navigation

Browse Mode provides special commands for navigating tables:

| Command               | Action                   |
| --------------------- | ------------------------ |
| `Ctrl+Alt+Arrow Keys` | Move between table cells |
| `Ctrl+Alt+Home`       | Jump to first cell       |
| `Ctrl+Alt+End`        | Jump to last cell        |
| `Ctrl+Alt+Page Down`  | Jump to next column      |
| `Ctrl+Alt+Page Up`    | Jump to previous column  |

When navigating tables:

* NVDA announces row and column headers
* Reports cell coordinates (row 3, column 2)
* Indicates spanning cells

<Note type="info">
  Table navigation works best when tables have proper semantic markup with `<th>` headers and scope attributes.
</Note>

## Find in Document

### Quick Find

Press `NVDA+Control+F` to search for text in the virtual buffer:

1. Type search text
2. Press Enter to find next
3. Use `NVDA+F3` to find next occurrence
4. Use `NVDA+Shift+F3` to find previous

### Case Sensitive Search

Check the "Case sensitive" option in the Find dialog for exact matching.

## Text Style Navigation

Browse Mode can announce and navigate by text formatting:

* Bold, italic, underline
* Font changes
* Color changes
* Highlighting
* Text size changes

### Style Change Announcement

Configure in NVDA Settings → Document Formatting:

* Report font name
* Report font size
* Report colors
* Report emphasis (bold/italic)
* Report style changes

## Virtual Buffer Technical Details

### How Browse Mode Works

Browse Mode creates a text representation (virtual buffer) of structured documents:

1. **Document Analysis**: NVDA traverses the document object model (DOM)
2. **Buffer Creation**: Builds a flat text representation with semantic information
3. **Element Mapping**: Maintains bidirectional mapping between buffer positions and document objects
4. **Quick Navigation Indexing**: Builds indexes for each element type
5. **Event Handling**: Updates buffer when document changes

### QuickNav Items

Each navigable element is represented as a `QuickNavItem` object containing:

* **Item Type**: Element category (link, heading, table, etc.)
* **Label**: Text representation for Elements List
* **Position**: Location in virtual buffer
* **Document Reference**: Pointer to actual DOM element

### BrowseModeTreeInterceptor

The core class implementing Browse Mode functionality:

* Intercepts keyboard input
* Manages focus vs browse mode switching
* Handles single letter navigation
* Implements Elements List
* Synchronizes with document changes

Source: `source/browseMode.py`

## Browse Mode Settings

### Configurable Options

NVDA Settings → Browse Mode:

<Accordion title="Page Layout">
  * **Use screen layout**: Preserve visual positioning of elements
  * **Maximum characters per line**: Control line wrapping
  * **Maximum lines per page**: Control page down/up distance
</Accordion>

<Accordion title="Automatic Mode Switching">
  * **Automatic focus mode for focus changes**: Switch on focus
  * **Automatic focus mode for caret movement**: Switch when navigating into forms
  * **Audio indication of focus/browse modes**: Sound or speech
</Accordion>

<Accordion title="Navigation">
  * **Trap non-command gestures**: Beep when pressing non-command keys
  * **Automatically set focus on focusable elements**: Focus elements when navigating to them
  * **Auto-pass-through keys**: List keys that should always activate focus mode
</Accordion>

## Applications Supporting Browse Mode

Browse Mode works with:

* **Web Browsers**: Chrome, Firefox, Edge, Internet Explorer
* **Microsoft Office**: Word, Outlook (reading pane), PowerPoint (reading view)
* **PDF Readers**: Adobe Reader, Foxit Reader, Edge PDF viewer
* **Email Clients**: Outlook, Thunderbird
* **Help Systems**: CHM files, Windows Help
* **Other**: Any application exposing accessible document structure

<Note type="warning">
  Some single-page web applications (SPAs) may not work optimally with Browse Mode due to dynamic content updates. NVDA includes workarounds for popular frameworks.
</Note>

## Advanced Techniques

### Embedded Objects

When encountering embedded objects (Flash, Java applets, iframes):

* Press `NVDA+Control+Enter` to interact with embedded object
* Browse mode temporarily disabled within object
* Press `NVDA+Control+Space` to return to Browse Mode

### Pass-Through Keys

Configure specific keys to always pass through to applications:

1. NVDA Settings → Browse Mode → Pass-through keys
2. Add key combinations that should skip Browse Mode
3. Useful for web applications with keyboard shortcuts

### Screen Layout Mode

When enabled, Browse Mode attempts to preserve:

* Spatial positioning of elements
* Column layouts
* Visual grouping
* Relative indentation

Useful for tables and multi-column layouts, but may create extra whitespace.

## Troubleshooting

<Accordion title="Browse Mode Not Activating">
  * Ensure you're in a supported application
  * Check if document loaded completely
  * Try refreshing the page/document
  * Verify Browse Mode isn't disabled for this application
</Accordion>

<Accordion title="Focus Mode Won't Deactivate">
  * Press `NVDA+Space` to manually switch
  * Some controls keep focus mode active intentionally
  * Check for modal dialogs that trap focus
</Accordion>

<Accordion title="Single Letter Navigation Not Working">
  * Check if single letter nav is disabled (`NVDA+Shift+Space`)
  * Verify you're in Browse Mode, not Focus Mode
  * Some web apps override letter keys
</Accordion>

<Accordion title="Elements List Empty">
  * Wait for document to fully load
  * Some elements may use non-standard markup
  * Try refreshing the virtual buffer (`NVDA+F5`)
</Accordion>

## Related Topics

* [Speech Synthesis](/features/speech-synthesis) - Audio output configuration
* [Braille Displays](/features/braille-displays) - Tactile display support
* [Vision Enhancements](/features/vision-enhancements) - Visual highlighting
* [Add-ons](/features/add-ons) - Extend Browse Mode functionality
