What is MIME type "text/x-c++src"?

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

text/x-c++src is a MIME type that signals a file holds C++‐style source code. It tells applications that the content is plain text intended for programming, so editors and tools can enable syntax highlighting and apply proper formatting rules.

The "x-" prefix shows that this type is experimental. It isn’t registered with official standards but is widely used by development tools and web services.

It is mainly used to ensure that code files are treated as text and processed correctly by compilers, editors, or online repositories.

Files carrying this MIME type include those with extensions such as CPP, CC, and H. Other file types—like INO, ASH, or even formats for specialized scripting—are sometimes tagged with it because their syntax is similar to traditional C++ code.

This consistent labeling helps maintain a uniform development environment across different tools and platforms. For further details on how media types work, visit Media type (Wikipedia).

Associated file extensions

Usage Examples

HTTP Header

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


    Content-Type: text/x-c++src    
  

HTML

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


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

Associated file extensions

FAQs

How do I configure Apache to serve C++ files as text/x-c++src?

You can ensure your server sends the correct header by adding the AddType directive to your .htaccess file or main configuration. Use the line: AddType text/x-c++src .cpp .cc .cxx .h .hpp. This ensures browsers and tools recognize the content as C++ source code rather than generic text.

Why does text/x-c++src have an "x-" prefix?

The x- prefix indicates that this is a non-standard or experimental MIME type not officially registered with the IANA. Despite this, it is the widely accepted standard used by web servers and IDEs to identify C++ files like .cpp and .hpp.

Will web browsers execute code served as text/x-c++src?

No, web browsers do not compile or execute C++ code. When a browser encounters text/x-c++src, it treats the file as plain text and will either display the source code directly in the window or prompt the user to download the file, depending on the Content-Disposition header.

How do I add text/x-c++src support to Nginx?

To associate C++ extensions in Nginx, edit your mime.types file or add a types block within your server configuration. For example: types { text/x-c++src cpp cc h hpp; }. This ensures Nginx serves these files with the correct MIME type instead of the default application/octet-stream.

Can I use text/plain instead of text/x-c++src?

Yes, using text/plain is a safe fallback that guarantees the file is viewable in any browser. However, using text/x-c++src is preferred for development environments because it signals to text editors and browser extensions that they should apply C++ syntax highlighting.

Why are Arduino (.ino) files linked to this MIME type?

Arduino sketches use a syntax that is essentially C++. By tagging .ino files with text/x-c++src, developers ensure that code editors apply the correct C++ coloring and formatting rules, making the code easier to read and debug.

What is the difference between text/x-c++src and text/x-c++hdr?

Both types are very similar, but text/x-c++hdr is specifically intended for header files (like .h or .hpp). In practice, many server configurations simplify this by mapping all C++ related extensions (headers and source) to text/x-c++src.

Are there security risks in serving files as text/x-c++src?

Serving source code allows anyone with the URL to view your application's logic. While this is standard for open-source repositories, you should never serve server-side C++ files (like those used for CGI) as text/x-c++src if they contain sensitive logic or API keys; those should be compiled and executed on the server instead.

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.