{"id":29354407,"url":"https://github.com/googlechromelabs/audioworklet-polyfill","last_synced_at":"2025-07-09T03:14:39.585Z","repository":{"id":51315716,"uuid":"134315664","full_name":"GoogleChromeLabs/audioworklet-polyfill","owner":"GoogleChromeLabs","description":"🔊 Polyfill AudioWorklet using the legacy ScriptProcessor API.","archived":false,"fork":false,"pushed_at":"2021-05-16T00:35:47.000Z","size":38,"stargazers_count":196,"open_issues_count":13,"forks_count":20,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-07T04:13:55.442Z","etag":null,"topics":["audio-processing","audio-worklet","web-audio","web-audio-api","web-audio-module","web-audio-worklet","webaudio","webaudio-api"],"latest_commit_sha":null,"homepage":"https://googlechromelabs.github.io/audioworklet-polyfill/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GoogleChromeLabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-21T19:29:37.000Z","updated_at":"2025-04-25T18:59:13.000Z","dependencies_parsed_at":"2022-09-22T00:03:36.843Z","dependency_job_id":null,"html_url":"https://github.com/GoogleChromeLabs/audioworklet-polyfill","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/GoogleChromeLabs/audioworklet-polyfill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleChromeLabs%2Faudioworklet-polyfill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleChromeLabs%2Faudioworklet-polyfill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleChromeLabs%2Faudioworklet-polyfill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleChromeLabs%2Faudioworklet-polyfill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoogleChromeLabs","download_url":"https://codeload.github.com/GoogleChromeLabs/audioworklet-polyfill/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleChromeLabs%2Faudioworklet-polyfill/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264384459,"owners_count":23599619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-processing","audio-worklet","web-audio","web-audio-api","web-audio-module","web-audio-worklet","webaudio","webaudio-api"],"created_at":"2025-07-09T03:14:39.015Z","updated_at":"2025-07-09T03:14:39.579Z","avatar_url":"https://github.com/GoogleChromeLabs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/RqW6b4o.png\" width=\"200\" height=\"200\" alt=\"AudioWorklet Polyfill\"\u003e\n  \u003ch1 align=\"center\"\u003e\n  \tAudioWorklet Polyfill\n\t\u003ca href=\"https://www.npmjs.org/package/audioworklet-polyfill\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/audioworklet-polyfill.svg?style=flat\" alt=\"npm\"\u003e\u003c/a\u003e\n  \u003c/h1\u003e\n  \u003ch3 align=\"center\"\u003e1kB polyfill for \u003ca href=\"https://developers.google.com/web/updates/2017/12/audio-worklet\"\u003eAudioWorklet\u003c/a\u003e.\u003c/h3\u003e\n\u003c/p\u003e\n\n`audioworklet-polyfill` is a tiny JavaScript library that brings AudioWorklet support to all major browsers: Chrome, Firefox, Safari and Edge. It uses ScriptProcessorNode under the hood, and runs your Worklet code in an isolated scope on the main thread ([read why](#why-are-worklets-emulated-on-the-main-thread)).\n\n| [Basic Demo](https://googlechromelabs.github.io/audioworklet-polyfill/) | [DSP Playground Demo](https://audio-dsp-playground-polyfilled.surge.sh) |\n|-|-|\n\n\u003e **New to AudioWorklet?** Check out this great [Introduction and Demos](https://developers.google.com/web/updates/2017/12/audio-worklet) or the [AudioWorklet Examples].\n\n## Usage\n\n```html\n\u003cscript src=\"audioworklet-polyfill.js\"\u003e\u003c/script\u003e\n\u003c!-- or: --\u003e\n\u003cscript src=\"https://unpkg.com/audioworklet-polyfill/dist/audioworklet-polyfill.js\"\u003e\u003c/script\u003e\n```\n\nOr with a bundler:\n\n```js\nimport 'audioworklet-polyfill';\n```\n\n... or with ES Modules on the web:\n\n```js\nimport('https://unpkg.com/audioworklet-polyfill/dist/audioworklet-polyfill.js');\n```\n\n## Roadmap\n\n- Improve support for custom parameters\n\n## Why are Worklets emulated on the main thread?\n\nThis polyfill is intended to be a bridging solution until AudioWorklet is implemented across all browsers. It's an improvement over ScriptProcessorNode even though that's what it uses under the hood, because code written using this polyfill is forwards-compatible: as native support improves, your application improves. This polyfill offers a simple, future-proof alternative to ScriptProcessorNode without introducing Workers or relying on shared memory.\n\n## Similar Libraries\n\n[@jariseon](https://github.com/jariseon) has implemented [a similar polyfill](https://github.com/jariseon/audioworklet-polyfill) that uses Web Workers for audio processing.\n\n## License\n\n[Apache 2.0](LICENSE)\n\n[AudioWorklet]: https://webaudio.github.io/web-audio-api/#AudioWorklet\n[AudioWorklet Examples]: https://googlechromelabs.github.io/web-audio-samples/audio-worklet/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglechromelabs%2Faudioworklet-polyfill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglechromelabs%2Faudioworklet-polyfill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglechromelabs%2Faudioworklet-polyfill/lists"}