Skip to main content

JavaScript VM for Protecting Your JS Code

Thin-VM transforms your JavaScript into bytecode that runs inside an embedded virtual machine. Your license checks, bot and fraud detection, and proprietary algorithms become a protected runtime that stands up to reverse engineering, static analysis, debuggers, and automated tooling. Every release is built differently.

Protection Beyond Ordinary Obfuscation

Ordinary obfuscation renames variables, mangles strings, and wraps everything in layers of functions that call other functions, but the result is still readable JavaScript a patient attacker can trace. Thin-VM goes further: it transforms your code into bytecode that only its own embedded virtual machine can run, hardened against reverse engineering, debugging, automation, and AI-assisted analysis.

Ships as Bytecode

Your JavaScript compiles to bytecode that only Thin-VM's embedded virtual machine can run. Your logic never appears as readable JavaScript in DevTools or static-analysis tools, so an attacker has to reverse-engineer the whole VM before they can even start on it.

Modern JavaScript, Through ES2022

Closures, classes, async/await, exceptions, regex, iterators, prototypes. The modern language compiles cleanly to bytecode and passes 99% of test262, the conformance suite the major engines run. Your team keeps writing the JavaScript they already know.

Built-In Runtime Defenses

Optional defense layers let a protected bundle detect a hostile environment and respond by degrading or serving a decoy instead of your real logic. It can spot an attached debugger or open DevTools, a tampered or hooked runtime, an automation driver, or a headless browser. Every layer is opt-in per build.

Tuned for Production

The interpreter is built for low overhead with no warm-up tax. Protected code runs fast enough for real-time paths like license gates, anti-fraud checks, and paywall logic.

Anti-LLM by Design

Every build is structurally unique, so what an attacker reverse-engineers from one copy doesn't carry to the next. Automated and LLM-driven tools depend on reusing a single solved example across your whole distribution, and that shortcut is gone. Mint a fresh variant per download.

Ship as a Single File

Output is one self-contained JavaScript bundle with the runtime and protected payload in a single file. Your customers get no extra dependencies and no build step.

Before and After

Your readable JavaScript on the left, the protected bundle Thin-VM produces on the right. Both load lazily, so they never slow the page down. Hit Run VM to execute the protected bundle right here in your browser.

before.js original code
Loading…
after.js Thin-VM bundle
Loading…

Generated with the L3 preset, not maximum protection, for demonstration only.

Built for Code Worth Protecting

Your backend code stays on your servers, out of reach. The exposure is the JavaScript you ship to the browser, where anyone can open it. Thin-VM is made for exactly that: a sealed layer around the logic that matters, not a wrapper around your whole app.

License & Paywall Gates

Verify subscriptions, enforce premium-only features, and validate trial expiration in the JavaScript you ship, without handing the validation rules to everyone who runs your app.

Anti-Fraud & Bot Detection

Ship browser-fingerprinting collectors and behavioral checks inside a sealed runtime, the client-side layer that feeds your risk scoring. Fingerprinting runs in the open, where attackers read it to spoof signals and forge trusted devices, so keeping those rules unreadable means they can't be fuzzed or systematically bypassed.

Trade-Secret Algorithms

The proprietary logic that runs in the browser to do its job: pricing and quote calculators, media and signal-processing pipelines, procedural generation, custom visualization engines. Keep the JavaScript IP that competes for you out of your competitors' static-analysis tools.

Web Extensions & HTML5 Games

Browser extensions and in-browser games run inside user environments by design. Thin-VM lets you ship them without exposing the anti-cheat, validation, or proprietary game logic behind them.

iGaming, Gambling, Bookmakers

The odds engine, RNG, and payouts stay on your servers, where they belong. What ships to the player is bot, cheat, and collusion detection, device fingerprinting and behavioral signals for risk scoring, geolocation-compliance collectors, and HTML5 game clients. That code runs on the player's machine, where bonus hunters, bot farms, and cheaters pick it apart. Thin-VM keeps it unreadable, so it can't be studied, spoofed, or bypassed.

From Source to Protected Bundle

Drop in your JavaScript. Get back a single self-executing file that even you would struggle to read. Four steps, fully automated.

Your Code
JavaScript source in
Thin-VM Compiler
JS to bytecode compilation
Protected Bundle
Multi-layer protection applied
Embedded Runtime
Fast execution in the browser or Node

Where Thin-VM Is Headed

