jsdelivr

A free Open Source CDN for webmasters and developers

Subscribe to updates I use jsdelivr


Statistics on jsdelivr

Number of watchers on Github 2198
Number of open issues 8
Main language
Average time to merge a PR about 3 hours
Open pull requests 307+
Closed pull requests 84+
Last commit about 1 year ago
Repo Created over 6 years ago
Repo Last Updated 10 months ago
Size 31 KB
Homepage https://www.jsdel...
Organization / Authorjsdelivr
Contributors412
Page Updated
Do you use jsdelivr? Leave a review!
View open issues (8)
View jsdelivr activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating jsdelivr for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

jsDelivr - Open Source CDN

Note: Our backend changed. Learn how to use the new jsDelivr

jsDelivr is a free CDN for open source files. We are tightly integrated with Github and npm allowing us to automatically provide a reliable CDN service to almost every open source project out there.

We offer a stable CDN that can be used in production on popular websites with huge amounts of traffic. There are no bandwidth limits or premium features and its completely free to use by anybody.

How does it work - A simple infographic

Why jsDelivr?

Ready for production

Our public CDN is built to be used in production by even the largest websites. Everything is optimized and being constantly improved to offer all users maximum speed and uptime. Performance is monitored at all times, and we are always looking into new technologies and providers that may further improve our CDN. Downtime, timeouts or slow responses are simply unacceptable.

We do everything possible to ensure our CDN will NEVER break any websites regardless of use-case. If a file is available via our CDN we assume its used in production and make sure that file will continue to work no matter what.

This includes dynamic endpoints such as /npm/, /gh/ and /combine/. When a file is first accessed it gets permanently stored in a reliable file system. This means that even if a npm package gets deleted, or an existing file gets removed by a developer, jsDelivr will continue to serve the stored copy for ever, without breaking any websites or causing any issues.

On top of that we also do version-fallback. This means that if a file used in version 1.0.1 is no longer available in 1.0.2 and a user requests the non-existant file we will fallback to the previous 1.0.1 version and serve it instead of failing with 404 error.

Multi-CDN

Unlike the competition, jsDelivr uses multiple CDN providers, resulting in the best possible uptime and performance. We currently use MaxCDN, CloudFlare, and Fastly. In mainland China we use Quantil.

If a CDN goes down, websites that use jsDelivr won't have any issues because all traffic will be instantly redirected to remaining operational providers.

Smart Load Balancing

jsDelivr uses Cedexis with real user performance data (also known as RUM) to make its routing decisions. These metrics are gathered from hundreds of websites and are used in our load balancing algorithm to make accurate decisions for serving content.

All providers (CDNs and custom servers) are tested millions times per day by real users from all over the world. Based on this information, jsDelivr knows what provider is the fastest for each user. Each user gets a unique response based on his or her location, ISP, and the providers' uptime in real time.

This system also responds immediately to performance degradation and downtime of providers. If a CDN is under a DDoS attack, and their performance drops in some locations, in matter of seconds the algorithm will pick up the change and start serving a different provider to all affected users.

Our load-balancing code is open source as well.

Failover

We have multiple layers of failover to protect our users from any downtime.

We use 2 DNS providers at the same time. For jsDelivr to go down both of these companies would have to go down at the same time.

Both of our DNS providers monitor our load-balanced endpoint and if they detect problems they will automatically switch all traffic to a single CDN provider.

Our load-balancer monitors the uptime of all CDN providers using both RUM and synthetic data. If any of those detect downtime or performance degradation that CDN provider will be removed immediatly without any impact to our users.

Our origin consits of multiple servers in different data-centers. If a server goes down the CDNs will automatically switch to using the remaining healthy servers.

In total we have one of the most resilient systems out there, ready to be used in production by even the biggest companies.

HTTP2

All of our POPs support HTTP2 offering better performance to all users.

China

jsDelivr has partnered up with multiple Chinese companies to provide fast and reliable file delivery in China mainland and the whole Asian continent. We have servers inside China that improve the delivery speeds and latency significantly. We also have a valid ICP license issued by the Chinese government that protects us from bans and slow downloads.

