Accessibility
Last updated: April 16, 2026
We believe everyone should be able to read and explore markdown documents comfortably. MarkdownViewer is built with accessibility in mind from the ground up, and we continuously work to improve the experience for all users.
Our Commitment
MarkdownViewer aims to conform to the Web Content Accessibility Guidelines (WCAG) 2.1 at Level AA, adapted to mobile platform conventions. We follow Apple's Human Interface Guidelines and Google's Material Design accessibility guidance for iOS and Android respectively.
Built-in Accessibility Features
Screen Reader Support
- Full compatibility with VoiceOver (iOS) and TalkBack (Android).
- All interactive elements carry meaningful semantic labels.
- Section headers are marked with
isHeader semantics so screen readers can jump between sections.
- Decorative icons are excluded from the accessibility tree using
ExcludeSemantics.
- Live regions announce dynamic content changes (sync progress, search results).
Visual Accessibility
- Adjustable font size — font scale from 85% to 150% via Settings, stacking on top of the system's Dynamic Type / display size preference.
- Adjustable line height — Compact, Standard, and Airy presets for comfortable reading.
- Adjustable reading width — Comfortable, Wide, and Full width presets.
- Multiple themes — Light, Dark, Sepia, and System-automatic modes. Sepia provides a warm, low-contrast alternative for extended reading.
- Dynamic color — Material 3 dynamic color adapts to wallpaper-based palettes on supported devices.
- Text contrast ratios meet WCAG AA minimums (4.5:1 for body text, 3:1 for large text).
Motor Accessibility
- All touch targets meet the minimum 44 × 44 dp size recommended by platform guidelines.
- Long-press actions always have an equivalent tap path (no gesture-only interactions).
- Haptic feedback on key actions (bookmark save, navigation jump, back-to-top) provides non-visual confirmation.
- Immersive scroll mode auto-hides chrome to maximize reading area, but all controls remain accessible via scroll-up.
Navigation
- Table of contents drawer with heading-level navigation — tap any heading to jump directly.
- In-document search with match-by-match navigation (previous/next buttons).
- Back-to-top button appears after scrolling, providing quick return to the document start.
- Reading position bookmark — save your place and return to it later.
Content Accessibility
- Mermaid diagrams are rendered as images with descriptive labels so screen readers can identify their presence and type.
- Code blocks include language identification for context.
- Tables maintain their structural semantics for assistive technology navigation.
Testing
We test accessibility through:
- Automated widget-level accessibility tests in our test suite (semantic header annotations, touch target sizes).
- Manual VoiceOver and TalkBack testing on physical devices.
- Flutter's built-in accessibility inspector during development.
Known Limitations
- Mermaid diagrams are rendered as raster images — their internal elements (nodes, labels, arrows) are not individually navigable by screen readers. We provide diagram-type labels as a partial mitigation.
- LaTeX math expressions are rendered visually and may not be fully accessible to screen readers. We are investigating MathML alternatives for future releases.
- A comprehensive end-to-end TalkBack and VoiceOver audit is planned for the v1.0 release.
Feedback
If you encounter an accessibility barrier while using MarkdownViewer, we want to know. Please reach out through:
We take accessibility reports seriously and aim to respond within one week.