Where Thin-VM has been, what just shipped, and what's next.

  1. Shipped

    Project kickoff & core architecture

    Thin-VM begins. The bytecode format, the embedded interpreter, and the compile-to-VM pipeline are built for protection, not only execution.

  2. Shipped

    ES5 baseline conformance

    Native ES5 execution is validated against test262, the conformance suite the major JavaScript engines run. That locks in the baseline the rest of the language builds on.

  3. Shipped

    ES2022 language coverage

    Language support extends through ES2022, now passing 99% of test262, so protected code behaves like real JavaScript.

  4. Shipped

    Analysis-resistance protection layers

    A suite of protection layers ships that raises the cost of reverse-engineering the VM itself, making static and dynamic analysis of a protected bundle much more expensive.

  5. Building now

    Anti-LLM analysis hardening

    Defenses aimed at automated, LLM-driven reverse engineering, denying AI tooling the shortcuts it relies on to analyze protected code at scale.

  6. Planned

    Full ES2026 language coverage

    Extending language support to the latest ECMAScript edition, so the newest JavaScript your team writes compiles to the VM without compromise.

  7. Planned

    Hardened sandbox & isolation

    A stronger sandbox with tighter isolation for the third-party plugins, extensions, and user scripts that run inside the apps you ship.

  8. Planned

    Bundle management for the VM

    Tooling to manage, version, and orchestrate protected bundles across builds and deployments, so protection scales without manual bookkeeping.

Before You Integrate

Answers to the questions teams ask most before integrating.

What kind of code should I protect with Thin-VM?

Anything you'd rather attackers couldn't read by pressing F12: license checks, bot and fraud detection, premium features behind a paywall, proprietary algorithms, anti-cheat logic. Use it on the code worth hiding, not your whole app.

How is this different from other code-protection tools?

Ordinary obfuscation renames variables, mangles strings, and wraps everything in layers of functions that call other functions, but the result is still readable JavaScript running in DevTools, and a patient attacker traces through it.

Thin-VM works differently: instead of disguising your JavaScript, it transforms it into bytecode that resists reverse engineering and static analysis at a structural level. And every release is built differently from the last.

Can't attackers just reverse-engineer the output?

Given enough time, anything can be broken. The goal isn't perfect protection. It's making analysis expensive enough that most attackers move on to easier targets. Because every Thin-VM release looks different, what someone learns from one build doesn't shortcut the next.

Does Thin-VM protect against automated and AI/LLM-based reverse engineering?

Yes, that's a core design goal. Every Thin-VM build is structurally unique, so reverse-engineering one copy doesn't carry over to the next. Automated pipelines and LLM-driven analysis depend on reusing a single solved example across your whole distribution, and that reuse stops working.

Optional hardening can also detect and respond to automation drivers, headless browsers, and runtime instrumentation while your code runs.

Can a protected bundle detect debuggers, tampering, and runtime hooks?

Yes, through optional defense layers. A protected bundle can detect a hostile environment (an attached step-debugger or open DevTools, a tampered or hooked runtime, an automation driver) and respond by degrading or running a decoy instead of your real logic.

Every layer is opt-in per build, so you choose the defenses that match your deployment.

Will my modern JavaScript actually work?

Yes. Modern JavaScript just works: closures, classes, exceptions, regex, and the rest of the syntax your team already writes. The compiler passes 99% of test262, the conformance suite the major JavaScript engines run, so your code behaves the way real JavaScript does.

The VM targets ES2022 natively. Anything newer is transpiled down to ES2022 with Babel before it compiles, so the latest syntax still works while the VM stays on one stable target.

Are there any limitations I should know about?

One that matters: the protected bundle ships without the compiler, so it cannot turn new source into bytecode while it runs. eval() and new Function() work only when the source is a string literal, which is compiled at build time.

Works, the source is a literal:

eval('1 + 1');
new Function('a', 'b', 'return a + b');

Does not work, the source is a variable built at runtime:

const code = '1 + 1';
eval(code);

const body = 'return a + b';
new Function('a', 'b', body);

Everything else in the modern language runs as expected.

What's the performance cost?

It depends on how many protection layers you enable and the level you target. Plan for roughly 1.5x to 6x the runtime of plain JavaScript: light protection stays close to native, and the full anti-reverse-engineering and anti-LLM stack sits at the top of that range. Production mode strips debug output for smaller bundles and faster start-up.

So protect the logic that earns it, license checks, paywall logic, and proprietary rules, and keep tight inner loops out of the VM. That's where it pays off.

Where does it ship: browser, Node, or both?

Both. The protected bundle runs in any modern browser or Node version, so you can apply it to server-side code too. Where it earns the most is the code that leaves your control: browser bundles, Electron and desktop apps, extensions, and anything you distribute to run on machines you don't own.

One CLI command produces a single self-contained JavaScript file, with no dependencies or build step for whoever runs it.

Is it production-ready?

Yes. Thin-VM runs in production today, with performance tuning and stricter isolation modes for higher-risk work.

Stop Shipping Your Algorithms in Plain Text

Protecting a paid SaaS, locking down your anti-fraud detection, or auditing what leaks from your front-end code? Tell us what you're shipping and we'll help you plan it.

Contact Form