)]}'
{"id": 5078190552907776, "name": "WebAudio: Configurable render quantum", "summary": "Adds an optional renderSizeHint to AudioContext and OfflineAudioContext. This allows developers to customize the WebAudio render quantum size by passing a specific integer, use the default of 128 frames by omitting the hint or passing \"default\", or request that the User-Agent select an optimal size by specifying \"hardware\".", "markdown_fields": [], "blink_components": ["Blink>WebAudio"], "star_count": 100, "search_tags": [], "created": {"by": "mjwilson@chromium.org", "when": "2025-07-31 23:26:12.578381"}, "updated": {"by": "mjwilson@chromium.org", "when": "2026-08-24 17:05:39.054907"}, "category": "Multimedia", "category_int": 4, "feature_notes": "As of M145, the following caveats apply: the 'hardware' hint will always return the default quantum size (128) due to ongoing privacy discussion, and some nodes have not been tested with different quantum sizes and may have unexpected behavior.", "web_feature": "web-audio", "is_official_web_feature": true, "webdx_usecounter_enum": null, "enterprise_feature_categories": [], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 5159483478900736, "created": "2025-07-31 23:26:13.233675", "feature_id": 5078190552907776, "stage_type": 220, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/688d3254.2b0a0220.361edb.0299.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5119763621347328, "created": "2025-07-31 23:26:13.342243", "feature_id": 5078190552907776, "stage_type": 230, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 145, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5188713617031168, "created": "2025-07-31 23:26:13.398039", "feature_id": 5078190552907776, "stage_type": 250, "display_name": "WebAudio Configurable Render Quantum", "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BuAeqS%3DygCo2wPaf0Cfo%2B%2BdEoHGWx%2Byc4%2BfO84U%2B_5hQqOvYg%40mail.gmail.com", "announcement_url": null, "experiment_goals": "Validate performance improvement gained by matching render quantum size to software buffer sizes when using a numeric renderSizeHint.\n\nVerify actual audio processing output is unchanged when using a numeric renderSizeHint.\n\nWe have a primary partner for this Origin Trial, and we would like to see if the performance and ergonomics of the API satisfy this partner's need.  This partner is not going to use the \"hardware\" hint, and we think that it is still valuable to conduct an Origin Trial to gather feedback on the rest of the API.", "experiment_risks": "None.", "origin_trial_id": "2970686904204263425", "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": "WebAudioConfigurableRenderQuantum", "ot_description": "Makes AudioContext and OfflineAudioContext take an optional renderSizeHint, which allows users to ask for a particular render quantum size.", "ot_display_name": "WebAudio Configurable Render Quantum", "ot_documentation_url": "https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint", "ot_emails": ["hongchan@google.com", "web-audio-team@google.com"], "ot_feedback_submission_url": "https://github.com/WebAudio/web-audio-api/issues", "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "mjwilson@google.com", "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": 5774, "ot_webfeature_use_counter": "kWebAudioRenderSizeHint", "extensions": [{"id": 5086936952864768, "created": "2026-04-13 21:56:52.504269", "feature_id": 5078190552907776, "stage_type": 251, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69dd7ab5.050a0220.c8e20.0171.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "mjwilson@chromium.org", "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": "Unexpected delays in implementation, due in part to issues which were uncovered by the Origin Trial itself.  We would like one more milestone for the trial.", "ot_stage_id": 5188713617031168, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 151, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6284289818886144, "created": "2026-06-17 22:02:12.149319", "feature_id": 5078190552907776, "stage_type": 251, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a3319c8.3af95f39.17d45c.005e.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "mjwilson@chromium.org", "ot_requester_email": "mjwilson@chromium.org", "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": "During the previous extension we uncovered additional fingerprinting concerns that we would like to resolve before shipping.  Team member out of office time means that we will not be able to resolve this before M151, and we would like the trial extended to coincide with the new shipping date if possible to continue gathering feedback.", "ot_stage_id": 5188713617031168, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 152, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5188873635364864, "created": "2026-07-21 21:42:40.501167", "feature_id": 5078190552907776, "stage_type": 251, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a5fe800.77f2aaf9.1be956.027f.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "mjwilson@chromium.org", "ot_requester_email": "mjwilson@chromium.org", "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": "During the last extension we resolved the fingerprinting concerns and landed what we thought were our final changes, but re-enabling tests that were added during early development revealed that some nodes still need to be manually updated.\n\nIt's possible that the work could be finished before M152 branch, but it would be a very tight deadline so we would like one final extension to M153.", "ot_stage_id": 5188713617031168, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 153, "android_last": null, "ios_last": null, "webview_last": null}], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 145, "android_first": 145, "ios_first": null, "webview_first": 145, "desktop_last": 151, "android_last": 151, "ios_last": null, "webview_last": 151, "ot_setup_status": 6}, {"id": 5202762991927296, "created": "2025-07-31 23:26:13.711779", "feature_id": 5078190552907776, "stage_type": 260, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a62356b.3e7ba578.2a5c5b.01f9.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 153, "android_first": 153, "ios_first": null, "webview_first": 153, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-08-24 17:05:39.054907", "creator_email": "mjwilson@chromium.org", "updater_email": "mjwilson@chromium.org", "owner_emails": ["hongchan@google.com", "mjwilson@chromium.org"], "editor_emails": ["ajayrahatekar@google.com"], "cc_emails": [], "spec_mentor_emails": [], "unlisted": false, "deleted": false, "editors": ["ajayrahatekar@google.com"], "cc_recipients": [], "spec_mentors": [], "creator": "mjwilson@chromium.org", "feature_type": "Chromium catches up", "feature_type_int": 1, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5202762991927296, "bug_url": "https://crbug.com/40637820", "launch_bug_url": "https://launch.corp.google.com/launch/4416924", "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>WebAudio&blocking=40637820&cc=hongchan@google.com,mjwilson@chromium.org", "screenshot_links": [], "first_enterprise_notification_milestone": null, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": "N/A (launch with --enable-features=WebAudioConfigurableRenderQuantum)", "finch_name": "WebAudioConfigurableRenderQuantum", "non_finch_justification": null, "ongoing_constraints": "None.", "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "It is difficult and complex to write a web app when the audio processing block size does not match with the WebAudio render quantum size (128 sample-frames). Removing this restriction and making it customizable on AudioContext would enable easier development and more efficient audio processing.", "devtrial_instructions": null, "activation_risks": "There is an ongoing privacy discussion about how to mitigate fingerprinting concerns around the \"hardware\" hint (https://github.com/WebAudio/web-audio-api/issues/2659).  The \"hardware\" hint as implemented in Chromium currently will always return the default 128 render quantum size, which exposes no user information.  This is allowed by the spec, which says \"It is a hint that might not be honored.\"", "measurement": "UseCounters: WebAudioRenderSizeHint, WebAudioRenderQuantumSize", "availability_expectation": "We expect that Firefox will implement the feature independently at some point.", "adoption_expectation": "We expect that specific partners will use this functionality immediately upon its launch in Chrome.", "adoption_plan": "We are in communication with partners, and also in communication with Mozilla via the Audio Working Group.", "initial_public_proposal_url": null, "explainer_links": [], "requires_embedder_support": false, "spec_link": "https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize", "api_spec": true, "automation_spec": false, "interop_compat_risks": "Low. The feature is already specified.", "all_platforms": true, "all_platforms_descr": "All supported platforms have mechanisms to implement this feature.", "non_oss_deps": "No.", "anticipated_spec_changes": "https://github.com/WebAudio/web-audio-api/issues/2663\nhttps://github.com/WebAudio/web-audio-api/issues/2664", "security_risks": "There is concern that a very low render quantum size could allow an AudioWorklet to create a high-resolution timer, but very high sample rates are already allowed and have a similar risk so the marginal change in security is probably low.", "ergonomics_risks": "An identified use case of this feature is to match buffer sizes used by other Chromium audio APIs, in order to improve performance.", "wpt": true, "wpt_descr": "https://wpt.fyi/results/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-rendersizehint.html\n\nhttps://wpt.fyi/results/webaudio/the-audio-api/the-offlineaudiocontext-interface/offlineaudiocontext-rendersizehint.html", "webview_risks": "Low.  The change is to ship a new API.", "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "It may be worth exposing the render quantum size value in the DevTools WebAudio pane, similar to sample rate.", "doc_links": ["https://github.com/WebAudio/web-audio-api/blob/main/explainer/user-selectable-render-size.md"], "sample_links": [], "prefixed": null, "tags": [], "tag_review": null, "tag_review_status": "Issues addressed", "tag_review_status_int": 3, "security_review_status": "Issues addressed", "security_review_status_int": 3, "privacy_review_status": "Issues open", "privacy_review_status_int": 2, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": [], "docs": ["https://github.com/WebAudio/web-audio-api/blob/main/explainer/user-selectable-render-size.md"]}, "comments": "As of M145, the following caveats apply: the 'hardware' hint will always return the default quantum size (128) due to ongoing privacy discussion, and some nodes have not been tested with different quantum sizes and may have unexpected behavior.", "ff_views": 5, "safari_views": 5, "web_dev_views": 2, "browsers": {"chrome": {"bug": "https://crbug.com/40637820", "blink_components": ["Blink>WebAudio"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["hongchan@google.com", "mjwilson@chromium.org"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 153, "android": 153, "webview": 153, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1407", "notes": "A Firefox developer wrote the specification change (https://github.com/WebAudio/web-audio-api/pull/2469).", "text": "No signal", "val": 5}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/662", "notes": null, "text": "No signal", "val": 5}}, "webdev": {"view": {"text": "Positive", "val": 2, "url": "https://github.com/WebAudio/web-audio-api/issues/1503", "notes": "Developers have requested a way to increase the render quantum size, and are looking forward to the feature being implemented."}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": null}}}, "standards": {"spec": "https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize", "maturity": {"text": "Specification currently under development in a Working Group", "short_text": "Working draft", "val": 4}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": "Failed to generate WPT coverage report: 'requirements_extraction_categorized.jinja' not found in search path: '/layers/google.python.pip/pip/lib/python3.13/site-packages/wptgen/templates'", "ai_test_eval_run_status": 3, "ai_test_eval_status_timestamp": "2026-07-23 00:56:03.763796"}