Does Internet Explorer support pushState and replaceState?

Probably the best site for browser compatibility information is CanIUse. Here's the section on history.

Summary - IE9: no, IE10: yes (as of platform preview 3)

The first Release Candidate of IE9 (released 10th Feb 2011) does not support history.pushState or history.replaceState. Generally no new features are added after a product gets to RC stage so it is very unlikely that the final IE9 will support these methods.

Microsoft have a good overview for developers of the features IE9 does have.

Update: Internet Explorer 9 was launched (on 14th March 2011) and definitely does not support history.pushState() or history.replaceState().

Update 2: The current platform preview of IE10 still does not support pushState / replaceState.

Update 3: Platform Preview 3 of IE10 supports the history API! Details


IE9 doesn't support it.

You can however use a work around using a Polyfill to get the functionality - History.js https://github.com/browserstate/history.js.

Modernizr do a good job listing HTML 5 Polyfills here https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills.

The caveat is that it will add a query string to your URL in browsers that only support HTML 4 features.