es-toolkit is a modern JavaScript utility library built to replace lodash. It was designed from scratch around ES Modules and TypeScript.
Compared to lodash, es-toolkit delivers up to 97% smaller bundle sizes and more than 2x faster runtime performance. It also includes built-in TypeScript support, and a 100% compatible drop-in replacement via es-toolkit/compat.
Today, es-toolkit has surpassed 10 million weekly downloads on npm and is used by companies like Microsoft, Yarn, Storybook, IBM, and Recharts.
Why we built es-toolkit at Toss
In 2024, our Frontend Team at Toss asked a simple question: "Has a global-scale JavaScript library ever come out of Korea?"
It started as a casual conversation. But the more we explored the idea, the fewer reasons we found not to try. So, we decided to build one.
We chose JavaScript utility functions, a space lodash has dominated for over a decade. lodash filled a real gap when JavaScript lacked many basic features, becoming the foundation for millions of projects. But that was ten years ago.
The web today is different. ES Modules are now the standard, making true tree-shaking possible. Engines like V8 and SpiderMonkey have advanced significantly. TypeScript has become the default for most teams. And bundle size is now a critical metric, directly tied to Core Web Vitals.
lodash was built before these shifts, and its architecture hasn't evolved much since. To us, that looked like an opportunity.
es-toolkit is a JavaScript utility library built from scratch for the modern web, with ES Modules, TypeScript, and runtime performance at its core.
es-toolkit vs lodash: what's different
Bundle size
Up to 97% smaller
Larger due to internal dependencies
Runtime performance
2–3x faster
Designed for backward compatibility
Tree-shaking
Fully supported (each function is standalone)
Limited (lodash-es still has internal dependencies)
TypeScript
Built-in (source and types are co-located)
Requires separate @types/lodash package
ES Modules
Native support
Partial support via lodash-es
lodash compatibility
100% drop-in via es-toolkit/compat
—
Maintenance
Actively maintained (frequent releases)
Infrequent updates
npm weekly downloads
10M+
40M+
Benchmarks: es-toolkit vs lodash performance
Let the numbers speak for themselves.
Bundle size
es-toolkit@1.43.0
lodash-es@4.17.21
Difference
Sample
94 bytes
4817 bytes
-98.0%
Difference
90 bytes
7958 bytes
-98.9%
Sum
93 bytes
698 bytes
-86.7%
Debounce
531 bytes
2873 bytes
-81.5%
Throttle
855 bytes
3111 bytes
-72.5%
Pick
132 bytes
9520 bytes
-98.6%
Zip
221 bytes
3961 bytes
-94.4%
lodash-es is the ES Modules version, but it still carries internal helper dependencies. Importing a single function can pull in extra code, which is a limitation rooted in its pre-ES Modules design.
In contrast, every function in es-toolkit is fully independent from day one, with no hidden dependencies.
Runtime performance

