Which mime type should I use for mp3

PhpMp3Mime Types

Php Problem Overview


I'm trying to decide which mime type to choose for returning mp3 data (served up by php)

according to this listing of mime types: http://www.webmaster-toolkit.com/mime-types.shtml

.mp3 	audio/mpeg3
.mp3 	audio/x-mpeg-3
.mp3 	video/mpeg
.mp3 	video/x-mpeg

What are the difference between these, and which should I use?

Php Solutions


Solution 1 - Php

Your best bet would be using the RFC defined mime-type audio/mpeg.

Solution 2 - Php

I had a problem with mime types and where making tests for few file types. It looks like each browser sends it's variation of a mime type for a specific file. I was trying to upload mp3 and zip files with open source php class, that what I have found:

  • Firefox (mp3): audio/mpeg
  • Firefox (zip): application/zip
  • Chrome (mp3): audio/mp3
  • Chrome (zip): application/octet-stream
  • Opera (mp3): audio/mp3
  • Opera (zip): application/octet-stream
  • IE (mp3): audio/mpeg
  • IE (zip): application/x-zip-compressed

So if you need several file types to upload, you better make some tests so that every browser could upload a file and pass mime type check.

Solution 3 - Php

Use .mp3 audio/mpeg, that's the one I always used. I guess others are just aliases.

Solution 4 - Php

You should always use audio/mpeg, because firefox cannot play audio/mpeg3 files

Solution 5 - Php

The standard way is to use audio/mpeg which is something like this in your PHP header function ...

header('Content-Type: audio/mpeg');

Solution 6 - Php

mp3 files sometimes throw strange mime types as per this answer: https://stackoverflow.com/a/2755288/14482130

If you are doing some user validation do not allow 'application/octet-stream' or 'application/x-zip-compressed' as suggested above since they can contain be .exe or other potentially dangerous files.

In order to validate when mime type gives a false negative you can use fleep as per this answer https://stackoverflow.com/a/52570299/14482130 to finish the validation.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKristianView Question on Stackoverflow
Solution 1 - PhpsaluceView Answer on Stackoverflow
Solution 2 - PhpEugene PetakhinView Answer on Stackoverflow
Solution 3 - PhpzessxView Answer on Stackoverflow
Solution 4 - PhpJohnny ZhaoView Answer on Stackoverflow
Solution 5 - PhpMadan SapkotaView Answer on Stackoverflow
Solution 6 - PhpgarchompstompView Answer on Stackoverflow