What is MIME type "application/x-ipynb+json"?

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

application/x-ipynb+json is the MIME type for Jupyter Notebook files. It signals that the file stores its data in JSON format.

Files of this type, such as IPYNB, hold a sequence of cells that can include code, text, and outputs. The design makes it easy for both humans and machines to read and process the document.

For more details on Jupyter Notebook, visit Jupyter's official site.
For additional information on MIME types, see MDN Web Docs.

Associated file extensions

Usage Examples

HTTP Header

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


    Content-Type: application/x-ipynb+json    
  

HTML

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


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

Associated file extensions

FAQs

What software opens files with the MIME type application/x-ipynb+json?

Files with this MIME type, typically ending in .ipynb, are best opened using Jupyter Notebook, JupyterLab, or IDEs like Visual Studio Code with the Python extension. Since these files contain JSON data structure, a standard text editor can open them, but it will display raw code and metadata rather than the interactive notebook interface.

Why does my browser display raw text instead of a rendered notebook?

Most web browsers do not natively support rendering application/x-ipynb+json files. Instead, they treat the file as generic text or JSON, displaying the raw data structure. To view these files in a browser, you must use a web-based viewer like nbviewer, Google Colab, or a repository host like GitHub that implements a custom renderer.

How do I configure Apache to serve .ipynb files correctly?

To ensure Apache serves Jupyter Notebooks with the correct application/x-ipynb+json MIME type, add the following line to your .htaccess file or main configuration: AddType application/x-ipynb+json .ipynb. This helps client applications identify the file as a notebook rather than generic JSON.

How do I add this MIME type to Nginx?

In Nginx, open your mime.types file (usually located in /etc/nginx/) and add the entry inside the types block. It should look like this: application/x-ipynb+json ipynb;. Reload Nginx using sudo service nginx reload to apply the changes.

Are application/x-ipynb+json files safe to execute?

Not necessarily. Since .ipynb files contain executable code (often Python), running cells within a notebook from an untrusted source can execute malicious scripts on your machine. Always review the code in a notebook before executing it, or run it in a sandboxed environment.

What is the difference between application/json and application/x-ipynb+json?

While a Jupyter Notebook is technically a valid JSON file, using application/json is generic. The subtype application/x-ipynb+json specifically indicates that the JSON follows the Jupyter Notebook schema. This distinction allows operating systems and web applications to trigger the correct notebook viewer instead of a generic JSON editor.

How do I fix IIS 404 errors when serving .ipynb files?

Microsoft IIS blocks unknown file extensions by default for security. To fix this, open IIS Manager, navigate to MIME Types, and add a new entry with the file extension .ipynb and the MIME type application/x-ipynb+json.

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.