The first JavaScript engines were interpreters of the source code, but modern engines use just-in-time compilation to improve performance. JavaScript engines are typically developed by web browser vendors, and every major browser includes one. In a browser, the JavaScript engine runs in concert with the rendering engine via the Document Object Model and Web IDL bindings. However, the use of JavaScript engines is not limited to browsers; For example, the V8 engine is a core component of the Node.js runtime system. They are also called ECMAScript engines, after the official name of the specification. With the advent of WebAssembly, some engines can also execute this code in the same sandbox as regular JavaScript code.
BSD-3-Clause
Yes |
C++ |
JavaScript engine of Google Chrome and Chromium/Blink-based browsers, such as Microsoft Edge. Also used in Node.js and Deno runtimes, Electron framework and numerous other projects. Currently has a register-based bytecode interpreter (Ignition) and three tiers of JIT compilers (Sparkplug, Maglev and Turbofan). |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>SpiderMonkey |
Yes |
LGPL-2.0, parts under BSD |
Yes |
C++ |
JavaScript engine of Safari and WebKit-based browsers. Also used in Bun runtime. Started out in 2001 as a fork of KJS engine. In 2008 the engine was rewritten to use a direct-threaded register-based bytecode interpreter, codenamed SquirrelFish. Shortly after, SquirrelFish Extreme (Nitro in Apple's marketing terms) was released, achieving over 2x speedup over it by using polymorphic inline caching and context threading – a basic form of JIT. These components later became LLint bytecode interpreter and Baseline JIT. In 2011, the first optimizing compiler was added – DFG ("Data Flow Graph") JIT. In 2014, an advanced LLVM-based compiler was added, dubbed Fourth Tier LLVM (FTL) JIT. In 2016, FTL was rewritten to use a newly built B3 backend instead of LLVM. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>ChakraCore |
Yes |
BSD-2-Clause |
Yes |
Rust and C++ |
JavaScript engine of the SerenityOS and Ladybird browser. Initially a basic AST-walking interpreter, later upgraded to a register-based bytecode VM interpreter.. A year later most of the runtime switched to Rust and internal assembly translated into x86-64 and AArch64 when supported. Since October 2026 it runs JIT speculatively. Supports WebAssembly via LibWasm library, also using JIT. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Rhino |
via JVM |
GPL-2.0 |
No |
Java |
JavaScript engine from Oracle used in JDK 8–14. Generates more efficient JVM bytecode than Rhino, taking advantage of the new invokedynamic instruction introduced in JDK 7. Deprecated in JDK 11 (2018) due to maintenance challenges owing to fast evolution of ECMAScript standard, and removed in JDK 15 (2020). Development continued as a standalone library. Not in active development since 2021. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>GraalJS |
ESnext |
Hermes |
No |
MIT |
No |
C |
A small footprint, easily embeddable ES5 engine with some features from ES6 and later. Used by NetSurf browser. Not in active development since 2022. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>XS |
No |
ISC |
No |
C |
A lightweight ECMAScript interpreter library, designed for embedding in other software to extend them with scripting capabilities. Originally developed for MuPDF. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>QuickJS |
No |
LGPL, GPL, Qt |
No |
C++ |
JavaScript engine of Qt's QML framework, powering UI of modern Qt applications, Qt Quick, KDE Plasma. Initially appeared in Qt 5.0 (2012) as a wrapper for V8, later replaced by Qt's lightweight home-grown "V4" engine in Qt 5.2 (2013) ES7/ES2016-compliant and JIT-enabled, using macroassembler code borrowed from JavaScriptCore. Only used for QML, not for the embedded browser engine modules: QtWebKit module used JavaScriptCore, later succeeded by Blink/V8-based QtWebEngine. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Espruino |
No |
Apache-2.0 |
No |
C |
Ultra-lightweight JavaScript engine by Samsung for microcontrollers with less than 64 KB RAM. Supports ES5 and large parts of recent standards up to ES2022. Not in active development since 2024. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Escargot |
No |
MIT |
No |
Go |
JavaScript engine in pure Go, implementing ES5 but with non-compliant regex engine from Go. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Goja |
No |
MIT, Unlicense |
No |
Rust |
A JavaScript engine written in Rust. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Kiesel |
No |
MIT |
No |
TypeScript |
A JavaScript engine written in TypeScript for development and exploration, intended essentially as a reference implementation of the language. |
These engines have been discontinued and are mostly interesting for the historical perspective. Some may still be in use today for legacy purposes (especially Microsoft's old engines that continue to ship with Windows).
Mocha
No |
C++ |
The first JavaScript engine. Prototyped by Brendan Eich in a 10-day sprint in May 1995 and shipped in September 1995 in Netscape Navigator 2.0b1. Due to feature freeze in August 1995, it was incomplete relative to the envisioned language design. Version 1.1 was released with Navigator 3.0 in 1996, completing the initial development of the language and served as the basis for the first edition of ECMAScript standard in 1997. The engine had a recursive descent parser that directly emitted bytecode, a stack-based virtual machine, used reference counting instead of GC and represented primitives as discriminated unions rather than tagged pointers. Source code as part of Navigator 3.0.2 is available from Internet Archive. For Navigator 4.0, the engine was completely rewritten and renamed SpiderMonkey. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>KJS |
No |
C++ |
The engine originally used in Konqueror, and one component of KHTML. Predecessor to JavaScriptCore, which forked it in 2001 and significantly diverged since. Originally an AST-walking interpreter, upgraded to a bytecode interpreter (FrostByte) in 2008. Development largely stopped as Konqueror transitioned from KHTML first to QtWebKit (JavaScriptCore) and then QtWebEngine (V8). KDE Plasma 6 finally removed KJS/KHTML engine altogether. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>JScript |
No |
C++ |
JavaScript engine of Internet Explorer 3.0 - 8.0. One component of the MSHTML (Trident) browser engine. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>JScript .NET |
via CLR |
|
JavaScript engine for .NET Framework 1.0 - 4.x developed by Microsoft, used in ASP.NET, based on Common Language Runtime and COM Interop. Originally introduced as JScript .NET in 2000, with later versions called JScript 7.0, JScript 8.0 and, finally, JScript 10.0 in .NET Framework 4.0. However, it is unrelated to both JScript (aka JScript 1.0 - 5.8) and JScript9 engines. It supports ES3, many of the features proposed for ES4, as well as many unique .NET-related dialectisms. Dropped from .NET Core and the modern .NET platform. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Chakra (JScript9) |
Yes |
C++ |
JavaScript engine of Internet Explorer 9.0 - 11.0. It was first previewed in 2010 at MIX 10. Still ships in Windows 11 as JScript9Legacy.dll, a drop-in compatible replacement for the original JScript engine (jscript.dll). |
style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Linear A, Linear B, Futhark |
No |
C++ |
A series of early JavaScript engines of Opera browser. Unnamed engine in Opera 3 (1997–2000). Linear A in Opera 4–6 (2000–2002). Linear B in Opera 7–9.27 (2002–2007) – implemented complete ECMAScript support. Futhark in Opera 9.50-10.20 (2007–2010). |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Carakan |
Yes |
C++ |
JavaScript engine of Opera 10.50 - 12.x (2010–2013). It featured register-based bytecode and JIT. The next major release, Opera 15, switched from Presto to WebKit/Blink browser engine along with its V8 JavaScript engine. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>QtScript |
No |
C++ |
Originally developed by Trolltech, now owned by The Qt Company. First appeared in Qt 4.3, deprecated in Qt 5.5 in favor of QML's V4 and then dropped in Qt 6.5. Based on JavaScriptCore engine and featured a few Qt-specific ECMAScript extensions, such as QObject-style signal and slot connections. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Epimetheus |
No |
C++ |
Netscape's experimental "JavaScript 2.0" implementation towards ES4 proposal. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Tamarin |
Yes |
C++ |
ActionScript and ECMAScript engine used in Adobe Flash Player 9. Implemented ES4 proposal. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Narcissus |
No |
JavaScript |
JavaScript engine implemented in JavaScript (a meta-circular evaluator) by Brendan Eich, the creator of JavaScript. Used for experimentation with new language features for ES6 efforts. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Links |
No |
C |
Links browser had a basic JavaScript implementation until version 2.1pre28. Removed in 2.1pre29 for being "very buggy". |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>Voyager |
No |
C |
Voyager, another web browser for Amiga in the late 1990s – early 2000s, had its own JavaScript engine. |
| style=\"background-color: var(--background-color-neutral,#eaecf0);color: var(--color-base,#202122);font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"</span>"},{"html":""}]]}'>ScriptEase |
No |
C++ |
An old proprietary engine last updated in 2003. Only notable for its use in the James Webb Space Telescope. |
"Documentation · V8". Google
. Retrieved 3 March 2024.
1 2 Eich, Brendan (21 June 2011). "New JavaScript Engine Module Owner".
↑ Purdy, Kevin (11 June 2009). "Lifehacker Speed Tests: Safari 4, Chrome 2". Lifehacker. Archived from the original on 14 April 2021. Retrieved 8 May 2021.
↑ Shankland, Stephen (2 March 2010). "Opera 10.5 brings new JavaScript engine". CNET. CBS Interactive. Archived from the original on 3 October 2013. Retrieved 30 January 2012.
↑ "Carakan". Archived from the original on 31 May 2009. Retrieved 9 July 2009.
↑ "Maglev - V8's Fastest Optimizing JIT · V8".
1 2 "Architecture Overview". GitHub.
↑ Camden, Raymond K. (2015). Apache Cordova in Action. Manning. pp. 2–15. ISBN 9781617292392.
↑ New Microsoft Edge to replace Microsoft Edge Legacy with April's Windows 10 Update Tuesday release, Microsoft, 12 February 2021, archived from the original on 11 March 2021, retrieved 12 March 2021
1 2 "Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters" (PDF). Archived from the original (PDF) on 14 May 2025.
↑ "Changeset 94559 – WebKit".
↑ "Targeting Edge vs. Legacy Engines in JsRT APIs". Retrieved 10 September 2015.
↑ "LibJS: Rip out the AST interpreter :^) · LadybirdBrowser/ladybird@2eaa528". GitHub. Retrieved 10 July 2024.
↑ "LibJS: Add Rust implementation of lexer, parser, AST, and bytecode generator". GitHub.
↑ "LibWASM: It's JIT time". GitHub.
↑ "GitHub · Where software is built". GitHub. Retrieved 29 December 2025.
↑ "JEP 372: Remove the Nashorn JavaScript Engine".
↑ Wimmer, Christian; Würthinger, Thomas (2012). "Truffle: A self-optimizing runtime system". Proceedings of the 3rd annual conference on Systems, programming, and applications: Software for humanity. pp. 13–14. doi:10.1145/2384716.2384723. ISBN 978-1-4503-1563-0.
↑ Wen, Elliott; Zhou, Jiaxiang; Luo, Xiapu; Russello, Giovanni; Dietrich, Jens (2024). "Keep Me Updated: An Empirical Study on Embedded JavaScript Engines in Android Apps". MSR '24: Proceedings of the 21st International Conference on Mining Software Repositories. Lisbon, Portugal: ACM. pp. 361–372. doi:10.1145/3643991.3644901.
↑ "Duktape". Retrieved 21 September 2013.
1 2 3 4 5 Grunert, Kai (2020). "Overview of JavaScript Engines for Resource-Constrained Microcontrollers". 2020 5th International Conference on Smart and Sustainable Technologies (SpliTech). pp. 1–7. doi:10.23919/SpliTech49282.2020.9243749. ISBN 978-953-290-105-4.
↑ "MuJS". Retrieved 22 September 2014.
↑ Strakhov, Pavel Vladimirovich (2018). Game Programming using Qt 5 Beginner's Guide: Create amazing games with Qt 5, C++, and Qt Quick (2nd ed.). Packt Publishing Ltd. ISBN 9781788390651. Retrieved 21 September 2025.
↑ "New Features in Qt 5.2 - Qt Wiki".
↑ "JavaScript Host Environment | Qt QML | Qt 6.10.0".
↑ "Releases · Samsung/Escargot". GitHub.
↑ "Let's build a JavaScript Engine". 2019.jsconf.eu. Retrieved 23 March 2022.
↑ kiesel-js. "kiesel". Codeberg.org. Retrieved 30 September 2025.
↑ "Netscape Navigator 2.0b1 for Windows". Archived from the original on 14 June 1997.
↑ "News from the land of Konquerors - KDE Blogs". blogs.kde.org. Retrieved 29 December 2025.
↑ "Introducing JScript .NET | Microsoft Learn". msdn.microsoft.com. Retrieved 29 December 2025.
1 2 "Microsoft JScript Features - Non-ECMA (Visual Studio - JScript)". learn.microsoft.com.
↑ "JScript9Legacy scripting engine now enabled by default - Windows IT Pro Blog". techcommunity.microsoft.com. Retrieved 29 December 2025.
↑ "Release 2.1pre17". Archived from the original on 11 March 2005. Retrieved 16 September 2025.
↑ Lists: JavaScript libraries • Ajax frameworks • Server-side JavaScript