What is MIME type "text/x-server-parsed-html"?

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

text/x-server-parsed-html is a MIME type used for web files that need special processing on the server.
It signals that the document contains Server Side Includes (SSI)โ€”small commands embedded in the HTML that the server reads.
Before sending the page to your browser, the server parses these directives to insert or modify content dynamically.
Files using this MIME type often have extensions such as STM, SHTML, SHT, and SHTM.
This setup is common in web servers that support SSI, allowing for more modular and dynamic HTML content.
Additional details on SSI can be found at Server Side Includes on Wikipedia.

Associated file extensions

Usage Examples

HTTP Header

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


    Content-Type: text/x-server-parsed-html    
  

HTML

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


    <a href="file.dat" type="text/x-server-parsed-html">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-server-parsed-html');    
      res.end('Content here');    
    }).listen(3000);    
  

Associated file extensions

FAQs

What is the purpose of the text/x-server-parsed-html MIME type?

This MIME type identifies HTML files that contain Server Side Includes (SSI). It tells the web server to parse and execute specific commands embedded in the code (like inserting a header or footer) before sending the final text/html output to the user's browser.

Why is my browser downloading the .shtml file instead of displaying it?

This usually happens if the web server is misconfigured and sends the raw text/x-server-parsed-html MIME type to the client. Browsers do not understand this type; the server must be configured to process the file internally and send the result as standard HTML.

How do I enable Server Side Includes in Apache?

You typically need to enable the mod_include module and add directives to your .htaccess or config file. A common setup uses AddType text/html .shtml and AddOutputFilter INCLUDES .shtml to ensure files with extensions like shtml are parsed correctly.

Are there security risks associated with text/x-server-parsed-html?

Yes, specifically if the exec command is enabled, which allows the execution of system shell commands. It is best practice to configure your server with Options +IncludesNOEXEC to allow file inclusions while blocking the execution of potentially dangerous scripts.

Why use specific extensions like .shtml or .stm?

Using distinct extensions like stm or shtml allows the server to distinguish between static files and those requiring processing. Parsing every single .html file for SSI commands would unnecessarily consume server resources and slow down the website.

Does Nginx support text/x-server-parsed-html?

Nginx supports SSI, but it does not rely on this specific MIME type for configuration. You must enable the ssi on; directive within a location block in your nginx.conf to process files with extensions like shtm.

Is text/x-server-parsed-html still used in modern web development?

It is considered a legacy technology. While still supported for simple tasks, most modern sites use server-side languages like PHP or backend frameworks (Node.js, Python) which offer far more powerful templating capabilities than basic Server Side Includes.

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.