PushManager.supportedContentEncodings is a read-only static property on PushManager that returns a frozen array of content codings for encrypting push payloads—usually "aes128gcm". Learn why your app server needs it, how to send it with a PushSubscription, the TypeError when modifying the array, and MDN’s server-post pattern—with five examples and try-it labs.
01
Kind
Static property
02
Returns
string[]
03
Typical
aes128gcm
04
Frozen
no modify
05
Context
Secure + workers
06
Status
Baseline Jan 2025
Fundamentals
Introduction
Web push messages are encrypted end-to-end between your application server and the browser. The browser generates keys; only the public key and auth secret are shared with your server via PushSubscription.
The server also needs to know which encryption coding to use. PushManager.supportedContentEncodings answers that question—it lists codings this user agent supports, such as aes128gcm from RFC 8291.
💡
Static property reminder
Read it on the PushManagerclass, not on registration.pushManager: PushManager.supportedContentEncodings.
Concept
Understanding supportedContentEncodings
A read-only static data property on PushManager returning supported push payload encodings.
Type — array of strings.
Static — PushManager.supportedContentEncodings, not on instances.
Frozen — MDN: the array may not be modified; writes throw TypeError.
Required coding — user agents must support aes128gcm.
Server use — pick a supported coding when encrypting; set Content-Encoding on push HTTP requests.
Secure context — Push API features require HTTPS (or localhost).
Workers — available in Web Workers per MDN.
Baseline 2025 — newly available since January 2025.
Foundation
📝 Syntax
JavaScript
PushManager.supportedContentEncodings
Return value
An array of strings. MDN: this usually contains just one value: "aes128gcm".
Exceptions
TypeError — thrown when attempting to set a value in the returned (frozen) array.
Compare
⚖️ supportedContentEncodings vs Related APIs
API
Meaning
PushManager.supportedContentEncodings
Static list of encryption codings the browser supports
registration.pushManager
Instance used to subscribe() / getSubscription()
pushSubscription.getKey()
p256dh / auth keys the server needs alongside encoding
PushManager.supportedContentEncodings is Baseline Newly available on MDN (since January 2025). Feature-detect on older engines. Logos use the shared browser-image-sprite.png sprite from this project.
✓ Baseline 2025
PushManager.supportedContentEncodings
Static frozen array of push payload content encodings.
BaselineNewly available 2025
Google ChromeSupported in current releases — feature-detect older
Yes
Microsoft EdgeSupported in current releases — feature-detect older
Yes
Mozilla FirefoxSupported in current releases — feature-detect older
Yes
Apple SafariSupported in current releases — feature-detect older
Yes
OperaFollow Chromium support
Yes
Internet ExplorerNot supported — no Push API
No
supportedContentEncodingsBaseline
Bottom line: Feature-detect typeof PushManager and supportedContentEncodings. Send the array to your app server with subscription keys.
Wrap Up
Conclusion
PushManager.supportedContentEncodings is a static, read-only, frozen array telling your application server which content codings it may use to encrypt push payloads—typically aes128gcm. Send it with PushSubscription endpoint and keys, and never mutate the returned array.
Read PushManager.supportedContentEncodings on the class
Send encodings to your server with subscription details
Feature-detect on browsers before January 2025
Use aes128gcm when it appears in the list
Copy the array if you need a mutable local list
❌ Don’t
Mutate the frozen returned array
Read it from registration.pushManager instances
Assume every browser exposes PushManager in non-secure contexts
Skip encoding info when configuring your push backend
Hard-code only legacy encodings without checking the array
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about supportedContentEncodings
Static push encryption codings for your server.
5
Core concepts
🔒01
Static
PushManager.*
Property
📦02
string[]
frozen
Type
🔐03
aes128gcm
RFC 8291
Coding
🚀04
server
encrypt push
Use
🎯05
Baseline
since Jan 2025
Status
❓ Frequently Asked Questions
A read-only frozen array of strings naming content encodings the user agent supports for encrypting push message payloads—usually ["aes128gcm"].
No. MDN marks it as Baseline 2025 (newly available since January 2025). It is not Deprecated, Experimental, or Non-standard.
Static. Read it on PushManager itself: PushManager.supportedContentEncodings—not on registration.pushManager.
The server must encrypt push payloads using a coding the browser supports. It also sets the Content-Encoding HTTP header on each push message.
No. MDN says the array is frozen. Attempting to set a value throws TypeError.
MDN: user agents must support the aes128gcm content coding defined in RFC 8291.
Did you know?
MDN’s example posts encoding: PushManager.supportedContentEncodings alongside endpoint and keys—the spec does not define how to transport that data, so teams often use JSON.stringify and fetch.