What is MIME type "application/xml"?

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

application/xml is a MIME type that tells systems a file contains structured data written in Extensible Markup Language.
It signals that the document is not a media file but rather data meant for processing and exchange.

Files marked with this MIME type follow XML rules with nested tags and defined hierarchies. This makes them easy to validate and transform.
Developers use it to share configuration settings, data feeds, and even entire application projects.

Common examples include documents such as XML files, Qt translations like TS, schemas such as XSD, and specialized formats like FRM, XFDL, OPML, XFD, or XSL files.
It also covers niche uses in data (e.g. GDT and TXC), project configuration (AS3PROJ), finance (GNUCASH), railway systems (RAILML and RAILMLX), 3D materials (RMTL), SQL execution plans (SQLPLAN), geographic data (TOPOJSON), engineering records (WBDP), and business reporting (XBRL).

This format is widely supported. Tools and browsers use it to decide how to process a file. Learn more about XML at W3C XML Resources.

Associated file extensions

Usage Examples

HTTP Header

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


    Content-Type: application/xml    
  

HTML

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


    <a href="file.dat" type="application/xml">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', 'application/xml');    
      res.end('Content here');    
    }).listen(3000);    
  

Associated file extensions

FAQs

What is the difference between application/xml and text/xml?

application/xml is the currently recommended standard (RFC 7303) for XML content. While text/xml is still supported, it can cause character encoding issues because it defaults to US-ASCII if no charset is specified in the HTTP headers. To ensure correct parsing of international characters, application/xml is preferred.

How do I configure my web server to serve XML files correctly?

For Apache, add AddType application/xml .xml to your .htaccess or config file. For Nginx, ensure your mime.types file includes the line application/xml xml;. This ensures browsers and API clients interpret the data structure correctly rather than treating it as plain text.

Are there security risks associated with application/xml?

Yes, XML parsers can be vulnerable to XXE (XML External Entity) attacks if not configured correctly. This occurs when an XML parser processes input containing references to external files, potentially allowing attackers to view system files. Developers should disable external entity processing in their XML libraries when handling untrusted data.

Why does my browser download the XML file instead of displaying it?

This usually happens if the server sends a Content-Disposition: attachment header or if the browser does not recognize the MIME type. Ensure the server sends Content-Type: application/xml without the attachment directive so the browser can render its built-in XML tree viewer.

Should I specify a charset parameter with application/xml?

Yes, it is best practice to send the header as Content-Type: application/xml; charset=utf-8. While XML parsers can often detect encoding from the Byte Order Mark (BOM) or the internal <?xml encoding="..."?> declaration, providing the charset in the HTTP header removes ambiguity.

Which file extensions commonly use this MIME type?

The most common extension is .xml. However, many specialized formats use this MIME type or specific subtypes, including schema definitions like .xsd, transformation stylesheets like .xsl, and configuration files like .opml or .ts.

When should I use application/xml vs application/json?

Use application/xml if you need strict schema validation (via XSD), document-centric data, or mixed content (text with markup). Use application/json for lighter-weight data interchange in web APIs, as it is less verbose and natively parsed by JavaScript.

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.