JavaScript patterns that were either unavailable or slow a decade ago are now well-optimized by modern engines.
es-toolkit is built with these improvements in mind. In contrast, lodash can't easily adopt these optimizations due to backward compatibility constraints.
What does this look like in practice?
Say your project uses five functions: groupBy, keyBy, pick, omit, and debounce. Importing them from lodash-es adds roughly 30KB (minified) to your bundle once internal dependencies are included. With es-toolkit, the same five functions total around 1KB.
Same functionality, but up to 97% smaller bundles and 2x+ faster runtime. And it’s not because we cut features.
Who uses es-toolkit
Within 18 months of our first release, es-toolkit crossed 10 million weekly downloads on npm.
More telling than the download count is who adopted it: Microsoft across multiple internal projects, Yarn the package manager, Storybook the UI component workshop, IBM at enterprise scale, Recharts the React charting library, and Ink the CLI React renderer.
We didn’t reach out to any of these teams. They found es-toolkit on their own, ran their own benchmarks, and made their own decision to switch. More recently, projects like Dify have been migrating from lodash to es-toolkit as well. When a library delivers better results, people find it.
How to migrate from lodash to es-toolkit
A five-minute migration
es-toolkit is API-compatible with lodash. For most functions, migration is as simple as changing the import path:
If you prefer not to change any code, you can use es-toolkit/compat, a 100% drop-in replacement for lodash:
This single line makes every import ... from 'lodash' in your codebase work without any code modification. You get the bundle size and performance benefits immediately. The larger your codebase and the more widely lodash is used, the more effective this approach becomes.
Near-zero switching cost. Significant gains.
TypeScript-first
Every function in es-toolkit ships with precise TypeScript definitions that preserve type information:
lodash relies on @types/lodash, a separate, community-maintained package. When source code and type definitions live apart, version mismatches and inaccuracies can occur. In es-toolkit, source and types are co-located, so the types stay accurate and up to date.
Actively Maintained
es-toolkit is under active development. New functions are added regularly, and issues and PRs are addressed quickly. A utility library is a long-lived dependency. It’s worth choosing one that's actively maintained.
Reaching 10 million weekly downloads
es-toolkit never had a viral moment. No celebrity developer endorsements. No front-page Hacker News post.
Rather, the growth was steady. From 100K to 500K, then 1M, 5M, eventually 10M weekly downloads. Every week, more teams discovered es-toolkit, compared it to what they were using, and decided to switch. Better tools spread on their own.
What's next
es-toolkit is part of a larger movement at Toss.
We’ve established an Open Source Committee within our Frontend Chapter, and we’re building several other libraries:
- overlay-kit — Promise-based overlay management for React
- use-funnel — Type-safe multi-step flows
- suspensive — Primitives for React Suspense
If you're currently using lodash, switching takes about five minutes.
Add "lodash": "npm:es-toolkit@^1.44.0" to your package.json and see how much your bundle shrinks.
For more details, check our migration guide. For performance data, refer to the benchmarks. To contribute, visit our GitHub.
es-toolkit is MIT licensed. Install it with npm install es-toolkit.
FAQ
Does es-toolkit support all lodash functions?
es-toolkit/compat aims for full compatibility with lodash. It's validated against lodash's actual test cases, and since v1.39.3, it guarantees 100% compatibility. Projects like Storybook, Recharts, and CKEditor have successfully migrated using this compatibility layer.
How long does it take to migrate from lodash to es-toolkit?
The fastest way is to add "lodash": "npm:es-toolkit@^1.44.0" to your package.json. No code changes required, and it works immediately. You can then gradually move from es-toolkit/compat to native es-toolkit imports for additional bundle and performance gains. An official codemod tool, (@es-toolkit/codemod), is also available.
Is the 97% bundle size reduction real?
It depends on the function. For example, sample is about 2,000 bytes in lodash compared to 88 bytes in es-toolkit, which is roughly 96% smaller. The omit function runs about 11.8x faster at runtime. The 97% figure represents the maximum observed reduction, with most functions falling in the 80–97% range.
Does es-toolkit work outside of Node.js?
Yes. It supports Node.js, Deno, Bun, and browsers. It's also available via CDNs, such as unpkg and jsdelivr.
Who built es-toolkit?
It’s developed by the Frontend Team at Toss (Viva Republica), a fintech company based in South Korea. It's open source under the MIT license and welcomes contributions from developers worldwide.
Reference
Press & Technical Coverage
- InfoQ — "Es-Toolkit, a Modern Lodash Alternative"
- LogRocket — "es-toolkit, a Lodash alternative"
- devm.io — "es-toolkit: The New Lodash?"
- JavaScript in Plain English — "Hype Around es-toolkit: Why Is It So Popular?"
Migration Case Studies
- Dify — Migrating from lodash-es to es-toolkit
- supastarter — "Swap Lodash for es-toolkit for leaner, faster utils"
Official Documentation








English (US) ·