---
title: Accessibility Compliance
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/captions-accessibility-compliance
---

## Accessibility Compliance


### Compliance Requirements Matrix

| Regulation | Scope | Requirement | Deadline |
|-----------|-------|-------------|----------|
| ADA Title II | US state/local government | WCAG 2.1 AA | Apr 2026 (50k+ pop), Apr 2027 (&lt;50k) |
| Section 508 | US federal agencies | WCAG 2.1 AA | Ongoing |
| WCAG 2.1 AA | Web content | 1.2.2 (pre-recorded captions), 1.2.4 (live captions) | Standard |
| EAA | EU audiovisual services | Accessible multimedia | June 2025 |
| CVAA/FCC | US broadcast + online video | Closed captions on distributed content | Ongoing |

### Caption Quality Standards

FCC caption quality requirements:
- **Accuracy:** Captions must match spoken words and non-speech sounds
- **Synchronicity:** Captions must coincide with dialogue and sounds
- **Completeness:** Captions must cover the entirety of the program
- **Placement:** Captions must not obscure visual content

### Machine vs Human Accuracy

- **Machine (REACH ASR):** ~83-87% accuracy. Use as a starting point, then upgrade to human captions for full ADA/Section 508 compliance.
- **Human (REACH professional):** 99%+ accuracy. Meets ADA, Section 508, WCAG 2.1 AA, and FCC requirements.

Best practice: Auto-caption with machine ASR for immediate availability, then upgrade to human captions for compliance.

### Audio Description via REACH

For visually impaired users, REACH supports audio description:

- **serviceFeature:** `4` (AUDIO_DESCRIPTION) — standard
- **serviceFeature:** `9` (EXTENDED_AUDIO_DESCRIPTION) — extended pauses
- Set `usage=1` (EXTENDED_AUDIO_DESCRIPTION) on the CaptionAsset

### Accessibility Audit Pattern

Bulk-check caption coverage across a library:


```bash
# Step 1: List all entries
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/list" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "filter[objectType]=KalturaMediaEntryFilter" \
  -d "filter[statusEqual]=2" \
  -d "filter[mediaTypeEqual]=1" \
  -d "pager[pageSize]=500"

# Step 2: For each entry, check caption assets
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/list" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "filter[objectType]=KalturaAssetFilter" \
  -d "filter[entryIdEqual]=$KALTURA_ENTRY_ID" \
  -d "filter[statusEqual]=2"

# Step 3: Flag entries with totalCount=0 as needing captions
# Step 4: Order REACH tasks for uncaptioned entries
```
