What is the difference between hashHistory and browserHistory in react router?

The basic difference is that the hashHistory uses URLs like: http://myurl.com/#page/another_page/another_page

With BrowserHistory you get normal urls (no hash): http://myurl.com/page/another_page/another_page


First difference:

They are using different WEB APIs. <HashRouter> uses and reads the hash from URL, <BrowserRouter> uses window.history WEB API.

Second difference:

<HashRouter> is used for static one-page website. Ideal for browser based projects. <BrowserRouter> is used for dynamic website. Should be used when you have a server that will handle dynamic requests (knows how to respond to any possible URL).


I don't think the question was asking for differences in the format, but rather technical. Hence sharing this answer here with a technical difference: https://stackoverflow.com/a/42157741/2445694

Basically the browser don't send the url after the #

So suppose that a website restricted areas for members and admins. A user navigates to /member, and is prompted for logging in. However the server won't know if the user was trying to access /admin or /member before getting on the log in page, so after logging in the server don't know where to redirect.