Skip to main content
View as Markdown

Accessibility Compliance - Content Management

Accessibility Compliance​

Compliance Requirements Matrix​

RegulationScopeRequirementDeadline
ADA Title IIUS state/local governmentWCAG 2.1 AAApr 2026 (50k+ pop), Apr 2027 (<50k)
Section 508US federal agenciesWCAG 2.1 AAOngoing
WCAG 2.1 AAWeb content1.2.2 (pre-recorded captions), 1.2.4 (live captions)Standard
EAAEU audiovisual servicesAccessible multimediaJune 2025
CVAA/FCCUS broadcast + online videoClosed captions on distributed contentOngoing

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:

# 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