日本語

JavaScript 難読化をオンラインで、無料で

登録なしで JavaScript を難読化できます。コードを貼り付け、プリセットを選び、保護された結果をコピーするだけ。動作は変わりませんが、変数名・文字列・構造が書き換えられるため、読む・コピーする・改変するコストが大きく上がります。

アカウント不要

無料で始められます

オンラインツールは 32 KB までのコードを保護でき、プランを選ぶ前に有料オプションを含むすべてのオプションを試せます。

オンライン貼り付け、プリセット選択、コピー。
npm CLIビルドと CI 向け。
Windowsフォルダーごと手元で処理。
使い方

4 ステップでオンライン難読化

ツールの画面は英語です。「」内はボタンの表記そのままです。

  1. コードを貼り付けます(左のパネル)。「Upload File」でアップロードもできます(.js または .txt)。
  2. プリセットを選びます:「Standard」「Balanced」「Maximum」。有料オプションには、プレビュー以外で使うのに必要なプランが表示されます。
  3. 「Obfuscate」を押します。結果の下に、適用されたオプションと効果がなかったオプションが表示されます。
  4. コピーまたはダウンロード(「Copy」「Download」)し、公開前にアプリで動作を確認します。

オンライン難読化ツールを開く ›

各プリセットの内容

  • Standard:変数名の置換、文字列の移動とエンコード、出力の圧縮。CLI の --preset standard と同じです。
  • Balanced:短い変数名、ディープ難読化、コードの並べ替え、Flat Transform、文字列の暗号化を追加します。
  • Maximum:単一ファイルのスクリプトで使えるすべてのオプションを、実行時の防御も含めて有効にします。
何が変わるか

同じ動作、別のコード

このツールの実際の出力です。変数名が置き換えられ、文字列は配列に移されてエンコードされています。どちらも同じ結果を返します。

難読化前
function isLicensed(user) {
  var plan = user.plan;
  if (plan === "pro" || plan === "team") {
    return user.key !== "TRIAL-KEY";
  }
  return false;
}
難読化後(読みやすく整形)
var _$_2476=["\x70\x72\x6F","\x74\x65\x61\x6D",
  "\x54\x52\x49\x41\x4C\x2D\x4B\x45\x59"];
function isLicensed(b)
{
	var a=b.plan;
	if(a=== _$_2476[0x0]|| a=== _$_2476[0x1])
	{
		return b.key!== _$_2476[0x2]
	}
	return false
}

ファイル内で TRIAL-KEY を検索しても見つかりません。「Encrypt Strings」を使うと、エンコードされた形でも文字列が現れなくなります(JavaScript 暗号化のページ、英語)。

プロジェクト全体

ビルドで JS を難読化

ソースコードではなく、ビルド・圧縮済みのバンドルを難読化します。アカウントがない場合、CLI は無料オプションを手元のマシンで実行します。何もアップロードされず、サイズ制限もありません。有料オプションはクラウドサービスで実行されます。

npm install --save-dev javascriptobfuscator-com
npx javascriptobfuscator-com --input dist --output dist-protected

Rollup、esbuild、Rspack、Parcel、Gulp 用のプラグインがあり、Node.js のコードには --target node を使います(詳細は英語の CLI ページ)。フォルダー全体や、HTML・PHP・ASP・JSP 内の JavaScript には Windows デスクトップ版があります。

公開する前に

難読化でできないこと

  • 秘密は隠せません。ブラウザー内の API キーは読まれます。サーバー側に置いてください。
  • サーバー側の検証の代わりにはなりません。コードを実行する人がそれを制御できます。
  • 保護したコピーを必ずテストし、他のコードから呼ばれる名前(公開 API、フレームワークのコールバック)は残してください。
  • ソースマップを公開しないでください。元の名前が戻ってしまいます。
料金プラン

公開価格(米ドル/月)

プラン価格内容
Free0 USDオンラインツール(32 KB まで)、無制限の CLI 無料オプション、制限付き API。変数名の置換と文字列のエンコード。
Basic29 USD大きなファイル、圧縮、ディープ難読化、コードの並べ替え。
Corporate49 USD上限の拡大、グローバル名の置換、デッドコードの挿入。
Enterprise99 USD最大の上限、文字列の暗号化、Flat Transform。

上限とオプションの詳細は料金ページ(英語)をご覧ください。

よくある質問

JavaScript 難読化について

無料で使えますか?

はい。オンラインツールはアカウント不要で 32 KB までのコードを保護でき、すべてのオプションを試せます。アカウントがなくても、npm CLI は無料オプションを手元で実行し、コードをアップロードせず、サイズ制限もありません。高度なオプションのプランは月額 29 米ドルからです。

難読化したコードは元に戻せますか?

ブラウザーで動くコードは、いつでも解析できます。webcrack などのツールで実際に試したところ、文字列は多くの場合復元されましたが、元の変数名は一つも戻りませんでした。難読化はコードの理解と再利用にかかる時間を大きく増やしますが、セキュリティの壁ではなく、キーを隠す手段でもありません。 難読化解除の検証(英語)

難読化でコードは遅く・大きくなりますか?

識別子の置換はコードを小さくします。文字列テーブル、暗号化、制御フローの変換はコードを大きくし、起動時に多少の処理が増えることがあります。ご自身のコードでサイズと読み込み時間を測ってください。

コードはサーバーに送信されますか?

オンラインツールは送信します。アカウントがない場合、npm CLI は無料オプションを手元で実行し、何もアップロードしません。有料オプションはクラウドサービスを使います。Windows デスクトップ版の Local Standard モードでも、シンプルな ES5 ファイルをオフラインで保護できます。

ご自身のコードで試す

任意の JavaScript を貼り付け、プリセットを選んで結果を比べてください。登録は不要です。