<BrowserRouter> uses the HTML5 history API to keep your UI in sync with the URL, while <HashRouter> uses the hash portion of the URL (window.location.hash) to keep the UI in sync.