- docker: Dockerfiles to build open-source engines.
Play around with pre-built binaries:
docker run -it ivankra/javascript-zoopodman run -it docker.io/ivankra/javascript-zoocontainer run -it docker.io/ivankra/javascript-zoo
- engines: notes on each JavaScript engine. Structured data: engines.json.
- parsers: notes on JavaScript parsers.
- bench: benchmarking on V8's old test suite. Results.
- conformance: conformance testing. Results.
| Engine | Language | Description | Standard | Years | LOC | License |
|---|---|---|---|---|---|---|
| V8 |
C++ | JavaScript engine of Chrome, Node.js etc. | ESnext | 2008- | 1.3M | BSD-3 |
| SpiderMonkey |
C++ | JavaScript engine of Firefox. | ESnext | 1996- | 1.0M | MPL-2.0 |
| JavaScriptCore |
C++ | JavaScript engine of Safari/WebKit. | ESnext | 2001- | 770K | LGPL-2.0 |
| LibJS |
C++ | JavaScript engine of Ladybird browser and SerenityOS. | ESnext | 2020- | 73K | BSD-2 |
| Hermes |
C++ | JavaScript engine from Facebook optimized for running React Native mobile apps. | ES2023 | 2019- | 170K | MIT |
| QuickJS |
C | Lightweight embeddable JavaScript engine by Fabrice Bellard and Charlie Gordon. | ES2023 | 2019- | 74K | MIT |
| ChakraCore |
C++ | JavaScript engine of Microsoft Edge Legacy. | ES2019 | 2015-2021 | 780K | MIT |
| JerryScript |
C | Lightweight JavaScript engine for microcontrollers. | ES2022 | 2014-2024 | 109K | Apache-2.0 |
| Duktape |
C | Embeddable Javascript engine with a focus on portability and compact footprint. | ES5 | 2013- | 73K | MIT |
| QuickJS-NG |
C | Community-oriented fork of QuickJS. | ES2023 | 2023- | 74K | MIT |
| njs |
C | Lightweight embeddable JavaScript engine for use in nginx. | ES6 | 2015- | 59K | BSD-2 |
| cesanta/v7 |
C | JavaScript engine for microcontrollers. | ES5 | 2013-2017 | 25K | GPL-2.0 |
| XS |
C | Lightweight engine for microcontrollers/IoT by Kinoma/Marvell. | ESnext | 2002- | 89K | Apache/LGPL |
| PrimJS |
C++ | QuickJS-based engine from ByteDance for their cross-platform mobile apps framework Lynx. | ES2019 | 2024- | 292K | Apache-2.0 |
| MuJS |
C | Embeddable JavaScript engine from MuPDF. | ES5 | 2013- | 18K | ISC |
| 42tiny-js |
C++ | Fork of tiny-js with more features. | no | 2010-2014 | 9.2K | MIT |
| tiny-js |
C++ | Primitive interpreter for a limited subset of JavaScript. | no | 2009-2012 | 2.4K | MIT |
| iv / lv5 |
C++ | JIT-enabled ES5 engine in C++. | ES5 | 2009-2015 | 70K | BSD-2 |
| Mocha |
C++ | The very first JavaScript engine that defined early JavaScript language (JS1.0/1.1), shipped in Netscape Navigator 2.0-3.0. | JS1.1 | 1995-1996 | 14K | Proprietary |
| Escargot |
C++ | Lightweight JavaScript engine by Samsung for mid-range devices like phones/TVs. | ESnext | 2016- | 116K | LGPL-2.1 |
| QV4 / QJSEngine |
C++ | JavaScript engine of Qt's QML framework (QJSEngine). | ES2016 | 2012- | 50K | Qt/GPL/LGPL |
| Tamarin |
C++ | JavaScript engine of Adobe Flash Player 9+. | ES4 | 2006-2013 | 193K | MPL-2.0 |
| yrm006/miniscript |
C | Primitive unfinished interpreter. | no | 2018 | 2.0K | Missing |
| Flathead |
C | Buggy unfinished interpreter. | no | 2012-2017 | 7.1K | MIT |
| QuickJIT |
C | QuickJS fork that JIT-translates bytecode using TCC. | ES2019 | 2023 | 87K | MIT/LGPL-2.1+ |
| jsish |
C | Buggy unfinished interpreter. | no | 2020-2022 | 51K | MIT |
| KJS |
C++ | Original JavaScript engine of KDE's Konqueror browser. | ES5 | 1998-2023 | 42K | LGPL-2.1 |
| Epimetheus |
C++ | Netscape's experimental "JavaScript 2.0" implementation towards ES4 proposal. | ES4 | 2000-2006 | 42K | MPL/GPL/LGPL |
| SophonJS |
C | Small footprint embedded ES5 engine. | ES5 | 2015 | 23K | BSD-3 |
| malbrain |
C | JavaScript interpreter with a built-in NO-SQL database. | 2016-2020 | 12K | Missing | |
| quad-wheel |
C | Buggy unfinished interpreter. | no | 2010 | 7.9K | MIT |
| AWeb |
C | JavaScript engine of AWeb, a web browser for Amiga. | ES3 | 2002-2007 | 23K | Custom |
| stackluca/v3 |
C | Toy JavaScript interpreter. | 2016 | 4.3K | MIT | |
| Quanta |
C++ | Buggy unfinished interpreter. | no | 2025- | 42K | MPL-2.0 |
| Voyager |
C | Web browser for Amiga with own JavaScript implementation. | ES3 | 199x-2002 | 12K | GPL-3.0 |
| DscriptCPP |
C++ | DMDScript version implemented in C++. | ES3 | 2000 | 44K | BSL-1.0 |
| ixlib |
C++ | C++ utility library with a rudimentary JavaScript interpreter. | 2005 | 3.8K | LGPL-2.0 | |
| CRIScript |
C++ | Lightweight ES3 interpreter for game engines. | ES3 | 2008 | 37K | Custom |
| NGS |
C | An independent implementation of JavaScript from late 1990s. | JS1.4 | 1998-1999 | 36K | LGPL-2.0 |
| QSA |
C++ | Qt 3's JavaScript engine: Qt Script for Applications. | ES4 | 2002-2007 | GPL-2.0 | |
| Ejscript |
C | Embeddable JavaScript engine. | ES4 | 2003-2014 | 107K | GPL-2.0 |
| Carakan (archive.org) |
C++ | JavaScript engine of Opera 10.50 – 12.18. | ES5 | 2010-2013 | 125K | Proprietary |
| ChowJS (mp2.dk) |
C | QuickJS-based optimizing AOT compiler to native code for game developers. | ES2020 | 2021 | Proprietary | |
| Edbrowse (edbrowse.org) |
C | Edbrowse CLI browser had own small JavaScript engine until v2.2.10 (2006). | 2004-2006 | 2.3K | GPL | |
| JScript (microsoft.com) |
C++ | JavaScript engine of Internet Explorer 3.0 – 8.0. | ES3 | 1996-2011 | Proprietary | |
| JScript9 / Chakra | C++ | JavaScript engine of Internet Explorer 9.0 – 11.0. | ES6 | 2009-2013 | Proprietary | |
| Links (twibright.com) |
C | Links browser had a basic JavaScript engine until version 2.1pre28. | ES3 | 2002-2007 | 14K | GPL-2.0+ |
| Opera (opera.com) |
C++ | Early JavaScript engines of Opera browser: Linear A, Linear B, Futhark. | ES3 | 1997-2009 | Proprietary | |
| QtScript (qt.io) |
C++ | Qt 4.3-5.x's JavaScript engine based on JavaScriptCore. | 2007-2023 | GPL/LGPL | ||
| ScriptEase (brent‑noorda.com) |
C | Scripting engine of Nombas ScriptEase, most famous for being used by James Webb Space Telescope. | ES3 | 199x-2004 | Proprietary | |
| SEE (archive.org) |
C | Simple ECMAScript Engine. | ES3, JS1.5 | 2003-2009 | 34K | BSD-3 |
| Jint |
C# | JavaScript interpreter for .NET. | ESnext | 2013- | 53K | BSD-2 |
| Jurassic |
C# | JavaScript engine for .NET, a compiler to .NET IL. | ES5, ES6 | 2010- | 35K | MIT |
| IronJS |
C# | ES3 implementation for .NET, built on top of .NET DLR (Dynamic Language Runtime). | ES3 | 2010-2013 | 13K | Apache-2.0 |
| NiL.JS |
C# | JavaScript interpreter for .NET. | ES6 | 2013- | 42K | BSD-3 |
| Topaz |
C# | Multithreaded JavaScript engine for .NET. | ES6 | 2021- | 22K | MIT |
| Yantra |
C# | JavaScript engine for .NET. Tree walking interpreter + expression compiler to .NET IL. | ES6 | 2020- | 55K | Apache-2.0 |
| MuscalietJS |
C# | JavaScript interpreter / compiler to CIL. Abandoned prototype for a paper. | 2014 | 50K | BSD-3 | |
| JANET (archive.org) |
C# | JavaScript implementation for .NET by Steve Newman (of Writely). | JS1.4 | 2001 | GPL | |
| JScript .NET (microsoft.com) |
C# | Old Microsoft's JavaScript engine for .NET Framework 1.0-4.x from early 2000s / ES4 era. | ES4 | 2000-2010 | Proprietary | |
| Higgs |
D | JIT compiler for JavaScript targetting x86-64 platforms. | ES5 | 2012-2015 | 40K | BSD-3 |
| DMDScript |
D | ECMAScript implementation by Digital Mars written in D. | ES3 | 2002- | 18K | BSL-1.0 |
| otto |
Go | JavaScript engine in pure Go. | ES5 | 2012- | 26K | MIT |
| goja |
Go | JavaScript engine in pure Go. Fully ES5 compliant, partially ES6+. | ES2023 | 2016- | 46K | MIT |
| Hako |
Go | Embeddable WebAssembly-sandboxed PrimJS fork. | ES2019 | 2025- | 18K | Apache-2.0 |
| fastschema/qjs |
Go | JavaScript in Go with QuickJS and Wazero. | ES2023 | 2025- | 14K | MIT |
| Sobek |
Go | Grafana's fork of goja engine. | ES2023 | 2024- | 47K | MIT |
| ModerncQuickJS |
Go | QuickJS transpiled to pure Go. | ES2023 | 2024- | 167K | BSD-3/MIT |
| hjs (haskell.org) |
Haskell | Haskell JavaScript parser and interpreter. | ES3, JS1.5 | 2007 | 2.2K | BSD-3 |
| Rhino |
Java | JavaScript engine from Mozilla for the Java platform, bundled with JDK 6-7. | ES2023 | 1997- | 84K | MPL-2.0 |
| GraalJS |
Java | High-performance JavaScript engine for JVM/GraalVM. | ESnext | 2018- | 192K | GFTC/UPL-1.0 |
| Nashorn |
Java | JavaScript engine of JDK 8-14 (2014-2020), based on invokedynamic JVM opcode. | ES6 | 2011- | 89K | GPL-2.0 |
| topchetoeu |
Java | ES5 interpreter written in Java. | ES5 | 2023-2025 | 16K | MIT |
| LebJS |
Java | Unfinished JavaScript engine written in Java. | no | 2021- | 14K | Apache-2.0 |
| YAJI |
Java | Fork of FESI interpreter with ES5 support. | ES5 | 2011-2012 | 41K | LGPL-3.0 |
| FESI (archive.org) |
Java | JavaScript interpreter written in Java. | ES1 | 1998-2003 | 24K | LGPL-2.0+ |
| Porffor |
JavaScript | Optimizing AOT compiler for JavaScript/TypeScript targetting WebAssembly and native binaries. | 2023- | 28K | MIT | |
| JS-Interpreter |
JavaScript | Sandboxed ES5 interpreter in JavaScript. | ES5 | 2013- | 5.0K | Apache-2.0 |
| bramblex/jsjs |
TypeScript | Toy metacircular JavaScript interpreter. | 2018 | 662 | Missing | |
| ts2c |
TypeScript | JavaScript/TypeScript to C transpiler. | ES3 | 2016- | 9.5K | ISC |
| sablejs |
JavaScript | Closed-source bytecode-based sandboxed ES5 interpreter in JavaScript. | ES5 | 2020-2022 | Custom | |
| Narcissus |
JavaScript | Metacircular JavaScript interpreter, was used for prototyping new language features in ES6. | ES5 | 2007-2012 | 6.3K | MPL/GPL/LGPL |
| engine262 |
TypeScript | An implementation of ECMA-262 in JavaScript aiming for 100% spec compliance, fast prototyping, validating new spec versions and test262. | ESnext | 2018- | 39K | MIT |
| eval5 |
TypeScript | ES5 interpreter written in TypeScript. | ES5 | 2019- | 1.7K | MIT |
| EchoJS |
JavaScript | AOT compiler and runtime for ES6. | ES6 | 2012-2023 | 39K | MIT |
| sval |
TypeScript | Metacircular JavaScript interpreter. | ES2017 | 2018- | 2.1K | MIT |
| Tachyon |
JavaScript | Metacircular VM for JavaScript (ES5) written in JavaScript. | ES5 | 2010-2012 | 58K | BSD-3 |
| jscomp |
TypeScript | AOT compiler targetting native code via C++. | ES5 | 2015-2016 | 20K | Apache-2.0 |
| SandboxJS |
TypeScript | Interpreter for a limited subset of ES6 for sandboxing untrusted code, preventing access to non-whitelisted functions/prototypes. | ES6 | 2019- | 4.2K | MIT |
| metaes |
TypeScript | Metacircular JavaScript interpreter. | ES2017 | 2015-2022 | 2.8K | MIT |
| Tessel Colony |
JavaScript | JavaScript to Lua compiler. | ES5 | 2013-2015 | 1.8K | Apache/MIT |
| Continuum |
JavaScript | ES6 interpreter written in ES3. | ES6 | 2012-2014 | 22K | MIT |
| Reeva |
Kotlin | JavaScript interpreter for JVM written in Kotlin. | 2020- | 26K | BSD-2 | |
| Charon (bitbucket.org) |
Limbo | JavaScript engine of Inferno OS (Plan 9's successor)'s Charon browser. | 2006 | 7.3K | MIT | |
| CL-JavaScript |
Lisp | JavaScript to Common Lisp compiler. | ES3 | 2009-2012 | 3.4K | MIT |
| Ejacs |
Lisp | Toy JavaScript interpreter for Emacs, inspired by Narcissus. | ES1 | 2008 | 9.9K | GPL-2.0 |
| castl |
Lua | Self-hosting JavaScript to Lua compiler with a runtime library and eval(). | ES5 | 2014-2017 | 6.4K | LGPL-3.0+ |
| Bali |
Nim | Unfinished JavaScript engine written in Nim. | no | 2024- | 13K | BSD-3 |
| BESEN |
Pascal | JIT-enabled ES5 engine written in Object Pascal. | ES5 | 2009-2020 | 57K | LGPL-2.1 |
| DMonkey (archive.org) |
Pascal | ECMAScript engine written in Delphi. | 2005 | 55K | BSD-3 | |
| je-perl (metacpan.org) |
Perl | JavaScript engine in pure Perl. | ES3 | 2007-2014 | 11K | Artistic/GPL |
| Js2Py |
Python | JavaScript interpreter written in Python. | ES5 | 2014-2022 | 69K | MIT |
| rpython-langjs |
Python | JavaScript interpreter for PyPy. | ES3 | 2009-2013 | 7.2K | Missing |
| twostroke |
Ruby | JavaScript interpreter written in Ruby. | ES3 | 2011-2012 | 4.7K | MIT |
| Boa |
Rust | Embeddable Javascript engine written in Rust. | ESnext | 2018- | 141K | MIT/Unlicense |
| Nova |
Rust | Experimental JavaScript engine written in Rust with a cache-friendly data-oriented design. | ES6+ | 2022- | 102K | MPL-2.0 |
| Jawsm |
Rust | JavaScript to WebAssembly compiler. | 2024- | 12K | Apache-2.0 | |
| Rapidus |
Rust | JavaScript engine written in Rust, aiming at ES5. | ES5 | 2018-2021 | 11K | MIT |
| Starlight |
Rust | JavaScript engine written in Rust. | no | 2021 | 28K | MPL-2.0 |
| echosoar/jsi |
Rust | JavaScript interpreter written in Rust with QuickJS-inspired bytecode. | no | 2022- | 5.9K | MIT |
| DelSkayn/toyjs |
Rust | Toy JavaScript interpreter written in Rust. | 2020-2024 | 19K | Missing | |
| Yavashark |
Rust | JavaScript/TypeScript engine written in Rust. | 2024- | 177K | MIT | |
| Brimstone |
Rust | Javascript engine written in Rust, with nearly complete ES2025 support. | ESnext | 2022- | 74K | Missing |
| Kiesel |
Zig | JavaScript engine written in Zig. | ESnext | 2023- | 59K | MIT |
Engines that implement a rather non-standard JavaScript-like language or dialect, sufficiently different by design to interoperate with any common tooling and libraries:
| Engine | Language | Description | Years | LOC | License |
|---|---|---|---|---|---|
| Nerd / NectarJS |
C++ | Compiler for a subset of JavaScript targetting native binaries. | 2017-2022 | 12K | MIT |
| Espruino |
C | Interpreter for a subset of JavaScript for Espruino microcontrollers. | 2013- | 28K | MPL-2.0 |
| cesanta/mjs |
C | Interpreter for a subset of JavaScript for microcontrollers. | 2016- | 10K | GPL-2.0 |
| cesanta/elk |
C | Toy interpreter for microcontrollers for a small JavaScript subset. | 2019- | 1.2K | AGPL |
| tjs2 |
C++ | JavaScript-like scripting engine of KRKR2/KRKRZ game engines. | 2000-2017 | 36K | Custom |
| Microvium |
C | Tiny interpreter for microcontrollers for a small JavaScript subset. | 2020-2023 | 21K | MIT |
| ucode |
C | Interpreter for a small ES6-like language for microcontrollers from OpenWrt project. | 2020- | 40K | ISC |
| motet-a/toy |
C | Tiny self-compiling interpreter for a subset of JavaScript. | 2017 | 2.0K | MIT |
| Guile (gnu.org) |
C | Features a toy unfinished ECMAScript interpreter as of version 1.9. | 2009 | 1.7K | LGPL-3.0+ |
| JUCE | C++ | JUCE music apps framework used to have own rudimentary interpreter for a JavaScript subset. | 2013-2023 | 3.1K | ISC |
| AssemblyScript |
TypeScript | Compiler for a restricted TypeScript dialect to WebAssembly. | 2017- | 72K | Apache-2.0 |
| wasmnizer-ts |
TypeScript | Compiler for a TypeScript subset targetting WebAssembly. | 2023-2024 | 55K | Apache-2.0 |
| Jispy |
Python | Interpreter for a JavaScript-like language written in Python. | 2014-2017 | 1.2K | MPL-2.0 |
- Allen Wirfs-Brock and Brendan Eich (2020). JavaScript: the first 20 years.
- Other compendiums: wikipedia, bkil, linusg, ahaoboy, eatonphil.com, buttondown.com, guest271314, bga, JsUnit (early 2000s JavaScript landscape), thaliaarchi (regex engines)
- esvu / jsvu - installers for official releases of various engines
- test262.fyi - daily test262 runs for recent engines