NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #100 most downloaded on npm
A library to create readable "multipart/form-data" streams. Can be used to submit forms and file uploads to other web applications.
Last release 3 months ago
12 Jun 2026
Ships unpredictably
gaps range from 2 weeks to 3.6 years
Most releases are documented
notes for 35 of 47 stable releases
1 version withdrawn
withdrawn after publishing
15 years old
53 releases · first in 2011
[Fix] escape CR, LF, and " in field names and filenames `8dff42c`
One column per quarter.
[meta] add auto-changelog `811f682`
auto-changelog 811f6821d11a76crypto random for boundary values 3d172305e34080316c82b@ljharb/eslint-config 58c25d72300ca1[Fix] append: avoid a crash on nullish values `#577`
append: avoid a crash on nullish values #577426ba9a2094191hasown 81ab41bsetBoundary() method 8d8e469getBoundary with non-strings 837b8a1870e4e6e6e83cceslint 4066fd6c4bbb13[Fix] set Symbol.toStringTag when available `#573`
Symbol.toStringTag when available #573Symbol.toStringTag when available #573#532#532Symbol.toStringTag when available (#573) #396Symbol.toStringTag when available (#573) #396Symbol.toStringTag when available #39692613b9806eda78fdb3bcObject.prototype.hasOwnProperty.call 7fecefeObject.prototype.hasOwnProperty.call 6e682d4Object.prototype.hasOwnProperty.call df3c1e6@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript 8261fcb@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript fb66cb7@types/node, browserify, coveralls, eslint, formidable, in-publish, phantomjs-prebuilt, pkgfiles, pre-commit, request, tape, typescript 819f6b73217b3d3a9d480Buffer.from and Buffer.alloc require node 4+ c499f76b82f590b170ee2combined-stream, mime-types 6b1ca1drequest which via tough-cookie ^2.4 depends on psl e5df7f2mime-types 5a5bafe9457283request which via tough-cookie ^2.4 depends on psl 9dbe192d53265d7020dd4cross-spawn 3fc1a9bedb555a10418d1[Tests] migrate from travis to GHA `757b4e3`
Update README for custom stream behavior `6dd8624`
[Fix] escape CR, LF, and " in field names and filenames `8777e67`
[Fix] append: avoid a crash on nullish values `#577`
append: avoid a crash on nullish values #577f5e7eb0auto-changelog d2eb290e8c574ccrypto random for boundary values c6ced61hasown 1a78b5dsetBoundary() method 70bbaa0getBoundary with non-strings b22a64e0150851fc42bb9a14d09e11d9f73fc38b48[Fix] set Symbol.toStringTag when available `#573`
Symbol.toStringTag when available #573Symbol.toStringTag when available (#573) #396Object.prototype.hasOwnProperty.call 7fecefe@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript 8261fcbb82f590request which via tough-cookie ^2.4 depends on psl e5df7f2mime-types 5a5bafefix (npmignore): ignore temporary build files `#532`
feat: add setBoundary method `55d90ce`
form-data: Replaced PhantomJS Dependency `#442`
#449#448#447#442#446#434#424#422#422[Fix] escape CR, LF, and " in field names and filenames `b620316`
[meta] actually ensure the readme backup isn’t published `10626c0`
[Fix] append: avoid a crash on nullish values `#577`
append: avoid a crash on nullish values #5778bf2492auto-changelog b5101ad0e93122crypto random for boundary values b88316csetBoundary() method 131ae5ec97cfbehasown 97ac9c2be99d4eddbc89be351a978f2336602ff0262fd5f61[Fix] set Symbol.toStringTag when available `#573`
Symbol.toStringTag when available #573Symbol.toStringTag when available (#573) #396Object.prototype.hasOwnProperty.call 6e682d4@types/node, browserify, coveralls, eslint, formidable, in-publish, phantomjs-prebuilt, pkgfiles, pre-commit, request, tape, typescript 819f6b7b170ee2combined-stream, mime-types 6b1ca1d9457283request which via tough-cookie ^2.4 depends on psl 9dbe192fix (npmignore): ignore temporary build files `#532`
Fix error in callback signatures `#435`
- Added: public methods with information and examples to readme `#429`
#429#431#430#428#42121323f3a3c014237350fafc61c73e93ed8de3d862819add50905f173d88f912508b626faaa68aAdded "getBuffer" method and updated certificates `#419`
Nothing published for this version
Nothing published for this version
Updated readme with custom options example `8e0a569`
Filename can be a nested path `#355`
Nothing published for this version
Added check for self and window objects + tests `c99e4ec`
Update browser.js shim to use self instead of window `#267`
Added hasKnownLength public method `#263`
Nothing published for this version
Allow custom header fields to be set as an object. `#190`
#190#182#176#164#159#158#156#145Housecleaning, preparing for the release `#144`
#144#127#143#142#12994b65653c2f172347c88ec335610f573321e426dfcc9458a7ceebe88405a69e12f282af4bddc58ad1f02bfff3bbf3eb628f73996e67ee79f48444a15711320a7e0c658e84cffHouse cleaning. Added pre-commit. `#140`
pre-commit. #140#138#132#130#136#128#125Remove duplicate plus sign `#94`
Nothing published for this version
### Merged - Updated version. `#76` - #71 Respect bytes range in a read stream. `#75`
Fixed default https port assignment, added tests. `#52`
Added license type and reference to package.json `#46`
0.1.0 - Added error handling. Streamlined edge cases behavior. `#43`
Updated tests to play nice with 0.10. `932b39b`
Custom params for form.submit() should cover most edge cases. `#22`
#22#20#17#12#11#8#7#6#5#4#2#1#14850ba1bde3502f6ffdc349a59d089060c916f6b1e941e9cc1b16d14e5847424adf8b4a8c744e53fb2ad4ab3a6a5de8f441c406ac9e2ac03909bd7cd45811401707ebb2e033e0b519203bf1b58d7413d0b55855e408b6ae3409adfdb3a5d66bab70b925782a39fa34f4b7d1a6b7860a9cfa36c1bde567bd1deae4728f166db959b6a698fa0ab614db830af6beNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →