# Introduction

With a small team developing Melange, it is not a good use of resources to attempt compatibility with all browsers in all modes.

## For users and admins
  * Melange is verified on Firefox, Safari and Chrome
  * Issues with using Melange from Internet Explorer will be addressed as they arise, but are not a part of normal testing.
  * Javascript is required.

## For hosts
  * Melange is verified on Firefox and Safari.
  * Javascript is required.



_Patches to improve browser compatibility are welcome (provided that they do not reduce functionality on the other browsers!)_