jsDelivr works perfectly inside China!

Usage

jsDelivr can instantly serve any file from any npm package in the public registry.

New versions pushed to npm are instantly available via our CDN as well. No maintenance is required.

If a package, version or file gets removed from npm then jsDelivr will continue to serve that file from our permanent storage without breaking any websites using it.

npm

Load any project hosted on npm:

/npm/package@version/file

Load exact version:

/npm/jquery@3.1.0/dist/jquery.min.js

Use a version range instead of an exact version:

/npm/jquery@3/dist/jquery.min.js
/npm/jquery@3.1/dist/jquery.min.js

Load by tag: (Not recommended for production usage)

/npm/jquery@beta/dist/jquery.min.js

Omit the version completely or use latest to load the latest one: (Dev environment only)

/npm/jquery@latest/dist/jquery.min.js
/npm/jquery/dist/jquery.min.js

Add .min to any JS/CSS file to get a minified version - if one doesn't exist, we'll generate it for you. All generated files come with source maps and can be easily used during development:

/npm/github-markdown-css@2.4.1/github-markdown.min.css

Omit the file path to get the default file. This file is always minified:

/npm/jquery@3.1.0
/npm/jquery@3
/npm/jquery

Get a directory listing:

/npm/jquery@3.1.0/
/npm/jquery@3.1.0/dist/

GitHub

Load any GitHub release:

/gh/user/repo@version/file

Load exact version:

/gh/jquery/jquery@3.1.0/dist/jquery.min.js

Use a version range instead of an exact version (only works with valid semver versions):

/gh/jquery/jquery@3/dist/jquery.min.js
/gh/jquery/jquery@3.1/dist/jquery.min.js

Omit the version completely or use latest to load the latest one (only works with valid semver versions): (Dev environment only)

/gh/jquery/jquery@latest/dist/jquery.min.js
/gh/jquery/jquery/dist/jquery.min.js

Add .min to any JS/CSS file to get a minified version - if one doesn't exist, we'll generate it for you. All generated files come with source maps and can be easily used during development:

/gh/sindresorhus/github-markdown-css@v2.4.1/github-markdown.min.css

Get a directory listing:

/gh/jquery/jquery@3.1.0/
/gh/jquery/jquery@3.1.0/dist/

Combine multiple files

Our combine endpoint has the following format:

/combine/url1,url2,url3

All features that work for individual files (version ranges, minification, main modules) work here as well. All combined files come with source maps and can be easily used during development.

Examples:

/combine/gh/jquery/jquery@3.1/dist/jquery.min.js,gh/twbs/bootstrap@3.3/dist/js/bootstrap.min.js
/combine/npm/bootstrap@3.3/dist/css/bootstrap.min.css,npm/bootstrap@3.3/dist/css/bootstrap-theme.min.css

Publishing packages

All packages hosted on npm and tagged releases on GitHub are automatically available on jsDelivr. If you are a package author, here are a few tips to make using your package as easy as possible:

  • Use semver for versioning (this is enforced by npm but not by GitHub)
  • If a file listed as main in package.json isn't meant to be used in a browser, set a browser or jsdelivr field
  • If you distribute minified JS/CSS files, also include source maps for those files
  • If you don't want to provide minified files, it's fine - we'll handle that for you

### Configuring a default file in package.json

For packages hosted on npm, we support serving default files with shorter URLs. The default file can be configured by setting one of the following fields in package.json, with jsdelivr having the highest priority:

  1. jsdelivr
  2. browser
  3. main

Restrictions

  • Packages larger than 50 MB are not supported by default. We recommend removing files that are not needed from your package when possible. If you need to set a higher limit for your package, open an issue in this repo.
  • HTML files are served with Content-Type: text/plain for security reasons.

WordPress

Our WordPress endpoint works for plugins hosted in the WordPress.org plugin directory, and mirrors the WordPress.org plugins SVN repo has the following format:

/wp/project/tags/version/file

Load exact version:

/wp/wp-slimstat/tags/4.6.5/wp-slimstat.js

