Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_rightDocument Toolschevron_rightMHTML / MHT ViewerMHTML / MHT Viewer

MHTML / MHT Viewer

Open a web page archived as a single MHT or MHTML file and see it rendered with its own images and stylesheets.

upload_file

Click to browse or drag & drop files here

MHT, MHTML or EML

Accepted: .mht,.mhtml,.eml

Similar Tools

MHTML Extractor

MHTML Extractor

Take an MHT archive apart into HTML, images, stylesheets and assets, and download it as a folder that still opens in a browser.

Email File Viewer

Email File Viewer

Open EML and Outlook MSG files in your browser — headers, rendered body, MIME structure and attachments, with no mail client installed.

CHM Viewer

CHM Viewer

Open a legacy Microsoft Compiled HTML Help file, browse its contents tree and read its pages in your browser.

XPS / OXPS Viewer

XPS / OXPS Viewer

Open Microsoft's XPS and OXPS fixed-layout documents and read them page by page, with no Windows components needed.

Merge PDF

Merge PDF

Merge multiple PDF files into one document quickly and securely in your browser.

Compress Image

Compress Image

Reduce image file size without noticeable quality loss.

3D File Converter

3D File Converter

Convert between GLB, GLTF, OBJ, STL, PLY, FBX, DAE, 3MF and USDZ, with optional Draco or Meshopt compression.

apps

More Tools

Browse our full collection of free online tools.

What an MHT file is

When Internet Explorer, Word or Chrome's Save as MHTML wrote a page to a single file, it produced an RFC 2557 email message. One multipart/related body holds the HTML plus every image, stylesheet and script the page referenced, each part tagged with the URL it came from. It is a perfectly reasonable format that almost nothing opens any more.

How it is rendered

The parts are separated, each one is decoded from its transfer encoding (usually quoted-printable for text, base64 for images), and then the root HTML's references are rewritten. That last step is the whole job: every src, href and CSS url() still points at the original absolute address, so without rewriting them the page renders bare. Each one is matched to the part that was saved for it — by Content-Location, or by Content-ID for cid: references — and pointed at that part's bytes instead.

Nothing is fetched, nothing runs

The rebuilt page goes into an iframe with sandbox="allow-same-origin" and nothing else. There is no allow-scripts, so no script in the archive can run.

A Content-Security-Policy of default-src 'none' is injected into the page as well. This matters more than it sounds: any reference the archive did not save stays an absolute http URL after rewriting, and a browser rendering it would quietly fetch it. The policy stops that. Only blob: and data: URLs — the parts that are inside the file — are allowed to load.

Incomplete archives

Web archives are saved incompletely all the time: a background image declared in a stylesheet the saver did not follow, a lazily loaded picture, a font on another domain. Those references are counted and listed. If the page looks wrong, that list usually explains why, and it is a far better answer than a broken image icon.

Also shown

The subject, the date the page was saved, and the original URL — the root part's Content-Location, which is where the page actually came from. Plus every part with its MIME type, transfer encoding, declared charset and decoded size, and a toggle to read the root HTML source.

Privacy

The archive is opened in your browser. It is not uploaded, and neither it nor the tool contacts the network.