What is MIME type "text/x-gfm"?
A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.
text/x-gfm is a MIME type for GitHub Flavored Markdown. It signals that a file contains markdown text enriched with GitHub’s extra syntax.
This MIME type improves the basic markdown language by supporting features like:
- Enhanced Formatting: It adds support for tables, task lists, and strikethrough.
- Consistent Rendering: Files display uniformly across tools that recognize GitHub’s markdown.
- Improved Linking: Automatic link recognition helps with URL formatting and reference linking.
It is commonly applied to files ending with extensions such as MD, RMD, MARKDOWN, MDX, SCD, MKD, SVX, QMD, WORKBOOK, LIVEMD, MDOWN, MDWN, MKDN, MKDOWN, and RONN.
This type is key for projects hosted on GitHub and similar platforms. Editors that support markdown use it to trigger live previews and proper rendering.
Learn more about GitHub Flavored Markdown at GitHub GFM Documentation.
Associated file extensions
.md, .rmd, .markdown, .mdx, .scd, .mkd, .svx, .qmd, .workbook, .livemd, .mdown, .mdwn, .mkdn, .mkdown, .ronn
Usage Examples
HTTP Header
When serving content with this MIME type, set the Content-Type header:
Content-Type: text/x-gfm
HTML
In HTML, you can specify the MIME type in various elements:
<a href="file.dat" type="text/x-gfm">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-gfm');
res.end('Content here');
}).listen(3000);
Associated file extensions
.md, .rmd, .markdown, .mdx, .scd, .mkd, .svx, .qmd, .workbook, .livemd, .mdown, .mdwn, .mkdn, .mkdown, .ronn
FAQs
What is the difference between text/x-gfm and text/markdown?
While text/markdown is the official IANA standard for generic Markdown, text/x-gfm specifically denotes GitHub Flavored Markdown. GFM includes extensions not found in the original specification, such as tables, task lists, and strikethrough, which require a specialized parser for correct rendering.
Do web browsers automatically render text/x-gfm files?
No, most modern browsers display text/x-gfm files as plain text source code by default. To view the rendered HTML formatting (bold, lists, tables) directly in Chrome or Firefox, you typically need to install a Markdown viewer extension or use a server-side tool to convert the file to text/html before serving.
How do I configure Apache to serve .md files as GitHub Flavored Markdown?
You can associate the .md extension with this MIME type by adding a directive to your .htaccess file or main configuration. Use the line: AddType text/x-gfm .md. This ensures clients know to treat the content as GFM rather than plain text or generic markdown.
How do I set up Nginx to use text/x-gfm?
In your Nginx configuration file (usually nginx.conf or inside sites-available), locate the types block. Add the line text/x-gfm md markdown; to map the MIME type to the desired file extensions.
Why is the text/x-gfm MIME type used for .mdx or .rmd files?
Extensions like .mdx (Markdown with JSX) and .rmd (R Markdown) often rely on the extended syntax features provided by GFM. Using text/x-gfm signals to editors and processors that the file contains these advanced formatting elements, ensuring features like code blocks and tables render consistently.
What does the "x-" prefix mean in text/x-gfm?
The x- prefix indicates that this is a non-standard or experimental MIME type, not officially registered in the IANA main tree. It was created by the developer community to distinguish GitHub's specific dialect from standard Markdown, though text/markdown is now the preferred standard for general use.
Can using text/x-gfm cause security issues?
Serving the file itself is safe as it is plain text. However, if your application automatically converts text/x-gfm content to HTML for display, you must sanitize the output. GFM allows embedded HTML, which can lead to Cross-Site Scripting (XSS) attacks if malicious scripts are not stripped out during conversion.
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.