kripken/ammo.js

Direct port of the Bullet physics engine to JavaScript using Emscripten

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 57 minutes ago
Added to GitGenius on September 15th, 2026
Created on May 28th, 2011
Open Issues & Pull Requests: 176 (+0)
GitHub issues: Enabled
Number of forks: 580
Total Stargazers: 4,571 (+0)
Total Subscribers: 112 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 86.6 days
Mean response time: 808.5 days
90th percentile: 1978.8 days
Tracked items: 41

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 37
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 2,260 days
Stale 30+ days: 37
Stale 90+ days: 37

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.

Detailed Description

ammo.js is a physics engine library that brings the Bullet physics simulation engine to JavaScript through automatic compilation using Emscripten.

The tool solves the problem of needing a full-featured physics engine in web applications without having to rewrite physics simulation logic from scratch. It works by directly translating the Bullet physics engine source code from C++ to JavaScript automatically, preserving the original functionality without manual rewriting. This approach ensures that the JavaScript version maintains feature parity with the native Bullet engine, supporting rigid body dynamics, soft body simulation, vehicle physics, and collision detection.

Developers should choose ammo.js if they need physics simulation in a JavaScript-based web application and want access to a mature, well-tested physics engine. The tool suits projects requiring complex physics interactions such as interactive 3D scenes, games, or physics-based simulations in the browser. The project provides prebuilt versions ready to use immediately, though developers can also build custom versions themselves. If you are writing C++ code intended for the web, you may not need ammo.js at all—you can instead use Bullet directly through emscripten-ports with the appropriate compiler flag. The JavaScript API is autogenerated from Bullet's source, so all physics objects are accessed through the Ammo namespace, and member variables are exposed through getter and setter functions rather than direct property access.

The project maintains a stable prebuilt distribution in its builds directory and provides multiple working examples demonstrating rigid body physics, soft body rope and cloth simulation, terrain heightmaps, and vehicle dynamics. Development discussion occurs in the project's designated IRC channel.