How to upload to uppy-server?

so, I set up uppy on the frontend and integrated uppy-server into an existing express app. however I can’t seem to figure out what URL to use to upload to uppy-server. I’m sure I’m missing obvious here.

server config:

const options = {
	debug: true,
	// ...
	server: {
		host: `localhost:3000`,
		protocol: 'http',
		// path: '/upload',
	filePath: './uploads/'

I’ve tried the simplest possible setup with just a HTML form:

<form action="http://localhost:3000" method="post">
	<input type="file" name="files[]" multiple="">
	<button type="submit">Upload</button>

but that doesn’t work. – I’m getting a 404 error.
similarly I tried

const uppy = Uppy({
	debug: true,
uppy.use(XHRUpload, {
	endpoint: 'http://localhost:3000/',

but to no avail.

It seems you are trying to upload your files directly to uppy-server. This is not what uppy-server is built for.
The purpose of uppy-server is to help you import remote files from known providers, e.g Dropbox, Instagram, GoogleDrive, and then upload them to your target server. Uppy-server itself does not serve as a target upload server.

does this make sense to you?

I had the same misunderstanding. Would that mean if wanted to implement Uppy client for standard file upload (from client device) I would need to also implement a Tus server?


you need to be running a tus server somewhere yes, but you don’t have to implement it yourself. There are existing implementations you can run standalone. See

Gotcha - Thanks I actually did find that and play with the Docker image now. Thanks!

Just curious do you know if any load / performance testing has been done between the Go and Node versions of the Tus server?