# @mmmike/web-push > Zero-dependency Web Push (RFC 8291) for Workers, Deno, Bun, Node, and browsers. `@mmmike/web-push` covers the whole Web Push flow in one zero-dependency package: VAPID keys (RFC 8292), payload encryption (RFC 8291, `aes128gcm`), sending from the server, and subscribing in the browser. It needs only `fetch` and `crypto.subtle`, so it runs on Cloudflare Workers, Deno, Bun, Vercel Edge, Node 22.12+, and browsers. Install with `npm install @mmmike/web-push`. Import the server side from `@mmmike/web-push/send`, the browser side from `@mmmike/web-push/client`, and key generation from `@mmmike/web-push/vapid`. Every page is also served as Markdown, at its URL with `.md` in place of the trailing slash (the home page at `index.md`). The key pages: - [getting-started.md](https://web-push.thelazyweb.dev/getting-started.md): Quickstart: keys, service worker, subscribe, send - [generate-vapid-keys.md](https://web-push.thelazyweb.dev/generate-vapid-keys.md): Generate a VAPID key pair, and where each key goes - [tutorial.md](https://web-push.thelazyweb.dev/tutorial.md): Build a complete app on Node, Bun, Deno, or Cloudflare Workers - [compare.md](https://web-push.thelazyweb.dev/compare.md): How it compares to web-push and the edge-native alternatives - [ai-agents.md](https://web-push.thelazyweb.dev/ai-agents.md): Rules a coding agent needs to use the package correctly - [guides/runtime-setup.md](https://web-push.thelazyweb.dev/guides/runtime-setup.md): Install and load VAPID keys on each runtime - [guides/migrate-from-web-push.md](https://web-push.thelazyweb.dev/guides/migrate-from-web-push.md): Migrate from the web-push package - [guides/send-to-many.md](https://web-push.thelazyweb.dev/guides/send-to-many.md): Fan one notification out to every subscriber - [guides/handle-errors.md](https://web-push.thelazyweb.dev/guides/handle-errors.md): Retryable and permanent failures, Retry-After - [guides/collapse-notifications.md](https://web-push.thelazyweb.dev/guides/collapse-notifications.md): Replace and expire with tag, topic, and ttl - [guides/rotate-vapid-keys.md](https://web-push.thelazyweb.dev/guides/rotate-vapid-keys.md): Rotate VAPID keys without losing subscribers - [guides/secure-endpoints.md](https://web-push.thelazyweb.dev/guides/secure-endpoints.md): Keep subscription endpoints secret - [guides/authenticated-uploads.md](https://web-push.thelazyweb.dev/guides/authenticated-uploads.md): Send the subscription to a server that needs auth - [guides/extension-service-workers.md](https://web-push.thelazyweb.dev/guides/extension-service-workers.md): Subscribe from an extension's service worker - [reference.md](https://web-push.thelazyweb.dev/reference.md): API overview: every export and its entry point - [reference/send.md](https://web-push.thelazyweb.dev/reference/send.md): API: sending - [reference/client.md](https://web-push.thelazyweb.dev/reference/client.md): API: browser helpers - [reference/vapid.md](https://web-push.thelazyweb.dev/reference/vapid.md): API: VAPID keys and base64url ## Documentation Sets - [Abridged documentation](https://web-push.thelazyweb.dev/llms-small.txt): a compact version of the documentation for @mmmike/web-push, with non-essential content removed - [Complete documentation](https://web-push.thelazyweb.dev/llms-full.txt): the full documentation for @mmmike/web-push ## Notes - The complete documentation includes all content from the official documentation - The content is automatically generated from the same source as the official documentation