Load latest version: (Dev environment only)

/wp/wp-slimstat/trunk/wp-slimstat.js

Purge cache

jsDelivr has an easy to use API to purge files from the cache and force the files to update. This is useful when you release a new version and want to force the update of all version aliased users.

To avoid abuse, access to purge is given after an email request (for now).

Custom CDN Hosting

We can work together and setup a custom configuration for your project. This way, you can have full control over your files and the ability to utilize the full power of jsDelivr.

This kind of custom hosting can be suitable for:

  • Binary hosting. Windows executable files and zips.
  • Frequently updated files.
  • Projects that can't follow jsDelivr file structure.
  • Some other use that will blow all of our minds.

Simply send an email to dak@prospectone.io with a request for more information.

Current OSS projects using custom configs:

Contribute Performance Data

jsDelivr uses real user performance data (also known as RUM) to make its routing decisions. This data is gathered from hundreds of websites and is used in our load balancing algorithm to make accurate decisions based on real time performance metrics.

This is why we offer the ability to all users to help us out. This data is very important and we encourage all users to participate.

All you have to do is include the following JavaScript code in your website before </body>. This code is then executed each time a user visits your website. It uses their browser to test the latency to our CDN providers and gather performance and availability metrics.

These benchmarks are completely transparent to the user and do not impact on browsing in any way. We store the following information:

  • Performance metrics to each of our providers.
  • Availability metrics to each of our providers.
  • Browsers User-Agent
  • First three octets of the users IP address

Our JS code is executed with a 2 second delay and tests all of our providers unless interrupted. This testing does not impact on your website performance or user browsing experience.

<script async src="//radar.cedexis.com/1/11475/radar.js"></script>

Privacy Policy for Data Contribution

Privacy Policy

cdn.jsdelivr.net

jsDelivr might use information about downloaded files to build download stats per project and per file.

jsDelivr does not store any user data and does not track any users in any way.

Here are the relevant policies of our CDN providers:

The bus factor

jsdelivr open issues Ask a question     (View All Issues)
  • about 2 years dinamical-rcms library, not visited by jsdelivr bot
  • about 2 years Merge id- cd52681 not yet shown in jsDelivr CDN links
  • about 2 years non-gzipped/non-deflated responses is trimming trailing newlines.
  • over 2 years jsDelivr is not keeping file structure
  • over 2 years Make Subresource Integrity attr visible by default
  • over 2 years Unable to clear link's in collection
  • over 2 years HPKP & HSTS Support
  • over 2 years Make it scalable through reviews
  • over 2 years New versions not published after alpha has been released
  • over 2 years highlight.js 9.6.0
  • over 2 years Too many libraries not updated
  • over 2 years Future of jsDelivr
  • over 2 years Is There any problem in my request?
  • over 2 years please update open-iconic and fullpage.js?
  • over 2 years Raven also needs to also contain raven.js for sourcemap to work
  • over 2 years JSDelivr still doesn't add font-SpoqaHanSans PR
  • over 2 years fontawesome-markers not being merged.
  • over 2 years Project not updating via update.json
  • over 2 years Project not updated
  • over 2 years Feature - No mainfail
  • over 2 years Hlsjs version 0.5.x and handling beta versions
  • almost 3 years update foundation-APPS
  • almost 3 years Adding missing versions
  • almost 3 years what is needed to fix esri-leaflet autoupdates?
  • almost 3 years POPs tracker 2016-01
  • about 3 years jsdelivr almost always outdated compared to cdnjs
  • about 3 years No autoupdate at leaflet library
  • over 3 years TODO: Fix auto-updating in some projects
  • over 3 years jsDelivr Big Data - Analytics
  • over 3 years Usage statistics
