What is MIME type "text/x-python"?

A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.

The MIME type text/x-python marks files that contain Python code. It tells software that the file is plain text meant to be interpreted as a Python script.

Files using this MIME type are associated with many file extensions. Common examples include PY and PYW. Other extensions include RPY, SAGE, SPEC, CGI, TAC, SAGEWS, SMK, STAR, FCGI, EB, GNI, LMI, XPY, BZL, GN, GYP, GYPI, MOJO, NUMPY, NUMPYW, NUMSC, PY3, PYDE, PYI, PYP, PYT, SNAKEFILE, WSGI, and XSH.

This MIME type serves as a guide for programs. It ensures that Python code is recognized and processed correctly. For more details on media types, visit the IANA Media Types page.

Associated file extensions

Usage Examples

HTTP Header

When serving content with this MIME type, set the Content-Type header:


    Content-Type: text/x-python    
  

HTML

In HTML, you can specify the MIME type in various elements:


    <a href="file.dat" type="text/x-python">Download file</a>    
  

Server-side (Node.js)

Setting the Content-Type header in Node.js:


    const http = require('http');    
    
    http.createServer((req, res) => {    
      res.setHeader('Content-Type', 'text/x-python');    
      res.end('Content here');    
    }).listen(3000);    
  

Associated file extensions

FAQs

Is text/x-python an official IANA standard?

No, the x- prefix indicates that this is a non-standard or experimental MIME type. While it is widely recognized by operating systems and web servers for Python source code, there is no official IANA registration; text/plain is often used as a generic fallback.

Why does my browser download .py files instead of running them?

Browsers generally do not execute Python natively; they are designed to run JavaScript. When a server sends a file with the text/x-python header, the browser treats it as a static text file to be downloaded or displayed, rather than an application to be executed.

Is it secure to serve files as text/x-python?

Proceed with caution. Serving files with this MIME type exposes the actual source code to the user. If your .py or .wsgi files contain sensitive data like API keys or database passwords, they should be executed on the server side (not served as static files), or the secrets should be moved to environment variables.

How do I configure Apache to serve Python source code as text?

To allow users to view or download the source code, add the mapping to your .htaccess or httpd.conf file. Use the directive AddType text/x-python .py to tell the server to deliver the file with the correct content type header.

How do I add text/x-python support to Nginx?

You can add the type definition inside your mime.types file or strictly within a server block. Add the line text/x-python py; inside the types { ... } block to ensure Nginx serves .py files with the correct header.

What is the difference between text/x-python and application/x-python-code?

text/x-python is used for human-readable source code (like .py files). In contrast, application/x-python-code is sometimes used for Python bytecode (compiled files like .pyc or .pyo), which are binary and not meant to be read by humans.

Can I use Python in a HTML <script> tag?

Not directly with standard browser technology. If you attempt <script src="script.py"></script>, the browser will likely throw a MIME type error or fail to execute it. To run Python in the browser, you must use a WebAssembly-based framework like PyScript or a transpiler like Brython.

General FAQ

What is a MIME type?

A MIME (Multipurpose Internet Mail Extensions) type is a standard that indicates the nature and format of a document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838.

MIME types are important because they help browsers and servers understand how to process a file. When a browser receives a file from a server, it uses the MIME type to determine how to display or handle the content, whether it's an image to display, a PDF to open in a viewer, or a video to play.

MIME types consist of a type and a subtype, separated by a slash (e.g., text/html, image/jpeg, application/pdf). Some MIME types also include optional parameters.

How do I find the MIME type for a file?

You can check the file extension or use a file identification tool such as file --mime-type on the command line. Many programming languages also provide libraries to detect MIME types.

Why are multiple MIME types listed for one extension?

Different applications and historical conventions may use alternative MIME identifiers for the same kind of file. Showing them all helps ensure compatibility across systems.