WPT
wpt / webaudio / the-audio-api / the-analysernode-interface / ctor-analyser.html
Spec: Web Audio API ↗
Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@e7122b73f, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-70fb3 (wpt@4a01b83e3, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 78/78 | 78/78 | 78/78 | 78/78 | 78/78 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| # AUDIT TASK RUNNER STARTED. | PASS | PASS | PASS | PASS | PASS | — |
| Executing "initialize" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "invalid constructor" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "default constructor" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "test AudioNodeOptions" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "constructor with options" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "construct invalid options" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "setting min/max" | PASS | PASS | PASS | PASS | PASS | — |
| Audit report | PASS | PASS | PASS | PASS | PASS | — |
| > [initialize] | PASS | PASS | PASS | PASS | PASS | — |
| context = new OfflineAudioContext(...) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [initialize] All assertions passed. (total 1 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [invalid constructor] | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode() threw TypeError: "Failed to construct 'AnalyserNode': 1 argument required, but only 0 present.". | PASS | — | — | — | — | — |
| new AnalyserNode(1) threw TypeError: "Failed to construct 'AnalyserNode': parameter 1 is not of type 'BaseAudioContext'.". | PASS | — | — | — | — | — |
| new AnalyserNode(context, 42) threw TypeError: "Failed to construct 'AnalyserNode': The provided value is not of type 'AnalyserOptions'.". | PASS | — | — | — | — | — |
| < [invalid constructor] All assertions passed. (total 3 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [default constructor] | PASS | PASS | PASS | PASS | PASS | — |
| node0 = new AnalyserNode(context) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node0 instanceof AnalyserNode is equal to true. | PASS | PASS | PASS | PASS | PASS | — |
| node0.numberOfInputs is equal to 1. | PASS | PASS | PASS | PASS | PASS | — |
| node0.numberOfOutputs is equal to 1. | PASS | PASS | PASS | PASS | PASS | — |
| node0.channelCount is equal to 2. | PASS | PASS | PASS | PASS | PASS | — |
| node0.channelCountMode is equal to max. | PASS | PASS | PASS | PASS | PASS | — |
| node0.channelInterpretation is equal to speakers. | PASS | PASS | PASS | PASS | PASS | — |
| node0.fftSize is equal to 2048. | PASS | PASS | PASS | PASS | PASS | — |
| node0.frequencyBinCount is equal to 1024. | PASS | PASS | PASS | PASS | PASS | — |
| node0.minDecibels is equal to -100. | PASS | PASS | PASS | PASS | PASS | — |
| node0.maxDecibels is equal to -30. | PASS | PASS | PASS | PASS | PASS | — |
| node0.smoothingTimeConstant is equal to 0.8. | PASS | PASS | PASS | PASS | PASS | — |
| < [default constructor] All assertions passed. (total 12 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [test AudioNodeOptions] | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCount: 17}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelCount is equal to 17. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "Failed to construct 'AnalyserNode': The channel count provided (0) is outside the range [1, 32].". | PASS | — | — | — | — | — |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "Failed to construct 'AnalyserNode': The channel count provided (99) is outside the range [1, 32].". | PASS | — | — | — | — | — |
| new AnalyserNode(c, {channelCountMode: "max"} did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelCountMode is equal to max. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCountMode: "max"}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelCountMode after valid setter is equal to max. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCountMode: "clamped-max"}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelCountMode after valid setter is equal to clamped-max. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCountMode: "explicit"}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelCountMode after valid setter is equal to explicit. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "Failed to construct 'AnalyserNode': Failed to read the 'channelCountMode' property from 'AudioNodeOptions': The provided value 'foobar' is not a valid enum value of type ChannelCountMode.". | PASS | — | — | — | — | — |
| node.channelCountMode after invalid setter is equal to explicit. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelInterpretation: "speakers"}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelInterpretation is equal to speakers. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelInterpretation: "discrete"}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.channelInterpretation is equal to discrete. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Failed to construct 'AnalyserNode': Failed to read the 'channelInterpretation' property from 'AudioNodeOptions': The provided value 'foobar' is not a valid enum value of type ChannelInterpretation.". | PASS | — | — | — | — | — |
| node.channelInterpretation after invalid setter is equal to discrete. | PASS | PASS | PASS | PASS | PASS | — |
| < [test AudioNodeOptions] All assertions passed. (total 20 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [constructor with options] | PASS | PASS | PASS | PASS | PASS | — |
| node1 = new AnalyserNode(c, {"fftSize":32,"maxDecibels":1,"minDecibels":-13,"smoothingTimeConstant":0.125}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node1 instanceof AnalyserNode is equal to true. | PASS | PASS | PASS | PASS | PASS | — |
| node1.fftSize is equal to 32. | PASS | PASS | PASS | PASS | PASS | — |
| node1.maxDecibels is equal to 1. | PASS | PASS | PASS | PASS | PASS | — |
| node1.minDecibels is equal to -13. | PASS | PASS | PASS | PASS | PASS | — |
| node1.smoothingTimeConstant is equal to 0.125. | PASS | PASS | PASS | PASS | PASS | — |
| < [constructor with options] All assertions passed. (total 6 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [construct invalid options] | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': The value provided (33) is not a power of two.". | PASS | — | — | — | — | — |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-500) must be greater than or equal to minDecibels ( -100).". | PASS | — | — | — | — | — |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-30) must be greater than or equal to minDecibels ( -10).". | PASS | — | — | — | — | — |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "Failed to construct 'AnalyserNode': The smoothing value provided (2) is outside the range [0, 1].". | PASS | — | — | — | — | — |
| node = new AnalyserNode(c, { frequencyBinCount: 33 }) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node.frequencyBinCount is equal to 1024. | PASS | PASS | PASS | PASS | PASS | — |
| < [construct invalid options] All assertions passed. (total 6 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [setting min/max] | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":20}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, {"maxDecibels":20,"minDecibels":-10}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, {"minDecibels":-200,"maxDecibels":-150}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-200}) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).". | PASS | — | — | — | — | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "Failed to construct 'AnalyserNode': maxDecibels (-150) must be greater than or equal to minDecibels ( -10).". | PASS | — | — | — | — | — |
| < [setting min/max] All assertions passed. (total 6 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS | PASS | PASS | PASS | PASS | — |
| new AnalyserNode() threw TypeError: "AnalyserNode constructor: At least 1 argument required, but only 0 passed". | — | PASS | — | — | — | — |
| new AnalyserNode(1) threw TypeError: "AnalyserNode constructor: Argument 1 is not an object.". | — | PASS | — | — | — | — |
| new AnalyserNode(context, 42) threw TypeError: "AnalyserNode constructor: Value can't be converted to a dictionary.". | — | PASS | — | — | — | — |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "AnalyserNode constructor: Channel count (0) must be in the range [1, max supported channel count]". | — | PASS | — | — | — | — |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "AnalyserNode constructor: Channel count (99) must be in the range [1, max supported channel count]". | — | PASS | — | — | — | — |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "AnalyserNode constructor: 'foobar' (value of 'channelCountMode' member of AudioNodeOptions) is not a valid value for enumeration ChannelCountMode.". | — | PASS | — | — | — | — |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "AnalyserNode constructor: 'foobar' (value of 'channelInterpretation' member of AudioNodeOptions) is not a valid value for enumeration ChannelInterpretation.". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "AnalyserNode constructor: FFT size 33 is not a power of two in the range 32 to 32768". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "AnalyserNode constructor: minDecibels value (-100) must be smaller than maxDecibels value (-500)". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "AnalyserNode constructor: minDecibels value (-10) must be smaller than maxDecibels value (-30)". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "AnalyserNode constructor: 2 is not in the range [0, 1]". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "AnalyserNode constructor: minDecibels value (-10) must be smaller than maxDecibels value (-150)". | — | PASS | — | — | — | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "AnalyserNode constructor: minDecibels value (-10) must be smaller than maxDecibels value (-150)". | — | PASS | — | — | — | — |
| new AnalyserNode() threw TypeError: "Not enough arguments". | — | — | PASS | — | — | — |
| new AnalyserNode(1) threw TypeError: "Argument 1 ('context') to the AnalyserNode constructor must be an instance of BaseAudioContext". | — | — | PASS | — | — | — |
| new AnalyserNode(context, 42) threw TypeError: "Type error". | — | — | PASS | — | — | — |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "Channel count cannot be 0". | — | — | PASS | — | — | — |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "Channel count exceeds maximum limit". | — | — | PASS | — | — | — |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "Type error". | — | — | PASS | — | — | — |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Type error". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "fftSize must be power of 2 in the range 32 to 32768.". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "minDecibels must be less than maxDecibels.". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "minDecibels must be less than maxDecibels.". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "Smoothing time constant needs to be between 0 and 1.". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "minDecibels must be less than maxDecibels.". | — | — | PASS | — | — | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "minDecibels must be less than maxDecibels.". | — | — | PASS | — | — | — |
| new AnalyserNode() threw TypeError: "Not enough arguments to "AnalyserNode.constructor".". | — | — | — | — | PASS | — |
| new AnalyserNode(1) threw TypeError: "Value is not an object.". | — | — | — | — | PASS | — |
| new AnalyserNode(context, 42) threw TypeError: "Value is not an object.". | — | — | — | — | PASS | — |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "The operation is not supported.". | — | — | — | — | PASS | — |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "The operation is not supported.". | — | — | — | — | PASS | — |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "'foobar' is not a valid enum value for enumeration 'ChannelCountMode'.". | — | — | — | — | PASS | — |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "'foobar' is not a valid enum value for enumeration 'ChannelInterpretation'.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "The index is not in the allowed range.". | — | — | — | — | PASS | — |
| new AnalyserNode() threw TypeError: "AnalyserNode() needs one argument". | — | — | — | PASS | — | — |
| new AnalyserNode(1) threw TypeError: "Not an object of type BaseAudioContext". | — | — | — | PASS | — | — |
| new AnalyserNode(context, 42) threw TypeError: "Not an object of type AnalyserOptions". | — | — | — | PASS | — | — |
| new AnalyserNode(c, {channelCount: 0}) threw NotSupportedError: "Invalid channel count". | — | — | — | PASS | — | — |
| new AnalyserNode(c, {channelCount: 99}) threw NotSupportedError: "Invalid channel count". | — | — | — | PASS | — | — |
| new AnalyserNode(c, {channelCountMode: "foobar"} threw TypeError: "Invalid value 'foobar' for enumeration type 'ChannelCountMode'". | — | — | — | PASS | — | — |
| new AnalyserNode(c, {channelInterpretation: "foobar"}) threw TypeError: "Invalid value 'foobar' for enumeration type 'ChannelInterpretation'". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, { fftSize: 33 }) threw IndexSizeError: "Analyser node fftSize not a power of 2 between 32 and 32768". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, { maxDecibels: -500 }) threw IndexSizeError: "Analyser node minDecibels greater than maxDecibels". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, { minDecibels: -10 }) threw IndexSizeError: "Analyser node minDecibels greater than maxDecibels". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, { smoothingTimeConstant: 2 }) threw IndexSizeError: "Analyser node smoothingTimeConstant not between 0.0 and 1.0". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, {"maxDecibels":-150,"minDecibels":-10}) threw IndexSizeError: "Analyser node minDecibels greater than maxDecibels". | — | — | — | PASS | — | — |
| node = new AnalyserNode(c, {"minDecibels":-10,"maxDecibels":-150}) threw IndexSizeError: "Analyser node minDecibels greater than maxDecibels". | — | — | — | PASS | — | — |