JS Obfuscator
ブラウザ内で動く基本的な JS 難読化:ローカル名の短縮、コメントと空白の削除、文字列の 16 進エスケープ(任意)。
これは字句レベルの基本的な難読化であり、暗号化ではありません。流し読みは難しくなりますが、 秘密は守れません 。API キーやトークン、ライセンス判定をクライアント側の JavaScript に置かないでください。
改行は保持されます。行を結合すると自動セミコロン挿入の解釈が変わるため、このツールでは行いません。
使い方
- JavaScript を左のパネルに貼り付けます。
- ローカル名を短い名前に置換をオンにすると、字句解析器がローカルと判定できた宣言が短い名前に変わります。
- コメントと余分な空白を削除をオンにするとコメントを除去しインデントを圧縮します。改行は残ります。
- 文字列を
\x41形式に書き換えたい場合は文字列を 16 進エスケープをオンにします。 - 難読化を押し、コピーまたはダウンロードします。ステータス行に置換した名前の数とサイズの変化が出ます。
置換は意図的に保守的です。obj.count のようなプロパティアクセス、count: のようなオブジェクトキー、自身の宣言より前の参照が 1 か所でもあれば、その名前は部分的にではなく丸ごと対象外になります。
よくある用途
- 一目で読まれたくない断片を公開する —— デモを出す前にコメントと説明的な変数名を落とします。
- 小さなスクリプトを軽くする —— コメントとインデントを除けば、挙動を変えずにバイト数を削れます。
- リテラル文字列をざっと見られないようにする —— 16 進エスケープにすれば人には読めませんが、実行時の値は同じです。
- 前後のサイズを比べる —— ステータス行に前後のバイト数が出るので、その回でどれだけ減ったか分かります。
よくある質問
Q: API キーやライセンス判定は守れますか? A: いいえ。これは字句レベルの基本的な難読化であり、暗号化ではありません。ブラウザに配布したものは、本気で読む人には必ず読めます。キーやライセンス判定はサーバー側に置いてください。
Q: すべてを 1 行に結合しないのはなぜ? A: 行を結合すると自動セミコロン挿入の解釈が変わり、挙動が静かに変わる恐れがあります。字句レベルのツールでは行境界を保つのが安全です。
Q: 変数が置換されないのはどんなとき?
A: プロパティアクセス、オブジェクトキー、ラベルとしての出現がある場合、宣言より前に参照されている場合、ファイルに eval や with がある場合は、その名前を丸ごと対象外にします。一部だけ置換する不整合を避けるためです。
データはこのデバイス内にとどまります
JS Obfuscator は 100% ローカルで動作します。貼り付けたり、ドロップしたデータはすべてお使いのブラウザ内で処理され、送信されることはありません。当社のサーバーには何も保存されません——タブを閉じればすべて消えます。
入力された内容がサーバーへ送信・記録・解析利用されることはありません。初回読み込み後はネットワークを切断していてもこのページは動作します。