Skip to content

The upscaler.video Codec Support Dataset

The upscaler.video Codec Support Dataset is the first comprehensive, empirical collection of real-world WebCodecs API support data. Unlike synthetic benchmarks or browser-reported capabilities, this dataset represents actual compatibility testing across 224,360 unique user sessions spanning diverse hardware, browsers, and operating systems.

The dataset includes both encoder support (using VideoEncoder.isConfigSupported()) and decoder support (using VideoDecoder.isConfigSupported()), with encoder data collected from all sessions and decoder data collected starting January 14th 2026.

  • Measurement Types:
    • Encoder support (using VideoEncoder.isConfigSupported()) - all sessions
    • Decoder support (using VideoDecoder.isConfigSupported()) - sessions from Jan, 14th 2026 onwards
  • Total Tests: 71,334,706 individual codec compatibility checks
  • Test Sessions: 224,360 unique user sessions
  • Codec Strings: 1,087 unique codec variations tested
  • Last Updated: January 2026
  • Collection Period: January 2026 (ongoing)
  • License: CC-BY 4.0

Download upscaler.video Codec Support Dataset (ZIP)

The ZIP archive contains:

  • upscaler-video-codec-dataset-raw.csv - The complete dataset (71.3M rows)
  • README.txt - Quick reference guide for the dataset structure

The dataset contains 71,334,706 rows - one row per individual codec string test. Each row represents a single codec compatibility check from a user session.

ColumnTypeDescription
timestampISO 8601When the test was performed (e.g., “2026-01-05T00:54:11.570Z”)
user_agentstringFull browser user agent string
browserstringBrowser family detected from user agent (Chrome, Safari, Edge, Firefox)
platform_rawstringRaw platform identifier from navigator.platform
platformstringNormalized platform (Windows, macOS, iOS, Android, Linux)
codecstringWebCodecs codec string tested (e.g., “av01.0.01M.08”)
encoder_supportedbooleanWhether VideoEncoder supports this codec (true or false)
decoder_supportedboolean/emptyWhether VideoDecoder supports this codec (true, false, or empty if not tested)

Note: The decoder_supported field is empty for sessions collected before January 14th 2026. All rows have encoder_supported data.

timestamp,user_agent,browser,platform_raw,platform,codec,encoder_supported,decoder_supported
2026-01-05T00:54:11.570Z,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Edge,Win32,Windows,av01.0.01M.08,true,
2026-01-16T23:58:08.560Z,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Chrome,Win32,Windows,avc1.420833,true,true
2026-01-16T23:58:08.560Z,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Chrome,Win32,Windows,avc1.64040c,false,true

In the third row, you can see a codec that is not supported for encoding but is supported for decoding - this asymmetry is why separate measurements are important.

  • Rows: 71,334,706 individual codec tests
  • File Size: 12.52 GB (uncompressed CSV)
  • Compressed (ZIP): 404.7 MB

This dataset was collected in a completely anonymized fashion from real users of free.upscaler.video, an open-source utility to upscale videos in the browser, serving ~200,000 monthly active users.

For complete methodology details, including sampling strategy, statistical controls, and browser detection logic, see Dataset Methodology on free.upscaler.video.

  • Real Hardware: Data from actual user devices, not emulators or lab environments
  • Background Testing: Codec checks run asynchronously without user interaction
  • Privacy-Preserving: No PII collected; only anonymous browser/platform metadata
  • Randomized Sampling: Each session tests 300 random codecs from the 1,087-string pool

Browsers Tested:

  • Chrome/Chromium (74% of sessions)
  • Safari (13%)
  • Edge (8%)
  • Firefox (5%)

Platforms Tested:

  • Windows (57%)
  • Android (19%)
  • macOS (11%)
  • iOS (10%)
  • Linux (3%)

Codec Families:

  • AVC (H.264) - 200+ variants
  • HEVC (H.265) - 150+ variants
  • VP9 - 100+ variants
  • AV1 - 200+ variants
  • VP8 - 10+ variants
  • Audio codecs - 400+ variants (AAC, Opus, MP3, FLAC, etc.)

This dataset answers the critical question: “Which codec strings actually work in production?”

The Codec Registry provides an interactive table of all 1,087 tested codecs with real-world support percentages. Use it to:

  • Choose safe defaults: Codecs with 90%+ support work on virtually all hardware
  • Plan fallback strategies: Identify which modern codecs (AV1, VP9) need H.264 fallbacks
  • Debug platform-specific issues: See exact support matrices for browser/OS combinations

This is the first large-scale empirical validation of WebCodecs API implementation consistency across browsers and platforms.

Use cases:

  • Identify implementation gaps (e.g., Safari’s limited AV1 support)
  • Prioritize codec support roadmaps based on real hardware distribution
  • Validate conformance testing against actual user environments

The dataset is structured for statistical analysis:

