https://github.com/correia-jpv/fucking-awesome-micro-npm-packages
A curated list of small, focused npm packages. With repository stars⭐ and forks🍴
https://github.com/correia-jpv/fucking-awesome-micro-npm-packages
List: fucking-awesome-micro-npm-packages
awesome awesome-list javascript js list npm npm-module npm-package npm-scripts npmjs packages
Last synced: 28 days ago
JSON representation
A curated list of small, focused npm packages. With repository stars⭐ and forks🍴
- Host: GitHub
- URL: https://github.com/correia-jpv/fucking-awesome-micro-npm-packages
- Owner: Correia-jpv
- License: mit
- Created: 2022-01-31T18:32:44.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-14T01:04:58.000Z (about 1 month ago)
- Last Synced: 2025-04-27T09:57:03.002Z (28 days ago)
- Topics: awesome, awesome-list, javascript, js, list, npm, npm-module, npm-package, npm-scripts, npmjs, packages
- Homepage:
- Size: 121 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: contributing.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: code-of-conduct.md
Awesome Lists containing this project
- ultimate-awesome - fucking-awesome-micro-npm-packages - A curated list of small, focused npm packages. With repository stars⭐ and forks🍴. (Other Lists / Julia Lists)
README
# Awesome Micro npm Packages [](https://github.com/sindresorhus/awesome)
> A curated list of small, focused Node.js modules.
*Inspired by the
355903⭐
28908🍴
[awesome](https://github.com/sindresorhus/awesome)) list thing.*## Articles
*
?⭐
?🍴
[One-line node modules](https://github.com/sindresorhus/ama/issues/10))
*1551⭐
86🍴
[Module best practices](https://github.com/mattdesl/module-best-practices))
* [Evaluating Packages Part 1 - Turn to community](http://bytearcher.com/articles/evaluating-packages-1-check-community/)
* [Evaluating Packages Part 2 - Review repository](http://bytearcher.com/articles/evaluating-packages-2-review-repository/)
* 🌎 [Small modules: it’s not quite that simple](medium.com/@Rich_Harris/small-modules-it-s-not-quite-that-simple-3ca532d65de4)
* 🌎 [In Defense of Hyper Modular JavaScript](medium.freecodecamp.com/in-defense-of-hyper-modular-javascript-33934c79e113)
* [Tiny npm package: Guidelines to create a Node.js module following the small package philosophy](http://g14n.info/2015/12/tiny-npm-package/)
* 🌎 [The cost of small modules](nolanlawson.com/2016/08/15/the-cost-of-small-modules/)## Modules
### Array
*
23⭐
32🍴
[is-sorted](https://github.com/dcousens/is-sorted)) - A small module to check if an Array is sorted.
*11⭐
14🍴
[array-first](https://github.com/jonschlinkert/array-first)) - Get the first element or first n elements of an array.
*35⭐
14🍴
[array-last](https://github.com/jonschlinkert/array-last)) - Return the last element in an array.
*59⭐
16🍴
[arr-flatten](https://github.com/jonschlinkert/arr-flatten)) - Recursively flatten an array or arrays.
*24⭐
7🍴
[dedupe](https://github.com/seriousManual/dedupe)) - Remove duplicates from an array.
*25⭐
6🍴
[array-range](https://github.com/mattdesl/array-range)) - Creates a new array with given range.
*46⭐
18🍴
[arr-diff](https://github.com/jonschlinkert/arr-diff)) - Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
*42⭐
5🍴
[filled-array](https://github.com/sindresorhus/filled-array)) - Returns an array filled with the specified input
*4⭐
0🍴
[map-array](https://github.com/parro-it/map-array)) - Map object keys and values into an array.
*16⭐
1🍴
[in-array](https://github.com/jonschlinkert/in-array)) - Return true if any of passed values exists in array - faster than using indexOf.
*118⭐
8🍴
[unordered-array-remove](https://github.com/mafintosh/unordered-array-remove)) - Efficiently remove an element from an unordered array without doing a splice.
*7⭐
4🍴
[array-swap](https://github.com/michaelzoidl/swap-array)) - Swap position of two items in an array.
*5⭐
2🍴
[mirrarray](https://github.com/johnwquarles/mirrarray)) - Creates a keymirror object from an array of valid keys.
*61⭐
14🍴
[group-array](https://github.com/doowb/group-array)) - Group array of objects into lists.
*12⭐
0🍴
[array.chunk](https://github.com/zhiyelee/array.chunk)) - Split array/TypedArray to chunks of given size.
*70⭐
5🍴
[fast-cartesian](https://github.com/ehmicky/fast-cartesian)) - Fast cartesian product.### String
*
239⭐
26🍴
[decamelize](https://github.com/sindresorhus/decamelize)) - Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow.
*44⭐
8🍴
[pad-left](https://github.com/jonschlinkert/pad-left)) - Left pad a string with zeros or a specified string.
*35⭐
3🍴
[to-camel-case](https://github.com/ianstormtaylor/to-camel-case)) - Convert a string to a camel case.
*11⭐
2🍴
[to-capital-case](https://github.com/ianstormtaylor/to-capital-case)) - Convert a string to a capital case.
*4⭐
3🍴
[to-constant-case](https://github.com/ianstormtaylor/to-constant-case)) - Convert a string to a constant case.
*5⭐
0🍴
[to-dot-case](https://github.com/ianstormtaylor/to-dot-case)) - Convert a string to a dot case.
*16⭐
5🍴
[to-no-case](https://github.com/ianstormtaylor/to-no-case)) - Remove an existing case from a string.
*3⭐
0🍴
[to-pascal-case](https://github.com/ianstormtaylor/to-pascal-case)) - Convert a string to a pascal case.
*6⭐
0🍴
[to-sentence-case](https://github.com/ianstormtaylor/to-sentence-case)) - Convert a string to a sentence case.
*26⭐
2🍴
[to-snake-case](https://github.com/ianstormtaylor/to-snake-case)) - Convert a string to a snake case.
*6⭐
3🍴
[to-space-case](https://github.com/ianstormtaylor/to-space-case)) - Convert a string to a space case.
*18⭐
6🍴
[to-title-case](https://github.com/ianstormtaylor/to-title-case)) - Convert a string to a title case.
*1073⭐
94🍴
[node-slug](https://github.com/dodo/node-slug)) - slugifies even utf-8 chars.
*0⭐
2🍴
[rtrim](https://github.com/sergejmueller/rtrim)) - Strip whitespace - or other characters - from the end of a string.
*34⭐
1🍴
[slice.js](https://github.com/hustcc/slice.js)) - Javascript library to enhance String.substring / Array.slice with python slice style.
*412⭐
38🍴
[strip-ansi](https://github.com/chalk/strip-ansi)) - Strip ANSI escape codes.
*493⭐
52🍴
[striptags](https://github.com/ericnorris/striptags)) - An implementation of PHP's strip_tags in Node.js.
*1⭐
1🍴
[parse-next-json-value](https://github.com/ErikOnBike/parse-next-json-value)) - Parse next JSON value from string allowing extraneous characters after value.
*2⭐
0🍴
[pluralize](https://github.com/DaniAkash/pluralizer)) - A very tiny library to pluralize words### Date & Time
*
1148⭐
67🍴
[pretty-ms](https://github.com/sindresorhus/pretty-ms)) - Convert milliseconds to a human readable string: 1337000000 → 15d 11h 23m 20s.
*17⭐
3🍴
[hirestime](https://github.com/seriousManual/hirestime)) - A wrapper around the built-in high resolution timer which simplifies the calculation of timestamps.
*1⭐
0🍴
[periods](https://github.com/timruffles/periods)) - Defined time-periods constants for Javascript, in milliseconds.
*2070⭐
125🍴
[fecha](https://github.com/taylorhakes/fecha)) - Javascript Date formatting and parsing.
*3⭐
1🍴
[akamai-time-reference](https://github.com/jucrouzet/akamai-time-reference)) - Get reference time using Akamai's time reference service.
*5357⭐
408🍴
[timeago.js](https://github.com/hustcc/timeago.js)) - A tiny(~1.7kb) library used to format date with `*** time ago` statement.
*1⭐
0🍴
[count-days-in-month](https://github.com/shinnn/count-days-in-month)) - Get the number of days in a given month.
*111⭐
17🍴
[time-stamp](https://github.com/jonschlinkert/time-stamp)) - Get a formatted timestamp.
*249⭐
10🍴
[twas](https://github.com/vutran/twas)) - Generate a relative time string (Example: "3 seconds ago")### Object
*
212⭐
42🍴
[map-obj](https://github.com/sindresorhus/map-obj)) - Map object keys and values into a new object.
*101⭐
9🍴
[filter-obj](https://github.com/sindresorhus/filter-obj)) - Filter object keys and values into a new object.
*26⭐
5🍴
[object-values](https://github.com/sindresorhus/object-values)) - Get the values of an object.
*2⭐
0🍴
[object-pairs](https://github.com/eush77/object-pairs)) - Turn an object into list of [key, value] pairs for mapping, iterating or other purposes.
*4⭐
1🍴
[zipmap](https://github.com/landau/zipmap)) - Returns a map with the keys mapped to the corresponding vals. zipmap also accepts a single value of objects or pairs.
*11⭐
2🍴
[just-pluck](https://github.com/jarofghosts/just-pluck)) - Pluck without the madness.
*790⭐
109🍴
[deep-equal](https://github.com/substack/node-deep-equal)) - Node's assert.deepEqual() algorithm as a standalone module.
*247⭐
33🍴
[deep-assign](https://github.com/sindresorhus/deep-assign)) - Recursive Object.assign().
*277⭐
41🍴
[set-value](https://github.com/jonschlinkert/set-value)) - Create nested values and any intermediaries dot notation (`'a.b.c'`) paths.
*284⭐
21🍴
[get-value](https://github.com/jonschlinkert/get-value)) - Use property paths (a.b.c) to get a nested value from an object.
*26⭐
6🍴
[has-value](https://github.com/jonschlinkert/has-value)) - Returns true if a value exists, false if empty. Works with deeply nested values using dot notation (`'a.b.c'`) paths.
*1⭐
2🍴
[has-key-deep](https://github.com/ryanaghdam/has-key-deep)) - Deep-search objects for keys. Keys can be searched by providing an array of keys, or using a dot-notiation.
*3⭐
1🍴
[flatkeys](https://github.com/ricardobeat/flatkeys)) - Flatten object key hierarchies into a list of strings using a custom separator.
*21⭐
4🍴
[flatten-obj](https://github.com/watson/flatten-obj)) - Converts an object literal with deeply nested nodes to a simple key/value object.
*11⭐
4🍴
[is-empty-object](https://github.com/gummesson/is-empty-object)) - Check if an object is empty.
*313⭐
47🍴
[stringify-object](https://github.com/yeoman/stringify-object)) - Stringify an object/array like JSON.stringify just without all the double-quotes.
*35⭐
4🍴
[sorted-object](https://github.com/domenic/sorted-object)) - Returns a copy of an object with its keys sorted.
*4⭐
0🍴
[static-props](https://github.com/fibo/static-props)) - Defines static object attributes using `Object.defineProperties`
*0⭐
1🍴
[missing-deep-keys](https://github.com/vladgolubev/missing-deep-keys)) - Returns an array of keys from first object that are missing in second.
*3⭐
0🍴
[has-own-property](https://github.com/LinusU/has-own-property)) - Check if an object has a local property.
*2⭐
1🍴
[merge-objects](https://github.com/shevaroller/node-merge-objects)) - Deep-merge two objects. Arrays that are values of the same object key get concatenated.
*1103⭐
95🍴
[deep-object-diff](https://github.com/mattphillips/deep-object-diff)) - Deep diff two JavaScript Objects while preserving the data structure. Including nested structures of Arrays and Objects.### Function
*
56⭐
3🍴
[compose-function](https://github.com/stoeffel/compose-function)) - Compose a new function from smaller functions `f(g(x))`.
*315⭐
19🍴
[curry](https://github.com/dominictarr/curry)) - A curry function without anything too clever.
*222⭐
29🍴
[once](https://github.com/isaacs/once)) - Run a function exactly one time.
*9⭐
2🍴
[deep-bind](https://github.com/jonschlinkert/deep-bind)) - Bind a context to all functions in an object, including deeply nested functions.
*?⭐
?🍴
[identity-function](https://github.com/substack/identity-function)) - Always return the input argument.
*1112⭐
56🍴
[mem](https://github.com/sindresorhus/mem)) - An optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
*1040⭐
107🍴
[throttle-debounce](https://github.com/niksy/throttle-debounce)) - Throttle/debounce your functions.
*46⭐
2🍴
[compose-tiny](https://github.com/hipstersmoothie/compose-tiny)) - A very tiny and fast compose function.### Math
*
234⭐
13🍴
[is-even](https://github.com/jonschlinkert/is-even)) - A good way to tell if a number is even or not (avoids type issues). Uses `is-odd` and `is-number` under the hood.
*270⭐
51🍴
[is-number](https://github.com/jonschlinkert/is-number)) - Returns `true` if the value is a number.
*340⭐
74🍴
[is-odd](https://github.com/jonschlinkert/is-odd)) - A good way to tell if a number is odd or not (avoids type issues). Uses `is-number` under the hood.
*7⭐
1🍴
[easy-math.js](https://github.com/kingzez/easy-math.js)) - A tiny easy math library including addition, multiplication, subtraction, and division.
*2⭐
0🍴
[my-prime](https://github.com/jinnatul/my-prime)) - A good way to tell if a number is prime or not.
*1⭐
0🍴
[fun-gcd](https://github.com/zubayerhimel/fun-gcd)) - A tiny math library to get gcd of two numbers using Euclidean algorithm### Stream
*1901⭐
106🍴
[through2](https://github.com/rvagg/through2)) - Tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise.
*35⭐
4🍴
[through2-filter](https://github.com/brycebaril/through2-filter)) - A through2 to create an Array.prototype.filter analog for streams.
*70⭐
2🍴
[through2-map](https://github.com/brycebaril/through2-map)) - A through2 to create an Array.prototype.map analog for streams.
*15⭐
1🍴
[stream-spigot](https://github.com/brycebaril/node-stream-spigot)) - A readable stream generator, useful for testing or converting simple functions into Readable streams.
*577⭐
64🍴
[concat-stream](https://github.com/maxogden/concat-stream)) - writable stream that concatenates strings or data and calls a callback with the result.
*1927⭐
166🍴
[JSONStream](https://github.com/dominictarr/JSONStream)) - streaming JSON.parse and stringify
*3⭐
0🍴
[through2-map-promise](https://github.com/RangerMauve/through2-map-promise)) - A small promise-based wrapper for through2.
*911⭐
61🍴
[pump](https://github.com/mafintosh/pump)) - pipe streams together and close all of them if one of them closes.
*345⭐
37🍴
[split](https://github.com/dominictarr/split)) - Break up a stream and reassemble it so that each line is a chunk.
*110⭐
21🍴
[is-stream](https://github.com/sindresorhus/is-stream)) - Check if something is a Node.js stream.
*104⭐
3🍴
[syncthrough](https://github.com/mcollina/syncthrough)) - Transform your data as it pass by, synchronously.### Promise
*
1504⭐
67🍴
[pify](https://github.com/sindresorhus/pify)) - Promisify a callback-style function.
*9⭐
2🍴
[promise-all-props](https://github.com/Siilwyn/promise-all-props)) - Like `Promise.all` but for object properties.
*87⭐
9🍴
[sleep-promise](https://github.com/brummelte/sleep-promise)) - Resolves a promise after a specified delay.
*280⭐
31🍴
[is-promise](https://github.com/then/is-promise)) - Test whether an object looks like a promises-a+ promise.### Data Structure
*
112⭐
2🍴
[quetie](https://github.com/TomerAberbach/quetie)) - Just the cutest and tiniest queue/deque implementation!### File System
*
5743⭐
255🍴
[rimraf](https://github.com/isaacs/rimraf)) - A deep deletion module for node (like rm -rf).
*?⭐
?🍴
[mkdirp](https://github.com/substack/node-mkdirp)) - Recursively mkdir, like mkdir -p.
*28⭐
11🍴
[du](https://github.com/rvagg/node-du)) - A simple JavaScript implementation of du -sb.
*233⭐
11🍴
[file-size](https://github.com/Nijikokun/file-size)) - Lightweight filesize to human-readable / proportions w/o dependencies.
*752⭐
93🍴
[tmp](https://github.com/raszi/node-tmp)) - Temporary file and directory creator for node.js.
*170⭐
13🍴
[fs-promise](https://github.com/kevinbeaty/fs-promise)) - Node fs methods as Promise/A+ (optional fs-extra, graceful-fs).
*3⭐
1🍴
[read-git-user](https://github.com/RocktimSaikia/read-git-user)) - Reads the username and email from `.gitconfig` :wrench: and returns it as json object.### Browser
*
184⭐
26🍴
[delegate](https://github.com/zenorocha/delegate)) - Lightweight event delegation.
*?⭐
?🍴
[insert-css](https://github.com/substack/insert-css)) - Insert a string of css into the head
*6⭐
0🍴
[dom-element-value](https://github.com/crysalead-js/dom-element-value)) - DOM element value getter/setter.
*147⭐
16🍴
[image-promise](https://github.com/bfred-it/image-promise)) - Load one or more ``s in a Promise.
*12⭐
0🍴
[get-media-size](https://github.com/bfred-it/get-media-size)) - Get the original size of any `img`/`video`/`svg`/`canvas` tags or canvas context.
*59⭐
3🍴
[document-ready](https://github.com/bendrucker/document-ready)) - Document ready listener for modern browsers.
*148⭐
5🍴
[copee](https://github.com/styfle/copee)) - Copy text from browser to clipboard...natively!### Semver
*
5229⭐
510🍴
[semver](https://github.com/npm/node-semver)) - The semantic version parser used by npm.
*3⭐
0🍴
[semver-max](https://github.com/eush77/semver-max)) - Find maximum (or minimum) version according to semver.
*2⭐
0🍴
[semver-first-satisfied](https://github.com/parro-it/semver-first-satisfied)) - Find minimum in an array of version that satisfies a semver range.### CLI
*
166⭐
31🍴
[abbrev](https://github.com/isaacs/abbrev-js)) - Calculate the set of unique abbreviations for a given set of strings.
*8590⭐
485🍴
[glob](https://github.com/isaacs/node-glob)) - Glob functionality for node.js.
*143⭐
14🍴
[username](https://github.com/sindresorhus/username)) - Get the username of the current user.
*?⭐
?🍴
[minimist](https://github.com/substack/minimist)) - Parse argument options.
*170⭐
22🍴
[png-to-ico](https://github.com/steambap/png-to-ico)) - Convert png to windows ico format.
*5⭐
0🍴
[help-version](https://github.com/eush77/help-version)) - Easily handle --help and --version arguments in your CLI application### Module management
*
121⭐
14🍴
[pkg-conf](https://github.com/sindresorhus/pkg-conf)) - Get namespaced config from the closest package.json.
*18⭐
2🍴
[normalize-pkg](https://github.com/jonschlinkert/normalize-pkg)) - Normalize values in package.json to improve compatibility, programmatic readability and usefulness with third party libs.### Generators
*
15⭐
5🍴
[is-generator](https://github.com/blakeembrey/is-generator)) - Check whether a given value is a generator function.### Other
*
14883⭐
916🍴
[uuid](https://github.com/kelektiv/node-uuid)) - Generate RFC-compliant UUIDs in JavaScript.
*2239⭐
318🍴
[node-mime](https://github.com/broofa/node-mime)) - Comprehensive MIME type mapping API based on mime-db module.
*5⭐
3🍴
[not-defined](https://github.com/fibo/not-defined)) - Checks if foo is not defined, i.e. undefined, null, an empty string, array or object.
*21⭐
1🍴
[is-fqdn](https://github.com/parro-it/is-fqdn)) - Check if a string represent a fully qualified domain name.
*8⭐
1🍴
[shurley](https://github.com/BrunoBernardino/shurley)) - Parses URLs from user input (with potential typos in protocols, bad copy+paste, etc.) and returns a proper URL.
*5⭐
1🍴
[mime-type-check](https://github.com/RocktimSaikia/mime-type-check)) - Get the MIME type of a file by its extension.
*25433⭐
818🍴
[nanoid](https://github.com/ai/nanoid)) - A tiny (130 bytes), secure, URL-friendly, unique string ID generator for JavaScript### Tools
*
36⭐
1🍴
[npm-deprecated-check](https://github.com/KID-joker/npm-deprecated-check)) - Check for deprecated packages and recommend alternative packages.## Related lists
This section contains awesome lists that you may find useful if you use or write small NPM modules.
*
60565⭐
6016🍴
[awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs)) - A curated list of delightful Node.js packages and resources.
*4554⭐
259🍴
[awesome-npm](https://github.com/sindresorhus/awesome-npm)) - Awesome npm resources and tips.## Small modules rockstars to follow
These people are used to develop awesome NPM modules that follows the single responsibility philosophy.
Follow them to discover new great modules:[](https://github.com/sindresorhus) | [](https://github.com/substack) | [](https://github.com/eush77) | [](https://github.com/isaacs) | [](https://github.com/jonschlinkert) | [](https://github.com/dominictarr)
---|---|---|---|---|---
[Sindre Sorhus](https://github.com/sindresorhus) | [James Halliday](https://github.com/substack) | [Eugene Sharygin](https://github.com/eush77) | [Isaac Z. Schlueter](https://github.com/isaacs) | [Jon Schlinkert](https://github.com/jonschlinkert) | [Dominic Tarr](https://github.com/dominictarr)[](https://github.com/rvagg) | [](https://github.com/maxogden) | [](https://github.com/doowb)
---|---|---
[Rod Vagg](https://github.com/rvagg) | [Max Ogden](https://github.com/maxogden) | [Brian Woodward](https://github.com/doowb)## Contribute
Contributions welcome! Read the [contribution guidelines](contributing.md) first.
## License
[](http://creativecommons.org/publicdomain/zero/1.0/)
To the extent possible under law, [Andrea Parodi](https://github.com/parro-it) has waived all copyright and related or neighboring rights to this work.
## Source
4617⭐
459🍴
[parro-it/awesome-micro-npm-packages](https://github.com/parro-it/awesome-micro-npm-packages))