{"adoption": {"forks": 1737, "observed_at": "2026-08-28T04:11:14.940138+00:00", "stars": 16218}, "canonical_url": "https://ross.abutalabs.com/products/javascript-obfuscator", "card": {"archived": false, "artifact_type": "library", "description": "A powerful obfuscator for JavaScript and Node.js", "domain": ["security", "web-development", "reverse-engineering"], "enriched": true, "function": ["security", "compiler", "developer-tools"], "health_score": 99, "homepage": "https://obfuscator.io", "language": "TypeScript", "license": "BSD-2-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["javascript-obfuscator/javascript-obfuscator"], "name": "javascript-obfuscator/javascript-obfuscator", "platform": ["browser", "cross-platform", "cli"], "pushed_at": "2026-08-23T05:17:44+00:00", "repo": "javascript-obfuscator/javascript-obfuscator", "stars": 16218, "tags": ["obfuscation", "javascript-obfuscator", "code-protection", "control-flow-flattening", "string-encoding", "anti-reverse-engineering", "typescript", "javascript", "nodejs"], "topics": ["javascript-obfuscator", "obfuscation", "uglify", "javascript", "protection", "obfuscate", "js-obfuscator", "obfuscator", "mangle", "cryptography", "string", "encoding", "literal", "security", "browser", "flow", "flattening", "control-flow", "typescript", "nodejs"], "urls": [], "use_cases": ["obfuscate javascript source code", "protect proprietary js algorithms from reverse engineering", "mangle variable names and encode strings in a nodejs build", "flatten control flow to hinder static analysis", "protect client-side licensing logic", "obfuscate code in a webpack or cli build step"], "what_it_is": "A powerful open-source JavaScript and Node.js obfuscator that transforms readable source code into hard-to-reverse-engineer output using identifier renaming, string array encoding, control flow flattening, dead code injection, and self-defending transforms. A companion commercial service (obfuscator.io) adds VM-based bytecode obfuscation with anti-LLM defenses on top of the free package.", "when_to_avoid": ["you expect obfuscation to protect secrets or API keys - it is not encryption", "you need VM bytecode virtualization, which is only in the paid obfuscator.io service", "you need minification or tree-shaking - use a bundler like terser/esbuild instead", "obfuscating vendor libraries or performance-critical hot paths"], "when_to_choose": ["you need free, configurable JavaScript obfuscation for browser or Node.js code", "you want identifier renaming, string array encoding, and control flow flattening in an npm pipeline", "you need a CLI or Node API to obfuscate files as part of a build"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/javascript-obfuscator", "repo": "javascript-obfuscator/javascript-obfuscator", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:14.940138+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:05:11.321183+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25aca346df8ae737edb6a01b7f54b44b8cf4239c4156cc1324935424bafde45a", "fetched_at": "2026-08-28T04:11:14.940138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javascript-obfuscator/javascript-obfuscator"}, {"content_hash": "8125832c5152f36c80c057fcb1ed66a0614c1cee8b991627c54f9f3a0375b93e", "fetched_at": "2026-08-29T08:03:12.028336+00:00", "kind": "homepage", "missing": false, "url": "https://obfuscator.io"}, {"content_hash": "27bc633fe2ad19950d60a18e1fa3c179dcd4e140f61c578f4da397c7afd4a278", "fetched_at": "2026-08-29T08:03:12.033709+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/getting-started"}, {"content_hash": "4ef891b21e7437c42605cb6ae59a3cb9fc9c3ed907f1931c2559c540a788d3b8", "fetched_at": "2026-08-29T08:03:12.035864+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation"}, {"content_hash": "54047b582c32713caa985a42700a465ab273e4b5f728417317442bbf466f6bc8", "fetched_at": "2026-08-29T08:03:12.037705+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/vm-obfuscation/how-it-works"}, {"content_hash": "c15b899a954d608a88f2155abdfa108dda6ef6700a410c51d6ae18d81b548788", "fetched_at": "2026-08-29T08:03:12.039464+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/runtime-errors"}, {"content_hash": "5dede5869c830cea1735f0ba0e9d2461d6a1f5a0dec7f019dccbcd3dd499633c", "fetched_at": "2026-08-29T08:03:12.041395+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/options"}, {"content_hash": "a9ffe9a27b73d958932234c480311c81509b6355ffcc1baf5b0460f6205bd560", "fetched_at": "2026-08-29T08:03:12.044780+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/docs/recipes/best-practices"}, {"content_hash": "759252198f4828c06c22dae34d47ff1368e581902e03f0e65547ed761ab2bbb9", "fetched_at": "2026-08-29T08:03:12.031713+00:00", "kind": "site_page", "missing": false, "url": "https://obfuscator.io/pricing"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3768, "days_push": 10, "days_rel": 10, "gap_med": 4.0, "n_releases_24m": 19}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}