Due to the COVID-19 pandemic, I’ve had to do a lot of searching to find conceptual physics simulations to replace in-person labs. My requirements for the simulations are that they use HTML5 so that students can use a Windows, Mac, Linux machine or a cellphone/tablet to carry out their activities.

I highly recommend PHET, but they do not have all of their simulations in HTML5 format. Maybe someday!

Until then, I learned how to do some basic JavaScript and have created some basic physics simulations. I offer these for you to use if they are helpful. I appreciate any feedback you may have. If you link to these, please credit me.

Atwood Machine

This is a simple Atwood machine where a cart is accelerated by a hanging mass connected via a massless pulley. You can add and remove masses from the cart, as well as add and remove masses from the pulley hanger. Friction can be added (qualitatively) to the system if desired. Position, velocity, and acceleration graphs are shown.


Balance the meter stick by canceling out torques on the left-hand side with torques on the right-hand side. I created this simulation because the PhET simulation Balancing Act does not allow for the fulcrum to be placed off of the CG of the balance apparatus. This simulation allows you to move the fulcrum off-CG.


This simulation introduces students to classification of objects (in this case by color). There are 12 cans to choose from. Each can has 60 colored cubes (some are red, some are green, and some are blue) with different percentages of each color of cube. Each time you shake the can, 10 of the objects are randomly selected and displayed on the screen.

Displacement Vectors

This simulation presents the student with four different displacement vectors. Have students add up the displacement vectors and determine the overall displacement. (They can do this by hand or use the PhET simulation Vector Addition.) Then, shake up the vectors and get them in a different order. Add them again and ask the students if the order in which you add vectors matters.

Update (November 2022), this has been updated to display the text in HTML. This also will generate different numbers depending on the month and year. This makes the numbers slightly different every semester to make this more difficult to copy answers from websites students use to cheat.

Einstein Solid

This simulation contains 8 quanta of energy that can be shared between two interacting Einstein solids, and which start bunched up in highly ordered positions. Rolling the dice generates 8 random numbers between 1-6, the result of which dictates the movement of each energy quantum.

Entropy Coins

Use this array of 20 “coins” to demonstrate the time-evolution of entropy in a system that is initially highly ordered. Use it in conjunction with’s random integer generator.

Force Tables

This is a simulation where forces (of variable magnitude) are placed at various angles around a table. This simulates a force table, where hanging masses can be placed at various angles around the table, and a center pin removed to check for static equilibrium. There is always a 100g mass at 0° position.

Update (November 2022), this now requires students to enter their name to prevent screenshots from going up on Chegg and other cheating websites.


This is a simulation of half-life using 100 n-sided “dice” that decay if they land on a 1 when rolled. The number of sides of the dice can be changed. The number of decayed and non-decayed dice are represented visually and also in a table.

Moving Cart

The velocity of a cart can be changed between positive and negative values. The position vs. time and velocity vs. time graphs can be analyzed as the cart moves.

Resistor Generator

This website generates a random 4-band resistor.

Rules of the Game

Have students use methods of scientific observation to try to determine the rules of the game.

Update (November 2022), this game is now completely automated using JavaScript. This code is available on GitHub.

Simple Machines: Pulleys

These are pulley systems that use anywhere from 1 to 4 pulleys to raise a 500 g mass. Students can read the ruler scale in the background to determine how high the load was raised and how far the spring scale moved. There is a readout for the spring scale to see how much force was exerted.

Special Thanks

Thanks to my colleagues for giving me ideas and feedback about my simulations. Especially to Professor Jim Lungu who has provided me with help on my JavaScript, and has helped create some of the graphics in these simulations; as well as Professor Dave Fazzini who wrote the lab manual that we use in our conceptual physics class and which these activities are based off.

I also would like to thank Daniel V. Schroeder for writing an amazing tutorial that I’ve used to create these simulations.