Node S3 Uploader

Flexible and efficient resize, rename, and upload images to Amazon S3 disk storage. Uses the official AWS Node SDK for transfer, and ImageMagick for image processing. Support for multiple image versions targets.
Alternatives To Node S3 Uploader
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Imagemagick9,292162 days ago2May 09, 2018145otherC
🧙‍♂️ ImageMagick 7
Gm6,8078,1501,370a month ago64September 21, 2022358JavaScript
GraphicsMagick for node
a year ago23mitPerl
A simple static site generator for photoessays
Magick.net2,819107754 days ago173August 21, 202231apache-2.0C#
The .NET library for ImageMagick
9 months ago1May 12, 202124gpl-3.0Shell
Like "ls", but for images. Shows thumbnails in terminal using sixel graphics.
Minimagick2,75026,5855696 months ago70November 06, 202016mitRuby
mini replacement for RMagick
3 months ago15December 18, 202118mitReason
The fastest pixel-by-pixel image visual difference tool in the world.
Govips90754 days ago46March 29, 202231mitGo
A lightning fast image processing and resizing library for Go
a month ago77June 22, 202233mitPHP
Dockerized PHP application to resize and crop images on the fly. Get optimised images with MozJPEG, WebP or PNG using ImageMagick, with an efficient caching system.
Quick Media791
4 days ago8July 13, 202221Java
media(audio/image/qrcode/markdown/html/svg/png) support (多媒体编辑服务, 酷炫二维码, 音频, 图片, svg, markdown, html渲染服务支持)
Alternatives To Node S3 Uploader
Select To Compare

Alternative Project Comparisons

AWS S3 Image Uploader

Documentation for [email protected] can be found here.

Build status Codacy grade Codacy coverage NPM downloads NPM version Node version Dependency status Join the chat

Flexible and efficient image resize, rename, and upload to Amazon S3 disk storage. Uses the official AWS Node SDK, and im-resize and im-metadata for image processing.

Overview of image upload to AWS S3


All changes are documentated on the releases page. Changes for latest release can be found here.


npm install s3-uploader --save


  • Node.JS >= v4.0.0
  • ImageMagic >= v6.8


var Upload = require('s3-uploader');

new Upload(string awsBucketName, object opts)

  • string awsBucketName - name of Amazon S3 bucket
  • object opts - global upload options
    • object cleanup

      • boolean original - remove original image after successful upload (default: false)
      • boolean versions - remove thumbnail versions after sucessful upload (default: false)
    • boolean returnExif - return exif data for original image (default false)

    • string url - custom public url (default build from region and awsBucketName)

    • object aws - see note

      • string region - region for you bucket (default us-east-1)
      • string path - path within your bucket (default "")
      • string acl - default ACL for uploaded images (default private)
      • string accessKeyId - AWS access key ID override
      • string secretAccessKey - AWS secret access key override
    • object resize

      • string path - local directory for resized images (default: same as original image)
      • string prefix - local file name prefix for resized images (default: "")
      • integer quality - default quality for resized images (default: 70)
    • object[] versions

      • string suffix - image file name suffix (default "")
      • number quality - image resize quality
      • string format - force output image file format (default format of original image)
      • number maxWidth - max width for resized image
      • number maxHeight - max height for resized image
      • string aspect - force aspect ratio for resized image (example: 4:3
      • string background - set background for transparent images (example: red)
      • boolean flatten - flatten backgrund for transparent images
      • string awsImageAcl - access control for AWS S3 upload (example: private)
      • number awsImageExpires - add Expires header to image version
      • number awsImageMaxAge - add Cache-Control: max-age header to image version
    • object original

      • string awsImageAcl - access control for AWS S3 upload (example: private)
      • number awsImageExpires - add Expires header to image version
      • number awsImageMaxAge - add Cache-Control: max-age header to image version
    • function randomPath - custom random path function

AWS note

The aws object is passed directly to aws-sdk. You can add any of these options in order to fine tune the connection – if you know what you are doing.


var client = new Upload('my_s3_bucket', {
  aws: {
    path: 'images/',
    region: 'us-east-1',
    acl: 'public-read'

  cleanup: {
    versions: true,
    original: false

  original: {
    awsImageAcl: 'private'

  versions: [{
    maxHeight: 1040,
    maxWidth: 1040,
    format: 'jpg',
    suffix: '-large',
    quality: 80,
    awsImageExpires: 31536000,
    awsImageMaxAge: 31536000
    maxWidth: 780,
    aspect: '3:2!h',
    suffix: '-medium'
    maxWidth: 320,
    aspect: '16:9!h',
    suffix: '-small'
    maxHeight: 100,
    aspect: '1:1',
    format: 'png',
    suffix: '-thumb1'
    maxHeight: 250,
    maxWidth: 250,
    aspect: '1:1',
    suffix: '-thumb2'

#upload(string src, object opts, function cb)

  • string src - path to the image you want to upload

  • object opts

    • string awsPath - override the path on AWS set through
    • string path - set absolute path for uploaded image (disables random path)
  • function cb - callback function (Error err, object[] versions, object meta)

    • Error err - null if everything went fine
    • object[] versions - original and resized images with path/location
    • object meta - metadata for original image


client.upload('/some/image.jpg', {}, function(err, versions, meta) {
  if (err) { throw err; }

  versions.forEach(function(image) {
    console.log(image.width, image.height, image.url);
    // 1024 760


+-- B
    `-- C
    `-- D
    `-- E

Where A is the original image uploaded by the user. An mpc image is created, B,
which is used to crate the thumbnails C, D, and E.


Individuals making significant and valuable contributions are made Collaborators and given commit-access to the project. These individuals are identified by the existing Collaborators and their addition as Collaborators is discussed as a pull request to this project's

Note: If you make a significant contribution and are not considered for commit-access log an issue or contact one of the Collaborators directly.

MIT License

Popular Image Projects
Popular Imagemagick Projects
Popular Media Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Amazon Web Services
Image Processing
Aws S3