All your standard libraries will be assimilated into our
JavaScriptTypeScript collective. Resistance is futile.
Locutus is ~500 TypeScript implementations of standard library functions from PHP, Go, Python, Ruby, C, and more. Each function is individually importable and tree-shakeable.
Most of these started as rainy Sunday afternoon puzzles. Some are genuinely useful. Some are just fun to write. All of them are a way to learn how different languages solve the same problems.
Locutus ports function behavior, not foreign runtime baggage. We reimplement standard-library semantics in TypeScript, but keep API boundaries JavaScript-native.
That means we do not recreate alien language data structures or object models in Locutus APIs (for example: Go slices/maps, Python tuples/bytes, Ruby symbols, C structs/pointers, Perl refs).
Historic exception: for PHP compatibility, plain JS objects may be treated as associative arrays when locutus.objectsAsArrays is enabled.
Example: a Go date-formatting port in Locutus should accept a JavaScript Date and return a string, not a custom Go time.Time object.
npm install locutusLocutus uses pragmatic versioning: patch is the default even for function-level parity fixes; see
CONTRIBUTING.md#versioning for exact bump criteria.
import { sprintf } from 'locutus/php/strings/sprintf'
const effectiveness = 'futile'
console.log(sprintf('Resistance is %s', effectiveness))
// Resistance is futileimport { Contains } from 'locutus/golang/strings/Contains'
console.log(Contains('Locutus', 'cut'))
// trueCode shown on function pages (Module JS / Standalone JS) targets:
baseline widely available with downstream
Package runtime targets:
- Node:
engines.node >= 22 - Published dist output (
dist/CommonJS +dist/esmESM):ES2022
If your application targets older browsers, treat Locutus snippets like normal application code:
- transpile to your target (for example with TypeScript, Babel, SWC, or esbuild)
- add required polyfills for missing APIs in your environment
- validate with your own Browserslist target and browser test matrix
Locutus does not inject polyfills into copy-paste snippets by default.
Some guidelines and instructions can be found in CONTRIBUTING.md
Quick commands:
yarn check- format + lint + testyarn test:parity- cross-language verificationyarn test- full test suiteyarn lint- Biome checkyarn fix:biome- auto-fix
MIT, except for src/php/bc/ and src/php/_helpers/_bc.js which are LGPL-2.1 (derived from PHP's bcmath/Libbcmath). See LICENSE for details.