Portrait Dr. Axel Rauschmayer
Dr. Axel Rauschmayer
Homepage | Twitter
Cover of book “Exploring ES6”
Book, exercises, quizzes
(free to read online)
Logo of newsletter “ES.next news”
Newsletter (free)
Cover of book “JavaScript for impatient programmers”
Book (free online)

What is the correct media type for JavaScript source code?

[2011-08-15] dev, javascript, clientjs
(Ad, please don’t block)

Question: What media type should you use for JavaScript source code? Answer [via Brendan Eich] and explanations after the break.

The correct JavaScript media type

There are many JavaScript media types in use. Examples:
    application/ecmascript
    application/javascript
    application/x-ecmascript
    application/x-javascript
    text/ecmascript
    text/javascript
    text/javascript1.0
    text/javascript1.1
    text/javascript1.2
    text/javascript1.3
    text/javascript1.4
    text/javascript1.5
    text/jscript
    text/livescript
    text/x-ecmascript
    text/x-javascript
Which one of those is correct? RFC 4329 has the answer:
Use of the “text” top-level type for this kind of content is known to be problematic. This document thus defines text/javascript and text/ecmascript but marks them as “obsolete”. Use of experimental and unregistered media types, as listed in part above, is discouraged. The media types,
  • application/javascript
  • application/ecmascript
which are also defined in this document, are intended for common use and should be used instead.
However: While text/javascript is considered obsolete, it might still be necessary to use it if you want your code to run on Internet Explorer 8. Quoting machineghost on Stack Overflow [via Gezim Hoxha]:
Moral of the story: if you want IE8 to work DO NOT use "application/javascript" for your JS files' MIME type [a.k.a. media type].

Uses of the media type

The (internet) media type of JavaScript source code is mainly needed in two cases:
  • When serving code via a web server.
  • As the value of an optional attribute of the script tag:
        <script type="application/javascript">
            ...
        </script>