Browser Support

Currently, Fine Uploader supports the following browsers:

  • Chrome
  • Firefox
  • Microsoft Edge 13.10586+
  • Opera 15+
  • Android 2.3.x+
  • iOS 6+
  • Safari 5+ (OS X)
  • Chrome mobile (iOS & Android)
  • Internet Explorer 8+

Feature Support Matrix

Note: Any features not listed here are supported in all browsers.

Browser XHR2 Multiple File Selection File Drop Folder Drop Folder Selection Chunking / Resume Non-MPE Requests Upload via Paste CORS Size Validation Progress reporting Image Previews Image Scaling Image Validation Pause Uploads S3 Uploads Azure Uploads
Chrome iOS 6+ * - - - - x
Chrome Android 4+ x - - - -
Opera 15+
Firefox x x x
Edge 13.10586+ x x x
IE 11 x x x
IE 10 x x x
IE 9 x x x x x x x x x x x x x x x
IE 8 x x x x x x x x x x x x x x x
Android 4+ stock x x - - x x x x x
Android 2.3.x stock x x - - - x x x y x x x x x x x
iOS 6+ * - - - x
Safari 6+ x x x
Safari 5.1 x x x x x x x x

* - Some iOS browsers are unable to upload multiple files when video files are allowed to be uploaded due to a long-standing iOS bug. See case #990 on our bug tracker for more details.

Upload size Limitations

Upload size limitations are present in all browsers, but are most likely to affect the users of older browsers which do not support the File API. Fine Uploader uses chunking to work around the maximum upload size limit in browsers that do support the File API. When you are designing your upload form for users of these older browsers, or if you are not using chunking, make sure you keep the imposed file size limits in mind:

Browser Upload Limit


Feature Detection

You can programmatically detect support for all of Fine Uploader's features at runtime by checking the bundled qq.supportedFeatures object.

Feature Flags

Fine Uploader provides a set of flags that can be used to determine which features are supported in the current browser. These flags are set during initialization of the uploader.

Reading the feature flags in the feature detection module is easy. Each flag has a boolean value. Simply call qq.supportedFeatures.{featureFlagName} and examine the return value. For example, if you'd like to check if the current user agent supports dropping folders, call qq.supportedFeatures.folderDrop.

Feature Description
ajaxUploading Is uploading via XHR2 supported? Indicates File API support
blobUploading Is it possible to upload Blob objects in this browser?
canDetermineSize Can file size be determined client-side?
chunking Is chunking supported?
dialogElement Does this browser support the <dialog> element?
fileDrop Is dragging and dropping files supported?
folderDrop Is drag and dropping folders supported?
folderSelection Can folders be selected via a file dialog?
imagePreviews Is client-side image preview generation possible?
imageValidation Can we validate image properties client-side?
limitedScaledImageSize Does the browser have an upper limit on the size of a <canvas>? Directly related to the maximum allowable dimensions of a scaled image.
itemSizeValidation Is client-side file size validation supported?
pause Can chunked file uploads be paused?
progressBar Are progress bars supported?
resume Is the auto-resume feature supported?
scaling Is client-side image scaling possible?
tiffPreviews Can TIFFs be rendered natively in the current browser?
unlimitedScaledImageSize true if there is no known upper limit for <canvas> (used to scale images). Will be false for iOS and scaled images may be further downsampled by Fine Uploader to work around this limit.
uploadCors Are cross-domain uploads supported?
uploading Is uploading of any sort supported? (Note: This will return true for browsers that are not explicitly supported such as IE6)
uploadCustomHeaders Are custom headers allowed to be sent along with the upload request?
uploadNonMultipart Are non-multipart-encoded requests supported?
uploadViaPaste Is uploading via paste supported?

iOS (iPhone, iPad, iPod, etc) Browsers

Fine Uploader supports mobile Safari and mobile Chrome found on iOS 6+. One caveat to take into account is that iOS saves all image files on the camera roll is "image.jpg". Ensure that your server is saving files with some sort of unique identifier appended to the path because otherwise your iOS users will be overwriting each others' images. Fine Uploader automatically generates a Level 4 UUID per file and sends that UUID along with the request to the server in the qquuid parameter.

Internet Explorer

IE10 finally competes with existing modern browsers. For those of you with customers suffering with IE9 and older, here are some of the limitations you may want to be aware of when using Fine Uploader. The limitations that are overcome by upgrading to IE10 are listed as well.

Limitation Reason Supported/Fixed in IE10+
No progress indicator Lack of File API support Yes
Lack of File API support Only multipart form requests may be used to send files via form submission Yes
Size restriction options not enforced Lack of File API Support Yes
Cannot select multiple files in the file selection dialog The <input> element does not support the multiple attribute Yes
No logging console.log is not available unless developer tools are open (IE9 and older). Yes
Unable to cancel uploads Not really an IE problem, but since we are forced to upload files via form submission, I thought I’d include it. There may be a way to make this work, but I haven’t spent time playing around with the available options yet. In the meantime, you should probably set the disableCancelForFormUploads option to true. If I can’t find a way to properly allow cancel to work when using the form uploader, I’ll probably remove the cancel link when the form uploader is in use. Yes
Requires response of type text/plain IE does strange things with the response when the content-type is, for example, “application/json” or “text/html”. The latter is only a problem if you return HTML in your JSON response. Yes
Cannot determine response code Not really an IE problem, but since we are forced to upload files via form submission, I thought I’d include it. This is really a side-effect of using a form submission to upload files. Yes
Content-size header field value does not match the actual file size This isn’t technically an IE issue, but I’m going to call it one since we are forced to use multipart request in IE. The content-size for multipart data requests does not refer only to the file. Rather, it refers to the the total size of all sections in the request. N/A
Cannot parse JSON response if response code is not 200 If the response code is not 200, and the size of the response is less than 512, or, apparently, sometimes, less than 256 bytes, IE replaces the response with a “friendly” error message. If you insist on returning responses with a status code other than 200, you can work around this by instructing IE users to uncheck the “show friendly HTTP error messages” setting or by padding the response JSON with whitespace as described N/A
Cannot use a <button> element in the button option The button receives the click event instead of the child <input> element N/A