Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Keep multiple browsers & devices in sync when building websites.

Subscribe to updates I use browser-sync

Statistics on browser-sync

Number of watchers on Github 9713
Number of open issues 370
Average time to close an issue 9 days
Main language JavaScript
Average time to merge a PR 7 days
Open pull requests 29+
Closed pull requests 26+
Last commit over 1 year ago
Repo Created almost 6 years ago
Repo Last Updated over 1 year ago
Size 5 MB
Organization / Authorbrowsersync
Latest Releasev2.23.6
Page Updated
Do you use browser-sync? Leave a review!
View open issues (370)
View browser-sync activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating browser-sync for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Keep multiple browsers & devices in sync when building websites.

Browsersync is developed and maintained internally at JH

Follow @Browsersync on twitter for news & updates.



Please visit for a full run-down of features


Browsersync works by injecting an asynchronous script tag (<script async>...</script>) right after the <body> tag during initial request. In order for this to work properly the <body> tag must be present. Alternatively you can provide a custom rule for the snippet using snippetOptions

Upgrading from 1.x to 2.x ?

Providing you haven't accessed any internal properties, everything will just work as there are no breaking changes to the public API. Internally however, we now use an immutable data structure for storing/retrieving options. So whereas before you could access urls like this...

browserSync({server: true}, function(err, bs) {

... you now access them in the following way:

browserSync({server: true}, function(err, bs) {
    console.log(bs.options.getIn(["urls", "local"]));

Install and trouble shooting docs

Integrations / recipes

Browsersync recipes


If you've found Browser-sync useful and would like to contribute to its continued development & support, please feel free to send a donation of any size - it would be greatly appreciated!

Support via Gittip Support via PayPal

Apache 2 Copyright (c) 2016 Shane Osbourne

browser-sync open issues Ask a question     (View All Issues)
  • almost 3 years browser sync not watching files
  • almost 3 years VVV and Gulp BrowserSync outputs a useless (?) public IP
  • almost 3 years Feature request: ability to change proxied url from web UI
  • almost 3 years Notification still shows with notify=false on Windows
  • almost 3 years Https proxying blocked by browsers Content Security Policy
  • almost 3 years tunnel server offline: self signed certificate in certificate chain, retry 1s
  • almost 3 years URL rewriting should work both ways (GET and POST)
  • almost 3 years gives an error The specified bucket does not exist
  • almost 3 years Reload works in the CLI, but not from gulp (Windows & MVC)
  • almost 3 years Uncaught TypeError: is not a function
  • almost 3 years Sync form input
  • almost 3 years Startup in "server" mode gives "UnhandledPromiseRejectionWarning" in Node 6.7.0
  • almost 3 years Is there a way to mount the application in a sub path?
  • almost 3 years BrowserSync can only be cleanly exited with Ctrl-C
  • almost 3 years Usage of single quotes in browser sync CLI have other effect than double quotes
  • almost 3 years Nodemon + Browsersync
  • almost 3 years Allow multi browsing via URL
  • almost 3 years Proxying server with https causes NET::ERR_CERT_COMMON_NAME_INVALID
  • almost 3 years Reconnecting on refresh (gulp-file-include)
  • almost 3 years Multibrowser sync not working
  • almost 3 years Connected to browser-sync and logged in my project, but when I click the menu, can't visit the pages.
  • almost 3 years Browser-sync and Rails 4.2
  • almost 3 years [Feature Request] Add remote debugging features to options
  • almost 3 years Extensions option assumes only one period in filename
  • almost 3 years Browsersync with gulp not working with apach vhost on osx
  • almost 3 years Event handlers are added even when `ghostMode: false`
  • almost 3 years Feature request: Option to set timeout for DNS resolving
  • almost 3 years HTTP Header fields with the same key are being concatenated into one field
  • almost 3 years Idea: warn on unknown option usage
  • almost 3 years Can't get 'routes' server options to kick in
browser-sync open pull requests (View All Pulls)
  • Fix/invoke reload callback
  • Use https url for socket when page is loaded over htpps
  • #970 Fix: Change SHA-1 to SHA-256 cert
  • Added ability to pass an object to localtunnel.
  • Adding ability to specify the localhost URI via config options
  • Add some extra documentation around rewriting rules
  • Updated to version 1.4.5
  • [!] make options "open" can be pass by a common url
  • Simplify script tags template
  • configurable static path
  • Support pfx passphrase
  • Add CA and Passphrase for custom HTTPS
  • Bump resp-modifier to 6.0.2
  • support opn's options for loading a browser with arguments
  • Added localtunnel error listener to prevent browsersync from crashing. Should fix issue #823.
  • #1151 Fix regex of 'rewriteLinks'
  • Verify the url arguments-value
  • Log error when opening of browser fails
  • Portscanner last correct version
  • Fix tunnel issue
  • feat: support custom local domain
  • Improve documentation for steam
  • use explicit protocol when replacing links in documents from proxies
  • Set default logPrefix to "Browsersync". Closes #1377
  • Use the native http2 module in Node 9
  • Minor fixes on documentation (proposal)
  • Listen only on host IP
  • Returned string is always true
  • Updated qs to avoid vuln complaints
browser-sync questions on Stackoverflow (View All Questions)
  • SystemJS, Browser Sync Setup
  • Gulp-sass and Browser Sync
  • Gulp.js browser-sync not reloading my browser
  • gulp browser-sync not serving json files
  • Correct Way to Setup Gulp Tasks with Browser-Sync
  • Browser-sync not working in command line version
  • Is there a browser-sync option to open Google Chrome in incognito mode?
  • Browser-sync in mobile while local development
  • Conflict with and browser-sync
  • browser-sync does not refresh page after changes with Gulp
  • Browser-sync writes in console «Reloading Browsers ...», but update is not happening. Why?
  • node.js browser-sync installation
  • SSL chain of trust with browser-sync?
  • Gulp watch task sequence and Browser Sync
  • Browser-sync gulp-nodemon odd behavior
  • Gulp browser-sync refreshing ATOM editor on file save?
  • Gulp not reloading sass with browser-sync
  • Css not reloading with browser-sync
  • Gulp browser-sync not reloading
  • Hyper-V VM and Browser-Sync times out
  • Browser-sync [proxy error] ECONNREFUSED on initial load ONLY
  • Browser-sync is not refreshing files observed by gulp-watch
  • Browser Sync: Syncs my CSS but not my HTML? (No Gulp/Grunt)
  • Browser-sync not refreshing when two files are changed simultaneously
  • Grunt Browser Sync reloading files but not injecting css
  • Browser-sync not loading ASP.NET 5 website using proxy
  • Multiple erros in jquery-2.1.0.min.js and browser-sync-client.1.7.1.js
  • How do you use web browser-sync in HTML5 game-mode
  • how to configure browser command line arguments in browser-sync init?
  • ReactJS routing/browser-sync reload on /path produces Cannot Get /Path error
browser-sync list of languages used
browser-sync latest release notes
v2.23.6 Bug fixes
  • fix(client): remove sourcemaps - fixes #1498,
  • fix(watcher): remove greedy regexes - fixes #1490
  • fix(css-injection): enable smoother CSS file for none-css files - re: #1488


  • Revert Fix the missing `type: array` in server field of startOpts - fixes #1483 (This reverts commit b24514b) 31150d62eeb3a9d176eba075045d57b5bbb2e97d
  • fix(server-middleware): allow res.end -> next() in middeware flow when no serveStatic exists - fixes #1481 620e9ae3f3a00624315c6c5d1c121cac3fd6bfde


  • Fix the missing type: array in server field of startOpts b24514b8818f3646944835288df6f9c5e241f20e
Other projects in JavaScript