SIM.JS is a general-purpose Discrete Event Simulation library fully capable of running in a Web browser. It provides constructs for creating Entities which are the active actors in a system, and encapsulates the state and logic of a system's components. Entities contend for resources, which can be Facilities (supports FIFO, LIFO with preemption and Processor Sharing service disciplines), Buffers, and Stores. Entities communicate by waiting on Events or by sending Messages. Statistics recording and analysis is provided by Data Series Statistics, Time Series Statistics, and Population Statistics. A random number library generates seeded random variates from various distributions, including uniform, exponential, normal, gamma, Pareto, and others.