
esm.sh
esm.sh is a free, open-source service for importing JavaScript modules through HTTP URLs, helping developers use npm and other packages in browser apps or De…
What esm.sh is
esm.sh is a free, open-source service for importing JavaScript modules through HTTP URLs, helping developers use npm and other packages in browser apps or Deno without a build step. It serves packages from npm, JSR, GitHub and pkg.pr.new, and can transform TypeScript, TSX, Vue and Svelte files for direct browser imports. Modules are bundled by default; URL parameters can adjust bundling, request raw content, select exports, set dependency versions or substitute packages. Export selection does not work with CommonJS modules. The service also supports CSS imports under the condition that a package imports CSS directly from JavaScript, and can load modules as web workers. Targets include es2015 through es2024, esnext, Deno, denonext and Node. A lightweight TSX script can compile and cache TSX written in HTML. The public CDN supports modern browsers with ES6 modules, but not private npm packages; the project directs those users to self-hosting. It provides a Docker image and deployment instructions.
Good
- Free and open source under the MIT License
- Supports npm, JSR, GitHub and pkg.pr.new packages
- Transforms TypeScript, TSX, Vue and Svelte files
- Offers dependency version and package alias controls
Watch out
- Public CDN does not support private npm packages
- Export selection does not work with CommonJS modules
- CSS importing requires direct JavaScript CSS imports
Who it suits
esm.sh suits developers who want to import packages directly into browser projects or Deno without setting up build tools. Teams needing private npm packages can consider its self-hosted option.
Verdict
esm.sh offers a broad set of URL-based import and transformation controls for browser and Deno development. Its public CDN has clear limits around private packages and CommonJS export selection.
Plans and prices
From esm.sh's own pricing page, checked 10 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| esm.sh public CDN | Free | Pricing not stated on the opened page |
The facts
Each one read from esm.sh's own pages, with the date it was checked.
Where it runs
- Browser features
- esm.sh supports CSS imports and loading modules as web workers; CSS importing only works when the package imports CSS from JavaScript directly.checked 10 Oct 2026
What it does
- Bundling options
- esm.sh bundles modules by default and offers `?standalone`, `?bundle=false`, and `?raw` options to change bundling or transformation behavior.checked 10 Oct 2026
- Compatibility
- The FAQ says esm.sh supports modern browsers that support ES6 modules, including Deno.checked 10 Oct 2026
- Dependency controls
- Import URLs can specify dependency versions with `?deps=` and substitute packages with `?alias=`.checked 10 Oct 2026
- Edge compute
- nonechecked 22 Sep 2026
- Edge locations
- 330checked 22 Sep 2026
- On-the-fly transforms
- It can transform .ts, .tsx, .vue, and .svelte files for direct browser imports without build steps.checked 10 Oct 2026
- Private packages
- The public CDN does not support private npm packages; the FAQ directs users to self-host esm.sh for that use case.checked 10 Oct 2026
- Purpose
- esm.sh lets developers import JavaScript modules from HTTP URLs to build modern web apps using npm packages in browsers or Deno without build tools.checked 10 Oct 2026
- Runtime targets
- Build targets include es2015 through es2024, esnext, Deno, denonext, and Node.checked 10 Oct 2026
- Security and integrity
- The FAQ says an integrity metadata map CLI is in progress and notes that Deno 1.18+ can check hashes using a generated `deno.lock` file.checked 10 Oct 2026
- Self-hosting
- The project provides a Docker image and deployment instructions; its hosting guide recommends Linux with systemd, at least four CPU cores, 8GB RAM, and 100GB disk.checked 10 Oct 2026
- Support and license
- The site directs bug reports to GitHub issues and identifies esm.sh as an open source project under the MIT License, maintained by @ije.checked 10 Oct 2026
- Supported sources
- The CDN supports packages from npm, JSR, GitHub, and pkg.pr.new.checked 10 Oct 2026
- Tree shaking
- The `?exports=` option can select specific module exports, but this feature does not work with CommonJS modules.checked 10 Oct 2026
- TSX support
- The lightweight 1KB `esm.sh/tsx` script lets developers write TSX directly in HTML, with source compiled and cached at the edge.checked 10 Oct 2026
Alternatives to esm.sh
- 1
Azion Content Delivery
Free planWebAPILinuxmacOS7.8From $25 a month - 2
Uploadcare
Free planAndroidiOSWebAPI7.6From $66 a month - 3

Cloudflare CDN
Free planWebAPI7.4From $20 a month - 4

ImageKit
Free planAndroidiOSAPI7.4From $9 a month - 5
Cloudinary
Free planWebAPIExtension7.2Free plan - 6

Gcore CDN
Free planWeb7.1€0.01 usage-based