jsdelivr open pull requests (View All Pulls)
  • Added floating-label repo.
  • Update project select2 to 4.0.2-rc.1
  • Update project noUiSlider to 8.3.0
  • Add d2bk/MaterialRipple
  • Add prject: similar input.
  • Added jquery.photoswipe library
  • Added the new waypoints library
  • Adding file 525icons
  • Update project quora-widget to 0.1
  • Add prettyCheckable version 2.0.0
  • Add Brass.css
  • Update project rapidoid to 5.0.12
  • Update project Less.js to v1.7.5
  • Update project mixitup to v1.5.6
  • Update project highlightjs.loader to 4.0
  • Update project highlightjs.loader to 3.0
  • Update project fuelux to 3.14.1
  • Adding Jquery Cookie and Jquery Lang libraries
  • Update project angular.moment to 1.0.0-beta.4
  • Update project senna to v1.0.0-alpha.3
  • Add jquery.address
  • Create jquery.loadTemplate.min.js
  • Create jquery.loadTemplate.js
  • Adding web fonts
  • Add Project
  • Adding sinon.js
  • Add linkify.js to jsdelivr
  • wdt-emoji-bundle repo
  • add redux-toastr
  • CONTRIB update Web Interface
  • Create info.ini
  • jquery.timeliny
  • add Quickousel to jsDeliv
  • add library request
  • Create info.ini
  • Create info.ini
  • Create update.json
  • Create info.ini
  • Update project particle-api-js to v5.1.0
  • register egjs
  • Update project senna to v1.0.0-alpha.6
  • Update project waypoints to latest
  • Update project waypoints to 3.1.1
  • Update project highcharts to highstock-v2.1.10
  • Update project highcharts to highstock-v1.3.10
  • Update project highcharts to highmaps-v2.1.3
  • Update project highcharts to highmaps-v1.1.10
  • Update project highcharts to v3.0.10
  • Update project highcharts to v2.3.5
  • Update project fuelux to 3.14.2
  • Updated highcharts info
  • Update project threejs to r41/ROME
  • Update project threejs to r74
  • Update project threejs to r73
  • Update project threejs to r72
  • Update project threejs to r71
  • Update project threejs to r70
  • Update project threejs to r69
  • Update project threejs to r68
  • Update project threejs to r66
  • Update project amcharts to 3.20.1
  • Update project flat-ui to 2.3.0
  • Update project better-dom to v3.0.0-beta.3
  • Update project covjson-reader to 0.9.1
  • Gridzy Prod
  • UTPlay Prod
  • Addition of a new project, typescript-collections
  • Add material-design-icons
  • Webdevjeffus patch 1
  • Patch 1
  • Create outdated-browser update files
  • Update project amcharts to 3.20.0
  • Update project bootstrap.material-design to v4.0.1
  • Update project amcharts to 3.19.5
  • Update project oboejs to v1.15.2
  • Addittion of a new project, Calendario
  • Update project backbone.marionette to v3.0.0-pre.2
  • Update project metismenu to v2.5.1
  • eternicode bootstrap-datepicker 1.6.0 version
  • Update project fuelux to 3.15.3
  • Update project fuelux to 3.15.2
  • Update project video.js to 5.10.1
  • Add monet.js
  • Adding configuration for chat-template
  • Update project leaflet.locatecontrol to 0.51.0
  • Update project angular.material to v1.1.0-rc4-master-f0e6de9
  • PR to add jQueryRotate Library
  • Create info.ini
  • Codemirro in Bower
  • Update project noUiSlider to 8.5.1
  • Update info.ini for noUiSlider
  • Update project angular-chart.js to 1.0.0-alpha6
  • Update project angular-chart.js to 1.0.0-alpha5
  • add Kii cloud.
  • Jquery in view fork
  • Update project noUiSlider to 8.4.0
  • Update project angular.material to v1.1.0-rc4
  • Update project angular-chart.js to 1.0.0-alpha4
  • Update project dustjs to v1.2.6
  • Update project raphael to v2.2.0
  • pocket.gl
  • Add Brass
  • Update project video.js to 5.10.2
  • Update project backbone.marionette to v2.4.7
  • Update project video.js to 5.10.4
  • Update project TimelineJS3 to 3.3.16
  • Update project materialize-css to 0.97.6
  • Add sweetalert2.js to sweetalert2 project
  • Add vuejs paginator lib
  • Update project backbone.marionette to v2.4.6
  • Update project fuelux to 3.15.4
  • add a-tarasyuk/tag
  • Added mark.js
  • Update project wavesurfer.js to 1.1.3
  • hopefully final commit
  • Update update.json
  • Patch 1
  • Update project backbone.marionette to v2.5.6
  • Add node-uuid
  • Hi, A request for dominic to be available on jsdelivr
  • Update project blaze to 2.4.1
  • new config for v4.0.0
  • Update project embed.js to v4.1.1
  • Create update.json for c3js
  • Update project wavesurfer.js to 1.1.5
  • Update project isotope to v3.0.1
  • Added Latest LiveFyre JS Library
  • Update project angular.material to v1.1.0-rc.5-master-ea62bc2
  • Update project video.js to 5.10.5
  • Add angular-inview
  • Updates for the 0 version
  • Update project picnicss to 6.1.0
  • Update project picnicss to 5.2.0
  • Update project handsontable to 0.25.1
  • add my repo
  • Update project bootswatch to v3.3.6+2
  • Update project jclic.js to v0.1.26
  • update file
  • adding jquery autoNumeric plugin
  • Update project backbone.marionette to v3.0.0-pre.4
  • Add select2-bootstrap-theme
  • Update Materialize with 0.97.x versions
  • Updated jquery.hosted-payments to 3.3.30
  • jquery.payment - Add all files from project to include minified version as well
  • Adding twig
  • Update project jquery.selectric to 1.10.0
  • Adding animate css
  • Leaflet Esri WebMap plugin
  • jQuery LoadingOverlay plugin
  • Update project tubular to 1.0.0-rc.4
  • Update project video.js to 5.10.7
  • Update project ember to 2.7.0-beta.2
  • Update update.json
  • Add requarks repo
  • Update candy grid system v1.1.0
  • Merge ng-device-detector
  • Merge videogular-youtube
  • Merge videogular-overlay-play
  • Merge videogular-buffering
  • Merge videogular-controls
  • merge videogular
  • Update project riot to v3.0.0-alpha.5
  • Update project video.js to 5.10.6
  • Update project najaxjs to v1.1.0
  • Update project angular-chart.js to 1.0.0-alpha8
  • Update project angular-chart.js to 1.0.0-alpha7
  • Update project backbone.marionette to v3.0.0-pre.5
  • Update project botify-sdk to 1.0.0-beta5
  • Update project bootstrap.material-design to v4.0.2
  • Update project font-nanumsquare to 1.0.0
  • Update project card to v2.0.3
  • Sync patch
  • Update project vue-multiselect to 1.0.1
  • Update project bootswatch to v3.3.7
  • Add chassis-mixins
  • Add files via upload
  • Patch 1
  • Update project bootstrap to v4.0.0-alpha.3
  • Patch 1
  • Add Rakam analytics
  • Update project video.js to 5.11.0
  • Update project font-SpoqaHanSans to 1.0.2
  • Add bytes.js
  • Update project scroll-entrance to 1.0.0
  • Update project angular-motion to v0.4.4
  • Update project font-SpoqaHanSans to 1.0.1
  • Patch 1 - Netflux
  • Update project free-jqgrid to v5.1.1
  • Pull loadcss from bower
  • pull nouislider from bower
  • Added the Jaxon library repo
  • Update project angular.material to v1.1.0-rc.5-master-ff10018
  • Create info.ini
  • Update project raphael to v2.2.1
  • Add gmaps.js v0.4.24 (gmaps.min.js.map)
  • Update update.json for gmaps.js
  • Update project i18next to 1.11.5
  • Update project jquery.contextify to 1.0.8
  • Remove auto-update for project "headstart-css"
  • Update project lazysizes to 2.0.4
  • Updates to v3.6.9!
  • Update project font-SpoqaHanSans to 1.0.4
  • Update project riot to v2.6.3
  • Update project headstart-css to v0.4.0
  • pull
  • Patch 1
  • Update project font-SpoqaHanSans to 1.0.3
  • Update project blaze to 3.0.0
  • Update project blaze to 3.0.0-beta.4
  • Update project flag-icon-css to 2.6.0
  • Update project video.js to 5.13.0
  • Update project threejs to r49
  • Update project threejs to r48
  • Update project threejs to r47
  • Update project threejs to r46
  • Update project threejs to r45
  • Update project threejs to r44
  • Update project threejs to r43
  • Update project threejs to r42
  • Update project threejs to r41/ROME
  • Update project threejs to r40
  • Update project threejs to r39
  • Update project threejs to r38
  • Update project threejs to r37
  • Update project threejs to r36
  • Update project threejs to r35
  • Add rxqap library to jsdelivr
  • Update project blaze to 3.1.0
  • Update project riot to v2.6.4
  • Update project angular.ui-router to 1.0.0-beta.3
  • Update project backbone.marionette to v3.1.0
  • Update project amcharts to 3.20.16
  • Update project raphael to v2.2.7
  • Update project video.js to 5.13.1
  • Update project riot to v3.0.0-alpha.13
  • Add selectshare assets to jsdelivr
  • Update project highlight.js to 9.8.0
  • Update project amcharts to 3.20.17
  • Update project mdbootstrap to 4.2.0
  • Update project Buttons.css to v1.1.0
  • Add ndgevnt
  • Update project leaflet to v1.0.2
  • WIP | Fix is.js not being updated
  • Update project countdown to 2.1.0
  • update - corrected mistake for wsm.js
  • Fix update.json
  • Update project video.js to 5.13.2
  • Added index.pack.js to egraphql-fetch
  • Add semantic-ui-calendar library
  • Update project angular.ui-router to 1.0.0-rc.1
  • Add Phaser CE library
  • Update project bootstrap to v4.0.0-alpha.6
  • Add project Opensug via PR.
  • Update project meshki to 1.4.2
  • Update project video.js to 5.15.1
  • Update project video.js to 5.15.0
  • Update project semantic-ui to 2.2.7
  • Update project jquery-mosaic to 0.131
  • Update project jquery-mosaic to 0.13
  • Update project video.js to 5.14.1
  • Update project video.js to 5.14.0
  • Update project video.js to 5.13.2
  • Update project threejs to r42
  • Update project threejs to r40
  • Update project threejs to r39
  • Update project threejs to r38
  • Update project threejs to r37
  • Update project threejs to r36
  • Update project threejs to r35
  • Update project threejs to r34
  • Update project threejs to r33
  • Update project threejs to r32
  • Update project threejs to r31
  • Update project threejs to r30
  • Update project threejs to r29
  • Update project threejs to r28
  • Update project threejs to r25
  • Update project musubii to 2.0.0
  • Create new datepicker plugin
  • Adding project moonball-custom
  • Create info.ini
  • Update project backbone.marionette to v3.3.1
  • Update project backbone.marionette to v3.3.0
  • Update.json modified
  • Create info.ini
  • Update project fuse.js to 3.0.0
  • Create info.ini
  • Update project fuse.js to 2.7.3
  • Update project Less.js to v1.7.5
  • Update project fontawesome to 2.0.0
  • Update project dustjs to v1.2.6
  • Update project countdown to Release_1_6_3
  • Update project countdown to Release_1_6_2
  • Update project countdown to Release_1_6_1
  • Update project countdown to Release_1_6_0
  • Update project countdown to Release_1_5_11
  • Update project countdown to Release_1_5_10
  • Update project countdown to Release_1_5_8
  • Update project countdown to Release_1_5_6
  • Update project countdown to Release_1_5_5
  • Update project countdown to Release_1_5_4
  • Update project countdown to Release_1_5_3
  • Update project countdown to Release_1_5_2
  • Update project countdown to Release_1_5_1
  • Update project countdown to Release_1_5_0
  • Update project countdown to Release_1_4_3
  • Update project countdown to Release_1_4_2
jsdelivr questions on Stackoverflow (View All Questions)
  • Fixing jsDelivr "multiple files" approach that breaks CSS' image URI's
  • Bundling vs using jsDelivr (CDN)?
jsdelivr list of languages used
More projects by jsdelivr View all
Other projects in