What is MIME type "text/sgml"?

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

text/sgml is the MIME type for plain text files that use the Standard Generalized Markup Language (SGML).
It marks up documents with custom tags that define a file's structure and meaning.

SGML was designed to allow creators to build documents with complex hierarchies. It separates content from formatting, which aids in maintaining consistency across large texts.


Files with the SGM and SGML extensions use this MIME type.
For further technical details, check out this resource on SGML.

Associated file extensions

Usage Examples

HTTP Header

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


    Content-Type: text/sgml    
  

HTML

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


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

Associated file extensions

FAQs

Do modern web browsers support text/sgml?

No, modern browsers like Chrome, Firefox, and Edge do not natively render text/sgml files as styled documents. While SGML is the parent language of HTML, browsers are specifically optimized for HTML and XML. Opening an SGML file in a browser will usually display the raw code as plain text or prompt a file download.

How do I configure Apache to serve .sgm and .sgml files correctly?

To ensure your Apache server sends the correct MIME type, add the following line to your .htaccess file or main configuration: AddType text/sgml .sgm .sgml. This tells the server to associate both the .sgm and .sgml extensions with the text/sgml content type.

How do I add text/sgml support to Nginx?

In your Nginx configuration (usually nginx.conf or an included mime.types file), locate the types block and add the entry: text/sgml sgm sgml;. After saving the file, reload Nginx using sudo nginx -s reload to apply the changes.

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

SGML (text/sgml) is the predecessor and superset of XML (application/xml). SGML allows for more flexible syntax (like unclosed tags) but is harder to parse, whereas XML is a stricter, simplified subset designed specifically for the web. Today, XML is preferred for data interchange, while SGML is mostly found in legacy industrial or legal documentation systems.

What software can open or edit text/sgml files?

Since text/sgml files are plain text, you can view them in any text editor like Notepad++, VS Code, or Sublime Text. However, for validating the structure against a DTD (Document Type Definition), specialized SGML editing software (such as older versions of Arbortext or FrameMaker) is required.

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

This happens if the server sends the file as application/octet-stream (generic binary) or if the browser simply doesn't know how to handle the text/sgml type visually. Because browsers lack a native SGML rendering engine, they often default to downloading the file to ensure data isn't lost or corrupted by trying to display it as text.

Are there security risks associated with text/sgml?

As a text format, text/sgml is generally safe, but it can be vulnerable to entity expansion attacks (similar to XML bombs) if processed by a parser that recursively expands definitions. Developers processing these files on a server should ensure their parsers limit entity expansion to prevent Denial of Service (DoS) attacks.

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.