MHTML
Web page archive (file) format
From Wikipedia, the free encyclopedia
MHTML, an initialism of "MIME encapsulation of aggregate HTML documents", is a web archiving file format used to combine, in a single computer file, the HTML code and its companion resources (such as images) that are represented by external hyperlinks in the web page's HTML code.[1] The content of an MHTML file is encoded using the same techniques that were first developed for HTML email messages, using the MIME content type multipart/related.[2] MHTML files use an .mhtml or .mht filename extension.
- multipart/related
- application/x-mimearchive
- message/rfc822
| MHTML | |
|---|---|
| Filename extension |
.mht, .mhtml |
| Internet media type |
|
| Type of format | Markup language |
| Extended from | HTML |
| Standard | RFC 2557 (proposed 1999) |
The first part of the file is an e-mail header. The second part is normally HTML code. Subsequent parts are additional resources identified by their original uniform resource locators (URLs) and encoded in Base64 binary-to-text encoding. MHTML was proposed as an open standard, then circulated in a revised edition in 1999 as RFC 2557.
The .mhtml and .eml filename extensions are interchangeable: either filename extension can be changed from one to the other. An .eml message can be sent by e-mail, and it can be displayed by an email client. An email message can be saved using a .mhtml or .mht filename extension and then opened for display in a web browser or for editing other programs, including word processors and text editors.
Layout
The header of an MHTML file contains metadata such as a date and time stamp, page title, the source URL, and a unique randomized boundary string for separating resources contained within the file. The boundary string is defined at the beginning and used throughout the file.
From: <Saved by Blink>
Snapshot-Content-Location: https://en.wikipedia.org/wiki/Smartphone
Subject: Smartphone - Wikipedia
Date: Sat, 24 Sep 2022 00:34:32 -0000
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----MultipartBoundary--GsIBda0vjy2AKIAIliwl7JMwezXDRjDAsLje9khd5l----"
Then, the page resources are contained sequentially, starting with the page's rendered HTML source code. Each resource has its own metadata header which specifies its MIME type and the original location.
------MultipartBoundary--GsIBda0vjy2AKIAIliwl7JMwezXDRjDAsLje9khd5l----
Content-Type: text/html
Content-ID: <frame-D968CEC8BB7E60A1859261A8CA5DFB4D@mhtml.blink>
Content-Transfer-Encoding: binary
Content-Location: https://en.wikipedia.org/wiki/Smartphone
<!DOCTYPE html>
The MHTML file ends with a boundary string that is not followed by any data.[3]
MIME type
MIME type for MHTML is not well agreed upon. Used MIME types include:
multipart/relatedapplication/x-mimearchivemessage/rfc822
Supporting apps
Web browsers
Some browsers support the MHTML format, either directly or through third-party browser extension.
- Firefox does not support MHTML.[4] Until version 57 ("Firefox Quantum"), two browser extensions, Mozilla Archive Format or UnMHT, could read and write MHTML files. These extensions are incompatible with version 57 and later.
- GNOME Web added support for read and save web pages in MHTML since version 3.14.1 released in September 2014.[5]
- Google Chrome 86 and later can create MHTML files.
- Internet Explorer 5 was the first browser to support reading and saving web pages and external resources to a single MHTML file.
- Konqueror 3.5.7 and later terminated support for MHTML files. An extension project,
mhtconv, can be used to allow saving and viewing of MHTML files. - Microsoft Edge, after switching to the Chromium source code, supports saving web pages as MHTML.
- NetFront 3.4 (on devices such as the Sony Ericsson K850) can view and save MHTML files.
- Opera: Support for saving web pages as MHTML files was made available in the Opera 9.0 web browser.[6] From Opera 9.50 through the rest of the Presto-based Opera product line (version 12.16 as of 19 July 2013), the default format for saving pages is MHTML. The initial release of the new Webkit/Blink-based Opera (version 15) did not support MHTML, but subsequent releases (16 and later) do. MHTML can be enabled by typing "
opera://flags#save-page-as-mhtml" at the address bar. - Pale Moon requires an extension to be installed to read and write MHT files. One extension is freely available, MozArchiver, a fork of Mozilla Archive Format extension.[7]
- Safari 3.1.1 and later terminated native support for the MHTML format. Instead, the browser supports the Web Archive format. The macOS version includes a print-to-PDF feature. As with most other modern web browsers, support for MHTML files can be added to Safari via various third-party extensions.
- Vivaldi 2.3 and later can create MHTML files.[8] It supports both reading and writing MHTML files by toggling the "
vivaldi://flags/#save-page-as-mhtml" option. - Yandex Browser 22.7.4.960 (July 2022) and later can create MHTML (multipart/related) files.
Other apps
- Problem Steps Recorder for Windows can save its output to MHT format.
- The "Save to Google Drive" extension for Google Chrome can save as MHTML as one of its outputs.
- Microsoft OneNote 2010 and later can email individual pages as .mht files.
- Evernote for Windows can export notes as MHT format, as an alternative to HTML or its own native .enex format.
Exploits
In May 2015, a researcher noted that attackers could build malicious documents by creating an MHT file, appending an MSO object at the end (MSO is a file format used by the Microsoft Outlook e-mail application), and renaming the resulting file with a .doc extension.[9] The delivery method would be by spam emails.[10]
In April 2019, a security researcher published details about an XML external entity (XXE) vulnerability that could be exploited when a user opens an MHT file. Since the Windows operating system is set to automatically open all MHT files, by default, in Internet Explorer, the exploit could be triggered when a user double-clicked on a file that they received via email, instant messaging, or another vector, including a different browser.[11]
Alternatives
Self-contained HTML files
Contemporary HTML files support storing images, style-sheets and scripts in-line using the data URI scheme. Like the embedded content within MHTML, data URIs use Base64 encoding of the external resources. All modern web browsers can open self-contained HTML files.[12] However, As of February 2026[update], creating self-contained HTML pages requires browser extensions (such as SingleFile) or third-party app (such as pandoc).[13]
Mozilla Archive Format
The Mozilla Archive Format (MAFF) is a legacy Web archive file format that was supported by Firefox from 2004 to 2018 through an add-on.[14] Unlike both MHTML and data URIs, MAFF uses a ZIP container to preserve both the HTML file and its external elements. In October 2017 the add-on developer announced the format would no longer be supported in future versions of Firefox.[15]