Why Are Web Uploads So Painful?

As video on the web becomes increasingly mainstream, I've been dabbling a bit with video sharing myself. But I've found that publishing video content on the web is extraordinarily painful, bordering on cruel and unusual punishment. The web upload process is a serious barrier to online video sharing, and here's why:

This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2007/09/why-are-web-uploads-so-painful.html

You’re right about the general treatment of uploads, it’s a real pain.

As for video in particular, Imageshack (I think) has a toolbar to compress prior to the upload and it saves a ton of time. Saves zero time for other services, but it does make a huge difference if you don’t care about which service you use.

Sorry to double-comment but it is Imageshack that does it, it’s explained here: http://news.imageshack.us/blog/?p=16

LiveVideo also has a desktop uploader. How are you going to resume a file upload if the target server does not save the bytes for an incomplete upload?

The most general uploading tool that I know of is Firefox Universal Uploader:


I have no idea how well it works, but something like this should be easy to extend. In fact, I predict that it’s only a matter of time before this becomes part of the Firefox core.


SmugMug nails the upload process. I drag my photos onto the page, at which point I see thumbnails and checkboxes for each. When I press the upload button, a modal dialog with three upload streams appears. I see a progress bar and thumbnail for each stream. There is also an overall progress bar and a cancel button. I can’t navigate away from the page until the upload finishes or I have canceled. Furthermore, when I cancel, the photos that did upload are already there.

Granted, this is an ActiveX control, but it is that best uploader I’ve ever seen.

Google and YouTube are terrible because they are monopolies, and don’t have any incentive right now to innovate. The best uploaders, like the best software, will continue to come from those fighting to stay alive.

mozilla DOES provide the upload feedback. the little progress indicator in the status bar shows how much of the file is transferred at the moment.
MSIE has a similar progress bar but i’m not sure if it shows the upload status correctly, but it guess it should.

so what’s the fuss all about?

In terms of http servers supporting restartable uploads one option is the upload support added to BITS - Background Intelligent Transfer Service.


I don’t believe you’re right in saying that web browsers have “failed us” in terms of uploads. Uploading was never an intent of web browsing and only a consequence of user-generated content and (forgive me) Web 2.0.

The real problem is our infrastructure. Even our download speeds are horrible compared to other countries like Japan. If our download speeds are like this, we can’t do anything about our uploading.

Not really what you are looking for, but SWFUpload allows developers to write good upload scenarios. Browser support would be better of course…

Uploading was never an intent of web browsing

Nor was Gmail, or dozens of other things.

mozilla DOES provide the upload feedback. the little progress indicator in the status bar shows how much of the file is transferred at the moment.

This doesn’t appear to work. I just initiated an upload of a 41 mb video to Google Video with Firefox. The progress indicator in the status bar immediately shoots to about 65%-- and sits there, as far as I can tell.

This may be a little off topic since its specific to ASP.NET

For asp.net apps there is an awesome free and open source upload control/httpmodule
It handles large uploads gracefully with a nice progress bar. It also overcomes the default upload limitations where the entire file is loaded into server memory before you can save it somewhere on the server.

I use it any project where I need to upload files.



I see what you are getting at, but I see a caveat also:

When you download a file, and your internet dies, you can resume the transfer because you have part of the file stored on your drive. With uploaded content, its the youtube or whatever site that stores the download, and for them to have some kind of resume feature, they would have to store every full video, and every cancelled video (for some arbitrary amount of time).

However, I think a solution would be to just open up a separate browser window, which mimics the firefox downloader functionality, but is entirely developed by the video site. This way, your browsing is not at all affected by the transfer, and you can continue on your merry way, even closing that page down

Obviously not for video, but the new Flickr (http://www.flickr.com/photos/upload/) upload tool handles multiple files very easily.

I’ve uploaded large batches (75-100 pics) that total 150-200MB with ease.

It has a very simple step-by-step process and provides excellent feedback along the way.

Worth checking out for sure.

If I could grep the whole internet for “stop whining” and get a nickel for each hit, I’d, well, I wouldn’t be able to carry all the nickels home.

It’s true, the state of file uploads sucks. There’s a reason though. HTTP was made for downloads. You send it a request, and it sends you a document. Request-document. So simple. That’s what a webserver does, take requests for and serve documents. And that’s what a browser does: make requests for and then receive and display documents.

So, when you do an upload, you’re kind of faking it. You’re just putting a BIG package of data in your request for a document. Files are literally encoded in POST data. It’s not like the webserver asked for a document from YOU.

However, this kind of fakery is necessary. The web long ago became a two-way medium, and it’s pretty sad that browsers don’t handle post uploads with the same elegance (or at least similar) to downloads.

As for people who say “stop whining, there’s a firefox extension”… that’s great for me, but this is a DEVELOPMENT blog, and Jeff is talking about how developers can make it better FOR THEIR USERS.

Let’s face it, the upload user experience for large files is horrible. I personally think what youtube does is great, and I think it’s silly that Gmail file uploads don’t have the same flash-based interface (since they have flash already for the in-browser mp3 player). They take 20MB uploads to email now, this would be pretty useful.

On a recent project where I needed to allow large uploads, I did pretty well with this hack:
(It’s javascript + a tiny bit of flash)

Perhaps Opera could blaze the trail as it has on so many other important browser features?

Well… Opera actually displays the amount of uploaded bytes and the current transfer rate, so uploading is at least clearly displayed - even if it’s still slow and painful.

I HATE your new fonts for this blog.

Just snail mail the video! NetFlicks does it. Probably get there sooner!

well, yes, it sucks, except of when you live in sweden where I had about 500kilobytes per second upstream with a normal home user connection… but back in switzerland the upstream really is sadly crippled :frowning:

John, I’ve considered sneakernet before…

The Economics of Bandwidth