VVEILVMJAVASCRIPT OBFUSCATION
PricingAPI docsJSVMP vs obfuscatorsWhat is JSVMPHTML5 gamesRPG Maker pluginsElectron and Node.jsTermsRefund policyPrivacy policy

VEILVM · Guides

What Is JSVMP? A Practical Guide to JS VM Protection

JSVMP stands for JavaScript Virtual Machine Protection. Instead of renaming variables or encoding strings inside ordinary JavaScript, a JSVMP toolchain compiles selected source into a custom bytecode format and ships a small interpreter that executes it at runtime. The goal is browser-based (or client-side) code protection that is harder to reverse than classic obfuscation — at the cost of size and speed.

This guide explains the idea in plain language, contrasts it with tools people usually mean by “JavaScript obfuscator,” walks through the trade-offs, and shows how to try a hosted JSVMP workspace (VEILVM) without installing anything.

Why people look beyond classic obfuscators

A typical “JavaScript obfuscator” pipeline (minifiers plus tools in the javascript-obfuscator family) still emits JavaScript:

  • identifiers get renamed
  • strings move into encoded arrays
  • control flow may be flattened
  • debug traps or self-defending wrappers may be added

After a beautifier, the program is still a graph of familiar JS statements. Public deobfuscators exist for many of these patterns. For casual hiding that can be enough. For license checks, signature algorithms, or game anti-cheat kernels, teams often want a higher reverse-engineering cost.

How VM protection works (general principle)

A JSVMP-style pipeline usually looks like this:

  1. Parse — turn source into an AST.
  2. Compile — lower that AST into a proprietary instruction set (bytecode), not into equivalent JS statements.
  3. Emit — package an interpreter (the “VM”) together with the bytecode blob.
  4. Run — at runtime the interpreter steps through instructions; original if / for / function shapes are no longer sitting in plain sight.

Attackers who want the original logic generally need to reverse or instrument the virtual machine first. That is the protection model — cost and time, not a cryptographic guarantee. Anything that runs on the user’s device can eventually be analyzed.

Size and speed trade-offs

Expect the protected fragment to:

  • grow — the interpreter plus bytecode is larger than the original function (often by a large factor)
  • run slower — interpretation adds overhead versus native JS
  • be harder to debug — stack traces and breakpoints behave differently

So JSVMP is a scalpel, not a spray. Protect the small, high-value parts; leave UI glue, frameworks, and large libraries alone (or protect them with lighter transforms).

JSVMP vs “a JavaScript obfuscator” in one sentence

Classic JS obfuscatorJSVMP / VM protection
What you shipObfuscated JavaScriptInterpreter + bytecode
Main benefitCheap friction against casual readersHigher reverse-engineering cost
Main costStill reversible with JS toolingSize + runtime overhead

For a longer feature matrix and “when to use which,” see JSVMP vs classic JavaScript obfuscators.

Trying it on VEILVM

VEILVM is an online JSVMP obfuscation workspace. You paste or upload .js / .mjs / .cjs, pick an engine, and copy or download the result.

Engines (as labeled on the live site):

  • High-performance VM — focused on execution efficiency
  • Dynamic VM — focused on dynamic expression; useful when you want a second representation of the same input

Quotas (from the live homepage / pricing pages):

  • Try free 3 times a day, no sign-up; up to 5 KB per file
  • 20 runs a month after free signup; up to 30 KB per file; 1 concurrent job; no API
  • Pro — $9/month or $79/year: 1,000 runs/month, no plan-level per-file cap (platform transfer limits still apply), 2 concurrent jobs, and API calls

Measured sample (high-performance engine, version 202607231310, captured on the live service): 219 bytes of source → 10,214 bytes of output in 228 ms. Treat that as one data point, not a benchmark claim for your code.

Three-step workflow

  1. Paste source or load a file in the workspace.
  2. Choose High-performance VM or Dynamic VM, then start obfuscation.
  3. Inspect size / timing in the UI, then copy or download the output.

Pro users who need automation can call the same engines over HTTP (POST https://vm.ldvmp.com/api/v1/obfuscate with a veil_live_… key). Keys are shown once at creation, capped at 3 per account, and share the monthly run quota with the web UI. See the API documentation.

Honest limits

  • Client-side protection is never absolute.
  • VEILVM does not publish independent third-party audit results or customer case studies on the marketing pages checked for this guide — evaluate on your own payloads.
  • There is no public offline CLI in the current product surface; the hosted workspace and Pro API are the supported paths.

FAQ

What does JSVMP stand for?

JavaScript Virtual Machine Protection — compiling JS into a custom VM bytecode that an embedded interpreter runs.

Is browser-based obfuscation safe to trust with my source?

VEILVM’s API docs state submitted source is processed in memory and not written to logs. Still treat any third-party processor like you would a CI secret: avoid pasting production private keys, and prefer the API with a server-side key for automation.

Does “no plan-level file cap” on Pro mean unlimited upload size?

No. Pricing copy says Pro has no plan-level per-file cap, while large files remain subject to platform transfer and processing capacity. The HTTP API separately hard-limits each request to 2 MB of UTF-8 source.

What happens if the API returns 503?

For ENGINE_UNAVAILABLE or TIMEOUT, the docs say the run is refunded and the response includes a Retry-After header in seconds — wait that long, then retry. INTERNAL_ERROR (500) is also refunded; retry later. Compile failures (422 COMPILE_FAILED) are refunded as well.

Can Free accounts use the API?

No. API access is a Pro (and admin) feature. Keys stop working immediately if the account drops to Free (403 PLAN_REQUIRED).

How is this different from WebAssembly?

WebAssembly is a standardized portable bytecode with broad tooling. JSVMP here means a product-specific protection VM aimed at raising reverse-engineering cost for JavaScript logic. They solve different problems; VEILVM’s engines are not marketed as a Wasm compiler.

Next steps

  • Try VEILVM in the browser — load the example, run both engines
  • Compare JSVMP to classic obfuscators
  • Pro API reference
  • Pricing
Back to VEILVM
PricingAPI docsJSVMP vs obfuscatorsWhat is JSVMPHTML5 gamesRPG Maker pluginsElectron and Node.jsTermsRefund policyPrivacy policy