Open source · One core, six frameworks

Angular File Uploader
One core, every framework

A free, open-source drag-and-drop file uploader with a headless core and native UI for Angular. Cloud drives, camera, screen capture, and secure server-mode uploads to any S3-compatible storage.

npm install @useupup/angular

 

Works with every framework — pick yours

One uploader, the same API in every framework

app.component.ts
import { Component } from '@angular/core'import { UpupUploaderComponent } from '@useupup/angular'// Load styles once: add '@useupup/angular/styles' to angular.json → "styles" @Component({ selector: 'app-root', standalone: true, imports: [UpupUploaderComponent], template: `<upup-uploader [config]="{ provider: 'aws', uploadEndpoint: '/api/upload-token' }" />`,})export class AppComponent {}

Uploads in this demo are real: files go to a demo storage bucket, so don't upload anything private.

Angular file uploader in 3 steps

Install @useupup/angular, render the component, and turn on the sources you need. In client mode files go straight from the browser to your S3-compatible bucket; in server mode they go through @useupup/server.

  1. Step 1: Install the package

    One package, @useupup/angular, brings the UI and the upload engine. pnpm, Yarn and Bun work the same way.

    Terminal
    npm i @useupup/angular
  2. Step 2: Render the uploader

    Add it with its stylesheet and point it at your upload endpoint: a route that returns a short-lived presigned URL for each file. The code examples include a ready-made handler.

    app.component.ts
    import { Component } from '@angular/core'
    import { UpupUploaderComponent } from '@useupup/angular'
    // Load styles once: add '@useupup/angular/styles' to angular.json → "styles"
    
    @Component({
      selector: 'app-root',
      standalone: true,
      imports: [UpupUploaderComponent],
      template: `<upup-uploader
        [config]="{ provider: 'aws', uploadEndpoint: '/api/upload-token' }"
      />`,
    })
    export class AppComponent {}
  3. Step 3: Add cloud drives and sources

    List the sources you want and add the client IDs from each provider's developer console. Google Drive, OneDrive, Dropbox and Box are browsed inside the uploader panel.

    app.component.ts
    @Component({
      selector: 'app-root',
      standalone: true,
      imports: [UpupUploaderComponent],
      template: `<upup-uploader [config]="config" />`,
    })
    export class AppComponent {
      config = {
        provider: 'aws',
        uploadEndpoint: '/api/upload-token',
        sources: ['local', 'camera', 'googleDrive', 'oneDrive'],
        cloudDrives: {
          googleDrive: { clientId: '...', apiKey: '...', appId: '...' },
          oneDrive: { clientId: '...' },
        },
      }
    }

Standalone or NgModule

UpupUploaderComponent is standalone (Angular 19–22). Add it to a standalone component's imports or an NgModule's imports, and pass everything through its single config input.

Styles

Load the stylesheet once: add '@useupup/angular/styles' to the styles array in angular.json, or @import it from your global styles.css.

Angular file upload libraries compared

How upup lines up against the Angular uploaders teams usually weigh. Each row states what the library is, whether it imports from cloud drives, and its license.

  • Drag-and-drop dropzone, file picker, previews and progress
  • Google Drive, OneDrive, Dropbox and Box imports
  • Camera, screen capture and link imports
  • Resumable uploads with tus or S3 multipart
  • Presigned uploads to S3, R2, MinIO and other S3-compatible storage
  • Server mode with an HMAC-signed trust model (@useupup/server)
  • ICU i18n, theming and dark mode
  • MIT license, no license key
upup compared with other Angular file upload libraries
LibraryWhat it isCloud-drive importsLicense
upup (@useupup/angular)Native Angular UI on a headless core, in client or server modeGoogle Drive, OneDrive, Dropbox, BoxMIT
PrimeNG FileUploadUpload component in the PrimeNG UI suiteNoPrimeUI license: paid, with a free community tier
Kendo UI UploadUpload component in Kendo UI for AngularNoCommercial
Syncfusion UploaderUploader in the Syncfusion Essential JS 2 suiteNoCommercial, with a free community license
ngx-file-dropFile and folder drop zone; you handle the uploadNoMIT

For resumable uploads, direct-to-S3 and image editing side by side, see Angular file upload libraries compared.

