{"slug": "show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded", "title": "Show HN: Atmosphere – Dolby Atmos for Netflix in Safari (Vibecoded)", "summary": "Developer Meghrathod released Atmosphere, an MIT-licensed macOS Safari extension built in one session with Claude Code that makes Netflix play Dolby Atmos audio in Safari, where the browser otherwise tops out at Dolby Digital Plus 5.1. The extension adds Dolby profiles such as ddplus-atmos-dash to Netflix's requested audio formats and works around WebKit bug 331672 by playing a near-silent 4-second Atmos test clip through a plain <audio src> element so Safari stays in Atmos mode for streaming playback via MSE. Atmosphere requires macOS with Safari 17 or later, Xcode to build, and a Netflix plan that includes Atmos; the developer warns it is unofficial, not affiliated with Netflix, Dolby or Apple, and may violate Netflix's terms of use.", "body_md": "A Safari extension for macOS that gets Netflix to play **Dolby Atmos** in Safari.\n\n**Vibecoded.** I built this in one session with Claude (Claude Code): the debugging, the extension, the icon and this README. I tested it on my own Mac and it works there, but expect rough edges.\n\nNetflix in Safari normally gets Dolby Digital Plus 5.1 at most, and macOS shows it as **Multichannel**. Atmosphere fixes two separate problems:\n\n1. **Netflix doesn't ask for Atmos in Safari.** Atmosphere adds the Dolby profiles (`ddplus-atmos-dash` , among others) to the list of audio formats Netflix's player requests. On titles that have it, Netflix then sends an Atmos (DD+ JOC) stream.\n2. **Safari doesn't switch into Atmos mode for streaming playback.** Safari plays Atmos through its streaming path (MSE) as \"Multichannel\", unless an Atmos file has already played through a plain`<audio src>` element in the same Safari session. Atmosphere plays a near-silent, 4-second Dolby Atmos test clip that way when Netflix opens, or on your first click. Safari then stays in Atmos mode. This is a WebKit bug, reported as[WebKit bug 331672](https://bugs.webkit.org/show_bug.cgi?id=331672) (details in[docs/webkit-bug.md](https://github.com/meghrathod/atmosphere/blob/main/docs/webkit-bug.md) ).\n\nAtmosphere doesn't touch DRM or decrypt anything. It only adjusts the player's request and reads the audio stream's header (codec, channels, Atmos flag) to show its status.\n\nThe toolbar popup shows:\n\n- whether Atmos was requested,\n- what's playing (Atmos, DD+ 5.1 or AAC stereo, with bitrate), including any stream changes mid-playback,\n- whether Safari is in Atmos mode.\n\nIt has toggles for each feature and an optional **Debug mode** with logs.\n\n- macOS with Safari 17 or later (built and tested on macOS 27 / Safari 27, Apple Silicon)\n- Xcode, for building\n- A Netflix plan that includes Atmos, and Atmos-capable output (AirPods with Spatial Audio, recent MacBook speakers, etc.)\n\n```\ngit clone https://github.com/meghrathod/atmosphere.git\ncd atmosphere\n./tools/fetch-prime-clip.sh   # downloads Dolby's public Atmos test clip (not redistributed here)\ncd Atmosphere\nxcodebuild -scheme Atmosphere -configuration Release -derivedDataPath build \\\n  -allowProvisioningUpdates DEVELOPMENT_TEAM=<your team ID> build\ncp -R build/Build/Products/Release/Atmosphere.app ~/Applications/\nopen ~/Applications/Atmosphere.app\n```\n\nA free Apple ID works for signing: add it in Xcode → Settings → Accounts, and use its \"Personal Team\" ID. Then turn on **Atmosphere** in Safari → Settings → Extensions and allow it on netflix.com.\n\nIf you don't want to sign it, you can load it unsigned instead: turn on Safari → Settings → Developer → *Allow unsigned extensions*, then use *Add Temporary Extension…* and pick the `netflix-atmos` folder.\n\n| Path | What it is | \n|---|---|\n| `netflix-atmos/` | The web extension: `page.js` (request and playback hooks),`content.js` (priming, state),`dec3.js` (audio header parser), popup | \n| `Atmosphere/` | Xcode wrapper app generated with `safari-web-extension-converter` | \n| `atmos-mse-test.html` | Test page: plays the Dolby clip directly, through MSE, and through MSE with video | \n| `atmos-probe.html` | Reports what Safari tells sites about Dolby audio support | \n| `tools/` | Icon generator and clip downloader | \n\n- This is unofficial and not affiliated with Netflix, Dolby or Apple. Changing what Netflix's player requests may go against Netflix's terms of use, so use it at your own risk.\n- It depends on how Netflix's web player works today and may break whenever Netflix changes it.\n- Priming keeps Safari in Atmos mode, so Control Center shows \"Dolby Atmos\" even for 5.1 content. The popup's **Playing in Atmos** step tells you what's actually playing.\n\nMIT. See [LICENSE](https://github.com/meghrathod/atmosphere/blob/main/LICENSE). The Dolby test clip isn't included and stays under Dolby's terms.", "url": "https://wpnews.pro/news/show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded", "canonical_source": "https://github.com/meghrathod/atmosphere", "published_at": "2026-11-14 20:49:41+00:00", "updated_at": "2026-11-14 21:23:22.306852+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["Atmosphere", "Netflix", "Safari", "Dolby Atmos", "Apple", "WebKit", "Claude Code", "Meghrathod"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded", "markdown": "https://wpnews.pro/news/show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded.md", "text": "https://wpnews.pro/news/show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded.txt", "jsonld": "https://wpnews.pro/news/show-hn-atmosphere-dolby-atmos-for-netflix-in-safari-vibecoded.jsonld"}}