import pandas as pd
# Load the raw dataset
df = pd.read_csv('upscaler-video-codec-dataset-raw.csv')
# Example 1: Calculate encoder support percentage by codec
encoder_support = df.groupby('codec').agg({
'encoder_supported': lambda x: (x == 'true').sum(),
'codec': 'count'
}).rename(columns={'codec': 'total'})
encoder_support['percentage'] = (encoder_support['encoder_supported'] / encoder_support['total'] * 100).round(2)
# Example 1b: Calculate decoder support percentage (excluding empty values)
df_with_decoder = df[df['decoder_supported'] != '']
decoder_support = df_with_decoder.groupby('codec').agg({
'decoder_supported': lambda x: (x == 'true').sum(),
'codec': 'count'
}).rename(columns={'codec': 'total'})
decoder_support['percentage'] = (decoder_support['decoder_supported'] / decoder_support['total'] * 100).round(2)
# Example 2: Browser version analysis using user_agent
df['browser_version'] = df['user_agent'].str.extract(r'Chrome/(\d+\.\d+)')
# Example 3: Filter for specific platform
windows_tests = df[df['platform'] == 'Windows']
# Example 4: Time-series analysis of encoder support
df['timestamp'] = pd.to_datetime(df['timestamp'])
daily_encoder_support = df.groupby(df['timestamp'].dt.date)['encoder_supported'].apply(
lambda x: (x == 'true').mean() * 100
)
# Example 5: Compare encoder vs decoder support for same codec
codec_comparison = df[df['decoder_supported'] != ''].groupby('codec').agg({
'encoder_supported': lambda x: (x == 'true').mean() * 100,
'decoder_supported': lambda x: (x == 'true').mean() * 100
})
codec_comparison['decode_encode_gap'] = codec_comparison['decoder_supported'] - codec_comparison['encoder_supported']

Key Analysis Opportunities:

  • Browser version-specific codec support trends
  • Temporal evolution of codec adoption
  • Platform-specific hardware decoder availability
  • User agent string parsing for detailed device identification
  • 224,360 sessions provide high confidence for common browser/platform combinations
  • 71+ million tests enable fine-grained analysis of codec variant support
  • Sample sizes vary by combination; check total_count field for statistical validity
  1. Geographic Bias: Data collected from free.upscaler.video users (global distribution)
  2. Binary Support: Tests isConfigSupported() only; does not measure actual encode/decode performance or quality
  3. Time Sensitivity: Browser support evolves; data reflects snapshot from collection period
  4. Rare Combinations: Some browser/OS pairs (e.g., Safari+Linux) have <50 samples
  5. Decoder Data Coverage: Decoder support data only available for sessions from January 2026 onwards (smaller sample size than encoder data)

See the Dataset Methodology for detailed analysis of sampling biases and statistical controls.

When referencing this dataset in academic work, documentation, or standards proposals:

@dataset{upscaler_codec_dataset_2026,
title = {The upscaler.video Codec Support Dataset},
author = {Bhattacharyya, Samrat},
year = {2026},
version = {2026-01-19},
url = {https://free.upscaler.video/research/methodology/},
note = {71.3M codec tests from 224k sessions}
}

For informal citations:

Data Source: The upscaler.video Codec Support Dataset License: CC-BY 4.0

Creative Commons Attribution 4.0 International (CC-BY 4.0)

You are free to:

  • Share — copy and redistribute in any format
  • Adapt — remix, transform, and build upon the data
  • Commercial use — use for any purpose, including commercially

Attribution requirement: Credit “upscaler.video Codec Support Dataset” with a link to this page.

This dataset is periodically updated as new data is collected from free.upscaler.video users.

  • Current Version: 2026-01-19 (224,360 sessions)
  • Update Frequency: Quarterly
  • Changelog: View version history

Primary Use Case: Determining real-world WebCodecs API codec support across browsers and platforms.

Key Findings:

  • Best universal support: H.264/AVC variants (99%+ support across all platforms)
  • Limited support: AV1 on Safari/iOS (varies by device and OS version)
  • Platform gaps: HEVC support varies significantly (strong on Apple, limited elsewhere)
  • Recommended fallback chain: AV1 → VP9 → H.264 (for video encoding)

Common Questions Answered:

  • Q: “Does Safari support AV1?” → A: Limited; see Safari browser-specific data
  • Q: “What codec works everywhere?” → A: H.264 Baseline/Main profile (avc1.42001e, avc1.4d001e)
  • Q: “Should I use HEVC for web?” → A: Only with H.264 fallback; Windows/Linux support is poor
  • Q: “Is VP9 safe for production?” → A: 85%+ support on modern browsers; needs H.264 fallback for older devices

Dataset Location: Download at /upscaler-video-codec-dataset.zip (404.7MB)

Interactive Tool: Browse all codecs at /datasets/codec-support-table/

Methodology: https://free.upscaler.video/research/methodology/


*This dataset was collected from users of free.upscaler.video, an open-source utility to upscale videos in the browser, serving ~200,000 monthly active users.