Keep reading

Powerful Features

Everything you need for modern file uploads

One uploader with a headless core and native UI for React, Vue, Svelte, Angular, Vanilla JS, and Preact — with a drag-and-drop dropzone, file picker, cloud-drive sources, camera and screen capture, and optional server-mode uploads to any S3-compatible storage.

Six Frameworks, One Uploader

Native UI for React, Vue, Svelte, Angular, Vanilla JS, and Preact — one uploader that renders the same DOM structure, classes, and accessibility tree in every framework, enforced by a cross-framework parity suite.

See it live

Cloud Drives, Camera & Screen Capture

Import files straight from Google Drive, OneDrive, Dropbox, and Box — plus device camera, screen capture, audio recording, and link (URL) imports.

See it live

Secure Server Mode

Optional server mode signs every upload on your own backend with an HMAC-signed trust model and runs cloud-drive OAuth there too, while file bytes still go straight to your bucket — with ready-made adapters for Express, Fastify, Hono, and Next.js.

Built-In Image Editor (React & Preact)

Crop, rotate, annotate, and filter images before upload with the integrated Filerobot editor — available in React and Preact, loaded lazily so it never weighs down your bundle.

See it live

Crash-Safe & Resumable

Reload the page mid-upload and pick up where you left off — crash recovery restores the queue, and resumable chunked uploads (tus) handle large files over unreliable networks.

Fast by Default: Workers + HEIC

Image compression runs off the main thread in a web worker, so the page stays responsive — and opt-in HEIC to JPEG conversion means .heic photos from iPhones just work.

Headless Core

Framework-agnostic engine — bring your own UI.

Any S3-Compatible Storage

AWS, R2, MinIO, Spaces, B2, Wasabi, and more.

Previews, Progress & Retry

Live previews, progress bar, and automatic retry.

Themeable & Localized

Theme tokens, dark mode, and built-in locales.

Accessible & TypeScript-First

Accessibility checks in our CI suite, fully typed APIs.

Let your users connect to their favorite storage cloud providers

Users can directly upload from these providers in upup

Supported today

Google Drive
OneDrive
Dropbox
Box

On the roadmap — click to request one

And for developers, connect upup to your favorite cloud bucket

You can connect to upup using any S3 provider. We also support Azure Blob Storage in client mode.

Supported today

AWS S3
Backblaze B2
DigitalOcean
Cloudflare R2
Wasabi Hot Cloud Storage
Linode Object Storage
IDrive e2
Hetzner Object Storage
Scaleway Object Storage
Oracle Cloud Object Storage
Alibaba Cloud OSS
MinIO
Google Cloud Storage
Supabase

On the roadmap — click to request one

Support for all file types

Upload images, videos, documents, and large files — handle any file type and size limit your users need

Images
JPG, PNG, GIF, WebP
Documents
PDF, DOC, DOCX, TXT
Videos
MP4, AVI, MOV, WebM
Audio
MP3, WAV, OGG, FLAC
Archives
ZIP, RAR, 7Z, TAR
Code
JS, TS, JSON, XML
Images
JPG, PNG, GIF, WebP
Documents
PDF, DOC, DOCX, TXT
Videos
MP4, AVI, MOV, WebM
Audio
MP3, WAV, OGG, FLAC
Archives
ZIP, RAR, 7Z, TAR
Code
JS, TS, JSON, XML

Angular file upload questions

Install @useupup/angular, import the standalone UpupUploaderComponent, and render <upup-uploader [config]="{ provider: 'aws', uploadEndpoint: '/api/upload-token' }" />. Your uploadEndpoint route returns a short-lived presigned URL for each file. The browser then uploads straight to the bucket, so file bytes never pass through your app server. The same setup works for Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2, Wasabi, and other S3-compatible storage.

We're listening

Help us improve

Your feedback drives our development. Share your thoughts, report issues, or suggest new features.

Contact Support

Open a support request — problems, feature ideas, or questions

Open Support

Email Us

Send feedback directly to our team

Send Email

GitHub Issues

Report bugs or request new features

Discord Community

Join discussions and get support

Join Discord

Open Source & Community Driven

Upup is open source and welcomes contributions. Whether you're fixing bugs, adding features, or improving documentation, every contribution makes a difference.