http-headers types - What MIME type should I use for CSV?

javascript excel (5)

You should use "text/csv" according to RFC 4180.

I've seen application/csv used and also text/csv.

What's the difference? Is there a difference? Does it matter which as long as the request matches something that's available? Are they interchangeable?

Strange behavior with MS Excel: If i export to "text based, comma-separated format (csv)" this is the mime-type I get after uploading on my webserver:

[name] => data.csv
[type] => application/

So Microsoft seems to be doing own things again, regardless of existing standards:

RFC 7111

There is an RFC which covers it and says to use text/csv.

This RFC updates RFC 4180.


Recently I discovered an explicit mimetype for Excel application/ It was registered with IANA in '96. Note the concerns raised about being at the mercy of the sender and having your machine violated.

Media Type: application/

Name Microsoft Excel (tm)

Required parameters: None

Optional parameters: name

Encoding considerations: base64 preferred

Security considerations: As with most application types this data is intended for interpretation by a program that understands the data on the recipient's system. Recipients need to understand that they are at the "mercy" of the sender, when receiving this type of data, since data will be executed on their system, and the security of their machines can be violated.

OID { org-id ms-files(4) ms-excel (3) }

Object type spreadsheet

Comments This Media Type/OID is used to identify Microsoft Excel generically (i.e., independent of version, subtype, or platform format).

I wasn't aware that vendor extensions were allowed. Check out this answer to find out more - thanks starbeamrainbowlabs for the reference.

My users are allowed to upload CSV files and text/csv and application/csv did not appear by now. These are the ones identified through finfo():


And these are the ones transmitted through the browser:


The following types did not appear, but could:


Okay found a simple way to do this in Excel 2003 through 2007. Open a blank xls workbook. Then go to Data menu, import external data. Select your csv file. Go through the wizard and then in "column data format" select any column that needs to be forced to "text". This will import that entire column as a text format preventing Excel from trying to treat any specific cells as a date.

csv http-headers mime-types